------- Comment #11 from dnovillo at gcc dot gnu dot org 2006-12-14 19:29 ------- (In reply to comment #10) > (In reply to comment #9) > > (In reply to comment #8) > > > There must be. mem-ssa is @119760. If you can reproduce with @119760, > > > then > > > let me know and I'll take a look. > > > > I can reproduce it at @119761 which is the same revision for the trunk as > > 119761 was a revision on a branch. > > > OK, I'll take a look. FX mind sending me that data about the test? I can't > reproduce it locally. > Oh, boy. Now I see it. We are making different partitioning decisions because the order of the symbols in the partitioned alias set changed. So, sometimes we get one SFT into a partition which just happens to cross a call-site, and if it's added to the partition, we miss the optimization. In this case, the SFT associated with b.s.w is added to MPT.69.
<L1>:; # MPT.69_8 = VDEF <MPT.69_7(D)> { MPT.69 } b.s.w = 3; # VUSE <SFT.54_9(D), SFT.55_10(D), SFT.56_11(D)> { SFT.54 SFT.55 SFT.56 SFT.62 } # SFT.62_13 = VDEF <SFT.62_12(D)> # MPT.69_14 = VDEF <MPT.69_8> { SFT.62 MPT.69 } x = bar1 (*c_1, *c_1); # VUSE <MPT.69_14> { MPT.69 } D.1993_6 = b.s.w; But if aliases are stored in different order in the alias set (different DECL_UID assignment), we just happen not to choose this SFT for partitioning, leaving the IL as: <L1>:; # SFT.61_8 = VDEF <SFT.61_7(D)> { SFT.61 } b.s.w = 3; # VUSE <SFT.58_9(D), SFT.59_10(D), SFT.60_11(D), SFT.61_8> { SFT.58 SFT.59 SFT.60 SFT.61 } # MPT.69_13 = VDEF <MPT.69_12(D)> { MPT.69 } x = bar1 (*c_1, *c_1); # VUSE <SFT.61_8> { SFT.61 } D.1990_6 = b.s.w; I will workaround this by increasing partitioning thresholds on this test, for now, but I will leave the PR assigned to me while I figure out better partitioning heuristics. -- dnovillo at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |dnovillo at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2006-12-14 19:29:22 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30194