summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-01 19:14:59 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-01 19:14:59 +0000
commitdfd7d1d68059fd5cb7853462625e5a49590b5e23 (patch)
tree572b1a4c14363826eeebc8b0f8c1957eea0936a5 /gcc/testsuite/gcc.dg
parentf618bec438340758ad9d4490a0011823194433eb (diff)
downloadgcc-dfd7d1d68059fd5cb7853462625e5a49590b5e23.tar.gz
Backport from mainline
2012-03-09 Uros Bizjak <ubizjak@gmail.com> PR target/52530 * config/i386/i386.c (ix86_print_operand): Handle 'E' operand modifier. (ix86_print_operand_address): Handle UNSPEC_LEA_ADDR. Do not fallback to set code to 'q'. * config/i386/i386.md (UNSPEC_LEA_ADDR): New unspec. (*movdi_internal_rex64): Use %E operand modifier for lea. (*movsi_internal): Ditto. (*lea_1): Ditto. (*lea<mode>_2): Ditto. (*lea_{3,4,5,6}_zext): Ditto. (*tls_global_dynamic_32_gnu): Ditto. (*tls_global_dynamic_64): Ditto. (*tls_dynamic_gnu2_lea_32): Ditto. (*tls_dynamic_gnu2_lea_64): Ditto. (pro_epilogue_adjust_stack_<mode>_add): Ditto. testsuite/ChangeLog: Backport from mainline 2012-03-11 Uros Bizjak <ubizjak@gmail.com> PR target/52530 * gcc.dg/torture/pr52530.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@190048 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/pr52530.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr52530.c b/gcc/testsuite/gcc.dg/pr52530.c
new file mode 100644
index 00000000000..f7cdf1a63b3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr52530.c
@@ -0,0 +1,40 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+#if __SIZEOF_INT__ > 2
+struct foo
+{
+ int *f;
+ int i;
+};
+
+int baz;
+#else
+struct foo
+{
+ long *f;
+ long i;
+};
+
+long baz;
+#endif
+
+void __attribute__ ((noinline))
+bar (struct foo x)
+{
+ *(x.f) = x.i;
+}
+
+int
+main ()
+{
+ struct foo x = { &baz, 0xdeadbeef };
+
+ bar (x);
+
+ if (baz != 0xdeadbeef)
+ abort ();
+
+ return 0;
+}