Viewing file: test_empty_structs_and_unions.c (1.15 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* This tests passing and returning of empty structures and unions. */
#include "defines.h" #include "args.h"
struct IntegerRegisters iregbits = { ~0, ~0, ~0, ~0, ~0, ~0 }; struct IntegerRegisters iregs; unsigned int num_iregs;
struct empty_struct { };
struct empty_struct check_struct_passing(struct empty_struct s0 ATTRIBUTE_UNUSED, struct empty_struct s1 ATTRIBUTE_UNUSED, int i0 ATTRIBUTE_UNUSED) { struct empty_struct s; check_int_arguments; return s; }
#define check_struct_passing WRAP_CALL(check_struct_passing)
union empty_union { };
union empty_union check_union_passing(union empty_union u0 ATTRIBUTE_UNUSED, union empty_union u1 ATTRIBUTE_UNUSED, int i0 ATTRIBUTE_UNUSED) { union empty_union u; check_int_arguments; return u; }
#define check_union_passing WRAP_CALL(check_union_passing)
int main (void) { struct empty_struct s; union empty_union u;
clear_struct_registers; iregs.I0 = 32; num_iregs = 1; clear_int_hardware_registers; check_union_passing(u,u,32);
clear_struct_registers; iregs.I0 = 33; num_iregs = 1; clear_int_hardware_registers; check_struct_passing(s,s,33);
return 0; }
|