1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Transforms/LICM
Philip Reames dd580708e8 [MustExecute/LICM] Special case first instruction in throwing header
We currently have a hard to solve analysis problem around the order of instructions within a potentially throwing block.  We can't cheaply determine whether a given instruction is before the first potential throw in the block.  While we're working on that in the background, special case the first instruction within the header.

why this particular special case?  Well, headers are guaranteed to execute if the loop does, and it turns out we tend to produce this form in practice.

In a follow on patch, I tend to extend LICM with an alternate approach which works for any instruction in the header before the first throw, but this is the best I can come up with other users of the analysis (such as store promotion.)

Note: I can't show the difference in the analysis result since we're ORing in the expensive instruction walk used by SCEV.  Using the full walk is not suitable for a general solution.
llvm-svn: 331079
2018-04-27 20:44:01 +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
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
alias-set-tracker-loss.ll
AliasSetMemSet.ll
argmemonly-call.ll
assume.ll
atomics.ll
basictest.ll
bisect-state.ll
constexpr.ll
crash.ll
debug-value.ll
dropped-tbaa.ll
extra-copies.ll
funclet.ll
hoist-bitcast-load.ll
hoist-deref-load.ll
hoist-fast-fdiv.ll
hoist-invariant-load.ll
hoist-mustexec.ll [LICM/mustexec] Extend first iteration must execute logic to fcmps 2018-03-16 16:33:49 +00:00
hoist-nounwind.ll
hoist-round.ll
hoisting.ll
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
lcssa-ssa-promoter.ll
loopsink.ll Xfail the test added in r324445 until the underlying issue in LoopSink is fixed. 2018-02-07 06:11:50 +00:00
no-preheader-test.ll
opt-remarks-conditional-load.ll
opt-remarks-intervening-store.ll
opt-remarks.ll
pr23608.ll
pr26843.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
pr27262.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
pr32129.ll
pr35342.ll [LICM] Fix PR35342 2017-11-17 20:38:25 +00:00
PR19798.ll
PR21582.ll
PR24013.ll
preheader-safe.ll [MustExecute/LICM] Special case first instruction in throwing header 2018-04-27 20:44:01 +00:00
Preserve-LCSSA.ll
promote-order.ll
promote-tls.ll
scalar-promote-memmodel.ll
scalar-promote-unwind.ll
scalar-promote.ll [LICM] Ignore exits provably not taken on first iteration when computing must execute 2018-03-15 21:04:28 +00:00
sink-foldable.ll Re-commit : [LICM] Allow sinking when foldable in loop 2017-12-15 20:33:24 +00:00
sink.ll
sinking.ll [LICM] Salvage DI from dying Instructions 2018-03-18 15:59:19 +00:00
speculate.ll
strlen.ll
unrolled-deeply-nested.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
update-scev.ll
volatile-alias.ll