aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-05-23 08:37:24 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-05-23 08:37:24 +0000
commita55757eae4c6711e558143595cbbfad97550b3e0 (patch)
tree637da4fafb87f6dde34b1cfa4bd4ab35daa6d28d /gcc
parent406bdd7d8f70615ea6fa2131f0aca6e8ad00e8b2 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/ira.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57341.c22
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
diff --git a/gcc/ira.c b/gcc/ira.c
index a8631c9..ff901aa 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -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;
+}