[PATCH][instcombine] Remove preservesCFG from instcombine

Chandler Carruth chandlerc at google.com
Tue Nov 4 14:51:38 PST 2014


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/9fbc7407/attachment.html>


More information about the llvm-commits mailing list