llvm-project/llvm/test/Transforms/LICM
Chandler Carruth ad8cb382fa [LICM] Teach LICM how to handle cases where the alias set tracker was
merged into a loop that was subsequently unrolled (or otherwise nuked).

In this case it can't merge in the ASTs for any remaining nested loops,
it needs to re-add their instructions dircetly.

The fix is very isolated, but I've pulled the code for merging blocks
into the AST into a single place in the process. The only behavior
change is in the case which would have crashed before.

This fixes a crash reported by Mikael Holmen on the list after r261316
restored much of the loop pass pipelining and allowed us to actually do
this kind of nested transformation sequenc. I've taken that test case
and further reduced it into the somewhat twisty maze of loops in the
included test case. This does in fact trigger the bug even in this
reduced form.

llvm-svn: 262108
2016-02-27 04:34:07 +00:00
..
2003-02-26-LoopExitNotDominated.ll
2003-02-27-NestedLoopExitBlocks.ll
2003-02-27-PreheaderExitNodeUpdate.ll
2003-02-27-PreheaderProblem.ll
2003-02-27-StoreSinkPHIs.ll
2003-02-28-PromoteDifferentType.ll
2003-05-02-LoadHoist.ll
2003-12-11-SinkingToPHI.ll
2004-09-14-AliasAnalysisInvalidate.ll [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
2004-11-17-UndefIndexCrash.ll
2006-09-12-DeadUserOfSunkInstr.ll
2007-05-22-VolatileSink.ll
2007-07-30-AliasSet.ll
2007-09-17-PromoteValue.ll
2007-09-24-PromoteNullValue.ll
2007-10-01-PromoteSafeValue.ll
2008-05-20-AliasSetVAArg.ll
2008-07-22-LoadGlobalConstant.ll
2009-12-10-LICM-Indbr-Crash.ll
2011-04-06-HoistMissedASTUpdate.ll
2011-04-06-PromoteResultOfPromotion.ll
2011-04-09-RAUW-AST.ll
2011-07-06-Alignment.ll
2014-09-10-doFinalizationAssert.ll
AliasSetMemSet.ll [AliasSetTracker] Teach AliasSetTracker about MemSetInst 2016-02-17 02:01:50 +00:00
PR19798.ll
PR21582.ll
PR24013.ll [LICM] Don't try to sink values out of loops without any exits 2015-07-12 03:53:05 +00:00
Preserve-LCSSA.ll
alias-set-tracker-loss.ll [LICM] Teach LICM how to handle cases where the alias set tracker was 2016-02-27 04:34:07 +00:00
argmemonly-call.ll [LICM] Hoist calls to readonly argmemonly functions even with stores in the loop 2015-09-21 22:27:59 +00:00
atomics.ll
basictest.ll
constexpr.ll
crash.ll
debug-value.ll DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
extra-copies.ll
funclet.ll [LICM] Fix a small oversight introduced in r256763 2016-01-04 23:16:22 +00:00
hoist-bitcast-load.ll
hoist-deref-load.ll [LICM] Keep metadata on control equivalent hoists 2016-01-28 15:51:58 +00:00
hoist-invariant-load.ll [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
hoisting.ll
lcssa-ssa-promoter.ll
no-preheader-test.ll
pr23608.ll Fix CHECK directives that weren't checking. 2015-08-31 21:10:35 +00:00
preheader-safe.ll
promote-order.ll
scalar-promote-memmodel.ll
scalar_promote.ll
sinking.ll [LICM] Make instruction sinking funclet-aware 2016-01-04 03:37:39 +00:00
speculate.ll
volatile-alias.ll