[llvm-commits] [llvm] r130241 - in /llvm/trunk: include/llvm/Support/StandardPasses.h test/Transforms/PhaseOrdering/ test/Transforms/PhaseOrdering/basic.ll test/Transforms/ScalarRepl/dg.exp

Cameron Zwarich zwarich at apple.com
Wed Apr 27 00:36:30 PDT 2011


On 2011-04-27, at 12:27 AM, Chris Lattner wrote:

> On Apr 26, 2011, at 11:57 PM, Duncan Sands wrote:
> 
>> Hi Chris,
>> 
>>> 2. Move the "clean up after the unroller" pass to the very end of the
>>>   function-level pass pipeline.  Loop unroll uses instsimplify now,
>>>   so it doesn't create a ton of trash.  Moving instcombine later allows
>>>   it to clean up after opportunities are exposed by GVN, DSE, etc.
>> 
>> am I right in thinking that there is no longer any point to having instcombine
>> try to preserve LCSSA form?  If so, I will rip that code out.
> 
> Yep, I'm pretty sure that we haven't been running instcombine in the loop pass manager for quite a while.  Cameron, is this true?

Yeah, instcombine breaks the pipelining of the loop pass manager in the way that we were running it as a function pass, so there were two loop pass managers. Since loop passes can't be preserved across loop pass managers, LCSSA was always recomputed afterwards:

          Loop Invariant Code Motion
          Loop-Closed SSA Form Pass
          Unswitch loops
        Combine redundant instructions
        Scalar Evolution Analysis
        Loop Pass Manager
          Canonicalize natural loops
          Loop-Closed SSA Form Pass

Cameron



More information about the llvm-commits mailing list