http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49645
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2011.07.06 08:21:35 AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org |gnu.org | Target Milestone|--- |4.7.0 Ever Confirmed|0 |1 --- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-07-06 08:21:35 UTC --- Weird. I can't see what should be target specific in this test (all relevant functions are inlined). Ah, on x86_64 I see that SRA did something, so I see in the .esra dump: <bb 2>: pred = f; SR.36_52 = &pred; SR.37_51 = SR.36_52; MEM[(struct noop_t *)&pred].pred = SR.37_51; SR.38_50 = &pred; SR.39_48 = SR.38_50; MEM[(struct noop_t *)&pred].pred = SR.39_48; SR.40_47 = &pred; SR.41_45 = SR.40_47; MEM[(struct noop_t *)&pred].pred = SR.41_45; SR.42_44 = &pred; SR.43_42 = SR.42_44; MEM[(struct noop_t *)&pred].pred = SR.43_42; ... D.2683_15 = D.2693_14->pred; D.2691_16 = D.2683_15->pred; D.2684_17 = D.2691_16->pred; D.2690_18 = D.2684_17->pred; D.2685_19 = D.2690_18->pred; D.2689_20 = D.2685_19->pred; D.2686_21 = D.2689_20->pred; D.2688_22 = D.2686_21->pred; D.2687_23 = *D.2688_22; D.2682_24 = D.2687_23 (); On the 4.6 branch FRE1 is after final inlining, so maybe there is enough cleanup there to make it work. Still FRE should work this out without SRA, so I'm taking this one.