diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d44ee4ffde2891ae6b055d5ea5151a192d302ce3..503215a741e53af087f304703d0db7d03ae1c84f 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 a8631c96b4f04aaeaf37dc3e2bbd4f0aac285827..ff901aa5d91f4d49e28aade625445325d2679c6b 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 80657f43c3e97a775cd507c03b5bfe3a563a71fe..d1c0dda31865a2be6db41fe5310f54105d05ff39 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 0000000000000000000000000000000000000000..3f5cc8dd720de1d64190bcbd2b681b6ec4b714a3 --- /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; +}