forked from OSchip/llvm-project
fc25854b09
Fixes PR18753 and PR18782. This is necessary for LICM to preserve LCSSA correctly and efficiently. There is still some active discussion about whether we should be using LCSSA, but we can't just immediately stop using it and we *need* LICM to preserve it while we are using it. We can restore the old SSAUpdater driven code if and when there is a serious effort to remove the reliance on LCSSA from all of the loop passes. However, this also serves as a great example of why LCSSA is very nice to have. This change significantly simplifies the process of sinking instructions for LICM, and makes it quite a bit less expensive. It wouldn't even be as complex as it is except that I had to start the process of removing the big recursive LCSSA formation hammer in order to switch even this much of the re-forming code to asserting that LCSSA was preserved. I'll fully remove that next just to tidy things up until the LCSSA debate settles one way or the other. llvm-svn: 201148 |
||
---|---|---|
.. | ||
2003-04-25-AssertFail.ll | ||
2003-05-12-PreheaderExitOfChild.ll | ||
2003-08-15-PreheadersFail.ll | ||
2003-12-10-ExitBlocksProblem.ll | ||
2004-02-05-DominatorInfoCorruption.ll | ||
2004-03-15-IncorrectDomUpdate.ll | ||
2004-04-01-IncorrectDomUpdate.ll | ||
2004-04-12-LoopSimplify-SwitchBackedges.ll | ||
2004-04-13-LoopSimplifyUpdateDomFrontier.ll | ||
2007-10-28-InvokeCrash.ll | ||
2010-07-15-IncorrectDomFrontierUpdate.ll | ||
2010-12-26-PHIInfiniteLoop.ll | ||
2011-12-14-LandingpadHeader.ll | ||
2012-03-20-indirectbr.ll | ||
ashr-crash.ll | ||
basictest.ll | ||
dup-preds.ll | ||
hardertest.ll | ||
indirectbr-backedge.ll | ||
indirectbr.ll | ||
merge-exits.ll | ||
notify-scev.ll | ||
phi-node-simplify.ll | ||
preserve-scev.ll | ||
single-backedge.ll | ||
unreachable-loop-pred.ll |