]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Add the new IA MCU test
authorH.J. Lu <hjl@gcc.gnu.org>
Wed, 3 Feb 2016 20:17:24 +0000 (12:17 -0800)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 3 Feb 2016 20:17:24 +0000 (12:17 -0800)
From-SVN: r233109

gcc/testsuite/gcc.target/i386/iamcu/test_empty_structs_and_unions.c [new file with mode: 0644]

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 (file)
index 0000000..15209e0
--- /dev/null
@@ -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;
+}