* gcc.c-torture/execute/20020227-1.c: New test.
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Feb 2002 21:16:55 +0000 (21:16 +0000)
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Feb 2002 21:16:55 +0000 (21:16 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50117 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/gcc.c-torture/execute/20020227-1.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.c-torture/execute/20020227-1.c b/gcc/testsuite/gcc.c-torture/execute/20020227-1.c
new file mode 100644 (file)
index 0000000..0f83088
--- /dev/null
@@ -0,0 +1,30 @@
+/* This testcase failed on mmix-knuth-mmixware.  Problem was with storing
+   to an unaligned mem:SC, gcc tried doing it by parts from a (concat:SC
+   (reg:SF 293) (reg:SF 294)).  */
+
+typedef __complex__ float cf;
+struct x { char c; cf f; } __attribute__ ((__packed__));
+extern void f2 (struct x*);
+extern void f1 (void);
+int
+main (void)
+{
+  f1 ();
+  exit (0);
+}
+
+void
+f1 (void)
+{
+  struct x s;
+  s.f = 1;
+  s.c = 42;
+  f2 (&s);
+}
+
+void
+f2 (struct x *y)
+{
+  if (y->f != 1 || y->c != 42)
+    abort ();
+}