------- Comment #12 from rguenth at gcc dot gnu dot org 2007-07-07 17:04 ------- So the problem is that we detect
PHI node __i$D47460$SharedInfo_92 copy-of chain: __i$D47460$SharedInfo_92 -> __i$D47460$SharedInfo_40 -> SR.1030_31 -> SR.1030_31 [COPY] but later replace with __i$D47460$SharedInfo_40 instead of SR.1030_31. So the problem seems to be we sort of have struct Foo { int x; }; void use(int); void foo(struct Foo *p, int q) { int a = p->x; int b, c, d; if (a) c_1 = p->x; else { c_3 = a; } # c_4 = PHI <c_1, c_3> use (c); } where copyprop figures that c_1 and a are the same load and so does figure that c_4 is a copy of a and c_1 and c_3. But there is no code that figures the proper ssa_name loaded into as of a dominance relationship. (Of course the above testcase doesn't fail... but you get the idea what happens.) -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dnovillo at gcc dot gnu dot | |org Target Milestone|4.3.0 |--- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32636