#define N 256 struct { int x; int y; } S[100]; int z[100]; int foo (int y) { int x; S[5].x = 4; S[5].y = 0; x = S[5].x; return (x); } On powerpc64-linux, r130275 with -O2 we get: (taken from .store_ccp dump file) foo (y) { int x; <bb 2>: S[5].x = 4; S[5].y = 0; x_1 = S[5].x; return x_1; } [A patch was submitted (http://gcc.gnu.org/ml/gcc-patches/2007-06/msg01901.html) which is no longer relevant because of -http://gcc.gnu.org/ml/gcc-patches/2007-08/msg01370.html.]
Note that only store _copyprop_ was removed for now. But yes, store ccp removal is on the plate. Note that this and similar bugs should be fixed by extending value-numbering to disambiguate memory accesses itself and not only relying on virtual operands. Confirmed.
Mine. I have a patch.
Subject: Bug 34172 Author: rguenth Date: Fri Mar 14 17:05:48 2008 New Revision: 133222 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133222 Log: 2008-03-14 Richard Guenther <rguenther@suse.de> PR tree-optimization/34172 * tree-flow.h (refs_may_alias_p): Declare. (get_single_def_stmt): Likewise. (get_single_def_stmt_from_phi): Likewise. (get_single_def_stmt_with_phi): Likewise. * tree-dfa.c (refs_may_alias_p): New function. (get_single_def_stmt): Likewise. (get_single_def_stmt_from_phi): Likewise. (get_single_def_stmt_with_phi): Likewise. * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function. (vn_reference_lookup_1): New helper function. (vn_reference_lookup): Walk the virtual use-def chain to continue searching for a match if the def does not alias the reference we are looking for. * gcc.dg/tree-ssa/ssa-fre-11.c: New testcase. * gcc.dg/tree-ssa/ssa-fre-12.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-13.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-14.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-15.c: Likewise. * gcc.dg/tree-ssa/20031106-4.c: Remove XFAIL. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c trunk/gcc/tree-dfa.c trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-sccvn.c
Fixed.