From a55757eae4c6711e558143595cbbfad97550b3e0 Mon Sep 17 00:00:00 2001 From: Richard Biener <rguenther@suse.de> Date: Thu, 23 May 2013 08:37:24 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/ira.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr57341.c | 22 ++++++++++++++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr57341.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d44ee4ffde28..503215a741e5 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 a8631c96b4f0..ff901aa5d91f 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 80657f43c3e9..d1c0dda31865 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 000000000000..3f5cc8dd720d --- /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; +} -- GitLab