diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-01 19:14:59 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-01 19:14:59 +0000 |
commit | dfd7d1d68059fd5cb7853462625e5a49590b5e23 (patch) | |
tree | 572b1a4c14363826eeebc8b0f8c1957eea0936a5 /gcc/testsuite/gcc.dg | |
parent | f618bec438340758ad9d4490a0011823194433eb (diff) | |
download | gcc-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.c | 40 |
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; +} |