aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@gcc.gnu.org>2002-02-27 21:16:55 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2002-02-27 21:16:55 +0000
commitffde66754357f637be61248e52b39beeadf65c95 (patch)
treea6742bb9615a9edabdc4c239cd14000f5a6bdf01 /gcc
parentf086058e0d83c2c9f8a795d0cd3766a59f74a1c6 (diff)
downloadgcc-ffde66754357f637be61248e52b39beeadf65c95.zip
gcc-ffde66754357f637be61248e52b39beeadf65c95.tar.gz
gcc-ffde66754357f637be61248e52b39beeadf65c95.tar.bz2
* gcc.c-torture/execute/20020227-1.c: New test.
From-SVN: r50117
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20020227-1.c30
1 files changed, 30 insertions, 0 deletions
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
index 0000000..0f83088
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20020227-1.c
@@ -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 ();
+}