diff options
author | Richard Biener <rguenther@suse.de> | 2013-05-23 08:37:24 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-05-23 08:37:24 +0000 |
commit | a55757eae4c6711e558143595cbbfad97550b3e0 (patch) | |
tree | 637da4fafb87f6dde34b1cfa4bd4ab35daa6d28d /gcc | |
parent | 406bdd7d8f70615ea6fa2131f0aca6e8ad00e8b2 (diff) | |
download | gcc-a55757eae4c6711e558143595cbbfad97550b3e0.zip gcc-a55757eae4c6711e558143595cbbfad97550b3e0.tar.gz gcc-a55757eae4c6711e558143595cbbfad97550b3e0.tar.bz2 |
re PR target/57341 (wrong code on x86_64-linux at -O3 in 32-bit mode)
2013-05-23 Richard Biener <rguenther@suse.de>
PR rtl-optimization/57341
* ira.c (validate_equiv_mem_from_store): Use anti_dependence
instead of true_dependence.
* gcc.dg/torture/pr57341.c: New testcase.
From-SVN: r199237
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ira.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr57341.c | 22 |
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d44ee4f..503215a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-05-23 Richard Biener <rguenther@suse.de> + + PR rtl-optimization/57341 + * ira.c (validate_equiv_mem_from_store): Use anti_dependence + instead of true_dependence. + 2013-05-22 David Malcolm <dmalcolm@redhat.com> * bb-reorder.c (branch_threshold): make const @@ -2520,7 +2520,7 @@ validate_equiv_mem_from_store (rtx dest, const_rtx set ATTRIBUTE_UNUSED, if ((REG_P (dest) && reg_overlap_mentioned_p (dest, equiv_mem)) || (MEM_P (dest) - && true_dependence (dest, VOIDmode, equiv_mem))) + && anti_dependence (equiv_mem, dest))) equiv_mem_modified = 1; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 80657f4..d1c0dda 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-23 Richard Biener <rguenther@suse.de> + + PR rtl-optimization/57341 + * gcc.dg/torture/pr57341.c: New testcase. + 2013-05-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57352 diff --git a/gcc/testsuite/gcc.dg/torture/pr57341.c b/gcc/testsuite/gcc.dg/torture/pr57341.c new file mode 100644 index 0000000..3f5cc8d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57341.c @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-additional-options "-msse" { target sse2_runtime } } */ + +int a, d; +int *b = &a, **c; +int +main () +{ + int e; + { + int f[4]; + for (d = 0; d < 4; d++) + f[d] = 1; + e = f[1]; + } + int *g[28] = { }; + *b = e; + c = &g[0]; + if (a != 1) + __builtin_abort (); + return 0; +} |