On Tue, 2012-02-28 at 11:52 -0600, William J. Schmidt wrote: > On Tue, 2012-02-28 at 11:03 -0600, William J. Schmidt wrote: > > > I think this is probably a problem with how cprop_into_successor_phis > > works. It only propagates into immediate successors of a block. In > > this case copies are propagated from bb12 into phis in bb13 and bb14 (of > > which there are none). Seems like it could propagate into phis of all > > dominator children, which would catch bb15. I haven't looked at this > > part of the code in too much detail, but I'm guessing since bb15's > > immediate dominator is bb12, this is the last chance to get the value > > propagated into the phi. > > > > When I get more time, I'll walk through the logic for this test to > > confirm, and post here with the results. > > > > If this is the problem, then I doubt anything will be fixed for this in > > the limited time left for 4.7. You'd want to open a missed-optimization > > PR for it. > > No, this isn't right. I see in the dump that the copy is being removed > from the const_and_copies_table after processing block 13 and before > processing block 14. That's presumably a bug. I'll keep looking. >
OK, I see the problem. We have a long-standing bug in dom's use of edge threading, which quietly corrupts the const_and_copy stack. I'll create a bug report and post a patch for you to try out. My testing shows that the redundant phi is properly handled now, but let's see if it solves your performance issue. Thanks, Bill > Bill