[PATCH][instcombine] Remove preservesCFG from instcombine

Mark Heffernan meheff at google.com
Tue Nov 4 15:13:06 PST 2014


Thanks!  r221311.

Mark

On Tue, Nov 4, 2014 at 2:51 PM, Chandler Carruth <chandlerc at google.com>
wrote:

> LGTM! This looks like the perfect minimal fix. Thanks for tracking this
> down, I think this has actually been a root cause of a few things I've
> tried (and failed) to debug as well.
>
> On Tue, Nov 4, 2014 at 4:06 PM, Mark Heffernan <meheff at google.com> wrote:
>
>> On Tue, Nov 4, 2014 at 12:46 PM, Chandler Carruth <chandlerc at google.com>
>> wrote:
>>
>>> Can you show the same diff to the pass structure for the latter change?
>>>
>>
>> Here you go (for -O2).  The only difference is an additional loopsimplify
>> pass.  The baseline here is the state before my earlier patch, so this diff
>> only represents changing LoopSimplify to !isCfgOnly.
>>
>> --- passes.before.txt 2014-11-04 13:59:22.933766046 -0800
>> +++ passes.after.txt 2014-11-04 13:53:04.199887020 -0800
>> @@ -1,122 +1,123 @@
>>  Pass Arguments:  -datalayout -notti -basictti -x86tti -no-aa -tbaa
>> -scoped-noalias -assumption-tracker -targetlibinfo -basicaa -verify
>> -simplifycfg -domtree -sroa -early-cse -lower-expect
>>  Data Layout
>>  No target information
>>  Target independent code generator's TTI
>>  X86 Target Transform Info
>>  No Alias Analysis (always returns 'may' alias)
>>  Type-Based Alias Analysis
>>  Scoped NoAlias Alias Analysis
>>  Assumption Tracker
>>  Target Library Information
>>  Basic Alias Analysis (stateless AA impl)
>>    FunctionPass Manager
>>      Module Verifier
>>      Simplify the CFG
>>      Dominator Tree Construction
>>      SROA
>>      Early CSE
>>      Lower 'expect' Intrinsics
>> -Pass Arguments:  -targetlibinfo -datalayout -notti -basictti -x86tti
>> -no-aa -tbaa -scoped-noalias -assumption-tracker -basicaa -verify-di
>> -ipsccp -globalopt -deadargelim -instcombine -simplifycfg -basiccg
>> -prune-eh -inline-cost -inline -functionattrs -sroa -domtree -early-cse
>> -lazy-value-info -jump-threading -correlated-propagation -simplifycfg
>> -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops
>> -loop-simplify -lcssa -loop-rotate -licm -loop-unswitch -instcombine
>> -scalar-evolution -lcssa -indvars -loop-idiom -loop-deletion -function_tti
>> -loop-unroll -memdep -mldst-motion -domtree -memdep -gvn -memdep -memcpyopt
>> -sccp -instcombine -lazy-value-info -jump-threading -correlated-propagation
>> -domtree -memdep -dse -adce -simplifycfg -instcombine -barrier -domtree
>> -loops -loop-simplify -lcssa -branch-prob -block-freq -scalar-evolution
>> -loop-vectorize -instcombine -scalar-evolution -slp-vectorizer -simplifycfg
>> -instcombine -domtree -loops -loop-simplify -lcssa -scalar-evolution
>> -function_tti -loop-unroll -alignment-from-assumptions
>> -strip-dead-prototypes -globaldce -constmerge -verify -verify-di
>> +Pass Arguments:  -targetlibinfo -datalayout -notti -basictti -x86tti
>> -no-aa -tbaa -scoped-noalias -assumption-tracker -basicaa -verify-di
>> -ipsccp -globalopt -deadargelim -instcombine -simplifycfg -basiccg
>> -prune-eh -inline-cost -inline -functionattrs -sroa -domtree -early-cse
>> -lazy-value-info -jump-threading -correlated-propagation -simplifycfg
>> -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops
>> -loop-simplify -lcssa -loop-rotate -licm -loop-unswitch -instcombine
>> -scalar-evolution -loop-simplify -lcssa -indvars -loop-idiom -loop-deletion
>> -function_tti -loop-unroll -memdep -mldst-motion -domtree -memdep -gvn
>> -memdep -memcpyopt -sccp -instcombine -lazy-value-info -jump-threading
>> -correlated-propagation -domtree -memdep -dse -adce -simplifycfg
>> -instcombine -barrier -domtree -loops -loop-simplify -lcssa -branch-prob
>> -block-freq -scalar-evolution -loop-vectorize -instcombine
>> -scalar-evolution -slp-vectorizer -simplifycfg -instcombine -domtree -loops
>> -loop-simplify -lcssa -scalar-evolution -function_tti -loop-unroll
>> -alignment-from-assumptions -strip-dead-prototypes -globaldce -constmerge
>> -verify -verify-di
>>  Target Library Information
>>  Data Layout
>>  No target information
>>  Target independent code generator's TTI
>>  X86 Target Transform Info
>>  No Alias Analysis (always returns 'may' alias)
>>  Type-Based Alias Analysis
>>  Scoped NoAlias Alias Analysis
>>  Assumption Tracker
>>  Basic Alias Analysis (stateless AA impl)
>>    ModulePass Manager
>>      Debug Info Verifier
>>      Interprocedural Sparse Conditional Constant Propagation
>>      Global Variable Optimizer
>>      Dead Argument Elimination
>>      FunctionPass Manager
>>        Combine redundant instructions
>>        Simplify the CFG
>>      CallGraph Construction
>>      Call Graph SCC Pass Manager
>>        Remove unused exception handling info
>>        Inline Cost Analysis
>>        Function Integration/Inlining
>>        Deduce function attributes
>>        FunctionPass Manager
>>          SROA
>>          Dominator Tree Construction
>>          Early CSE
>>          Lazy Value Information Analysis
>>          Jump Threading
>>          Value Propagation
>>          Simplify the CFG
>>          Combine redundant instructions
>>          Tail Call Elimination
>>          Simplify the CFG
>>          Reassociate expressions
>>          Dominator Tree Construction
>>          Natural Loop Information
>>          Canonicalize natural loops
>>          Loop-Closed SSA Form Pass
>>          Loop Pass Manager
>>            Rotate Loops
>>            Loop Invariant Code Motion
>>            Unswitch loops
>>          Combine redundant instructions
>>          Scalar Evolution Analysis
>> +        Canonicalize natural loops
>>          Loop-Closed SSA Form Pass
>>          Loop Pass Manager
>>            Induction Variable Simplification
>>            Recognize loop idioms
>>            Delete dead loops
>>          Function TargetTransformInfo
>>          Loop Pass Manager
>>            Unroll loops
>>          Memory Dependence Analysis
>>          MergedLoadStoreMotion
>>          Dominator Tree Construction
>>          Memory Dependence Analysis
>>          Global Value Numbering
>>          Memory Dependence Analysis
>>          MemCpy Optimization
>>          Sparse Conditional Constant Propagation
>>          Combine redundant instructions
>>          Lazy Value Information Analysis
>>          Jump Threading
>>          Value Propagation
>>          Dominator Tree Construction
>>          Memory Dependence Analysis
>>          Dead Store Elimination
>>          Aggressive Dead Code Elimination
>>          Simplify the CFG
>>          Combine redundant instructions
>>      A No-Op Barrier Pass
>>      FunctionPass Manager
>>        Dominator Tree Construction
>>        Natural Loop Information
>>        Canonicalize natural loops
>>        Loop-Closed SSA Form Pass
>>        Branch Probability Analysis
>>        Block Frequency Analysis
>>        Scalar Evolution Analysis
>>        Loop Vectorization
>>        Combine redundant instructions
>>        Scalar Evolution Analysis
>>        SLP Vectorizer
>>        Simplify the CFG
>>        Combine redundant instructions
>>        Dominator Tree Construction
>>        Natural Loop Information
>>        Canonicalize natural loops
>>        Loop-Closed SSA Form Pass
>>        Scalar Evolution Analysis
>>        Function TargetTransformInfo
>>        Loop Pass Manager
>>          Unroll loops
>>        Alignment from assumptions
>>      Strip Unused Function Prototypes
>>      Dead Global Elimination
>>      Merge Duplicate Global Constants
>>      FunctionPass Manager
>>        Module Verifier
>>      Debug Info Verifier
>>      Bitcode Writer
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141104/ac7f9f8f/attachment.html>


More information about the llvm-commits mailing list