diff options
author | Michael Matz <matz@gcc.gnu.org> | 2012-06-21 12:18:23 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2012-06-21 12:18:23 +0000 |
commit | 625ed1721782f6ec522c764e0119d1ad2214f624 (patch) | |
tree | d911e332976285afd3b1d734436e05f199f03391 /gcc/testsuite | |
parent | ccd49f5a69406c97af0ad1acc417144fbc9ec5c5 (diff) | |
download | gcc-625ed1721782f6ec522c764e0119d1ad2214f624.zip gcc-625ed1721782f6ec522c764e0119d1ad2214f624.tar.gz gcc-625ed1721782f6ec522c764e0119d1ad2214f624.tar.bz2 |
re PR middle-end/53688 (191.fma3d in SPEC CPU 2000 miscompiled)
PR middle-end/53688
* builtins.c (get_memory_rtx): Always build an all-aliasing MEM_REF
with correct size.
testsuite/
* gcc.c-torture/execute/pr53688.c: New test.
From-SVN: r188852
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr53688.c | 32 |
2 files changed, 38 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60b0828..a16c702 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-21 Michael Matz <matz@suse.de> + + PR middle-end/53688 + * gcc.c-torture/execute/pr53688.c: New test. + 2012-06-20 Richard Guenther <rguenther@suse.de> PR tree-optimization/30318 @@ -24,7 +29,7 @@ 2012-06-16 Ville Voutilainen <ville.voutilainen@gmail.com> - * g++.dg/cpp0x/override4.C: New. + * g++.dg/cpp0x/override4.C: New. 2012-06-14 Jason Merrill <jason@redhat.com> diff --git a/gcc/testsuite/gcc.c-torture/execute/pr53688.c b/gcc/testsuite/gcc.c-torture/execute/pr53688.c new file mode 100644 index 0000000..c7ed4d7 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr53688.c @@ -0,0 +1,32 @@ +char headline[256]; +struct hdr { + char part1[9]; + char part2[8]; +} p; + +void __attribute__((noinline,noclone)) +init() +{ + __builtin_memcpy (p.part1, "FOOBARFOO", sizeof (p.part1)); + __builtin_memcpy (p.part2, "SPEC CPU", sizeof (p.part2)); +} + +int main() +{ + char *x; + int c; + init(); + __builtin_memcpy (&headline[0], p.part1, 9); + c = 9; + x = &headline[0]; + x = x + c; + __builtin_memset (x, ' ', 245); + __builtin_memcpy (&headline[10], p.part2, 8); + c = 18; + x = &headline[0]; + x = x + c; + __builtin_memset (x, ' ', 238); + if (headline[10] != 'S') + __builtin_abort (); + return 0; +} |