diff options
author | H.J. Lu <hjl@gcc.gnu.org> | 2016-02-03 12:17:24 -0800 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2016-02-03 12:17:24 -0800 |
commit | b081ed4efc144da0c45a6484aebfd10e0eb9fda3 (patch) | |
tree | c0b326b7a5876e708d500a6ba6c5688781396f4b | |
parent | ab4bae0c13ef8574defab12befd8af9545e5b32f (diff) | |
download | gcc-b081ed4efc144da0c45a6484aebfd10e0eb9fda3.zip gcc-b081ed4efc144da0c45a6484aebfd10e0eb9fda3.tar.gz gcc-b081ed4efc144da0c45a6484aebfd10e0eb9fda3.tar.bz2 |
Add the new IA MCU test
From-SVN: r233109
-rw-r--r-- | gcc/testsuite/gcc.target/i386/iamcu/test_empty_structs_and_unions.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/iamcu/test_empty_structs_and_unions.c b/gcc/testsuite/gcc.target/i386/iamcu/test_empty_structs_and_unions.c new file mode 100644 index 0000000..15209e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/iamcu/test_empty_structs_and_unions.c @@ -0,0 +1,61 @@ +/* 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; +} |