llvm/test/Transforms/LICM
Sanjoy Das c32a57361b Use a WeakVH for UnknownInstructions in AliasSetTracker
Summary:
This change solves the same problem as D30726, except that this only
throws out the bathwater.

AST was not correctly tracking and deleting UnknownInstructions via
handles.  The existing code only tracks "pointers" in its
`ASTCallbackVH`, so an UnknownInstruction (that isn't also def'ing a
pointer used by another memory instruction) never gets a
`ASTCallbackVH`.

There are two other ways to solve this problem:

 - Use the `PointerRec` scheme for both known and unknown instructions.
 - Use a `CallbackVH` that erases the offending Instruction from the
   UnknownInstruction list.

Both of the above changes seemed to be significantly (and unnecessarily
IMO) more complex than this.

Reviewers: chandlerc, dberlin, hfinkel, reames

Subscribers: mcrosier, llvm-commits

Differential Revision: https://reviews.llvm.org/D30849

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297539 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-11 01:15:48 +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 [Verifier] Add verification for TBAA metadata 2016-12-11 20:07:15 +00:00
2011-04-09-RAUW-AST.ll
2011-07-06-Alignment.ll
2014-09-10-doFinalizationAssert.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
AliasSetMemSet.ll [AliasSetTracker] Teach AliasSetTracker about MemSetInst 2016-02-17 02:01:50 +00:00
argmemonly-call.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
assume.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
atomics.ll [LICM] Make store promotion work in the face of unordered atomics 2017-02-14 01:38:31 +00:00
basictest.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
bisect-state.ll [LICM] Work around LICM needs to maintain state across loops. 2016-12-23 13:12:50 +00:00
constexpr.ll [PM] Teach the LoopPassManager to automatically canonicalize loops by 2017-01-17 19:18:12 +00:00
crash.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
debug-value.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
extra-copies.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
funclet.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
hoist-bitcast-load.ll [PM] Teach the loop PM to run LoopSimplify prior to the loop pipeline. 2017-01-21 03:48:51 +00:00
hoist-deref-load.ll [PM] Teach the loop PM to run LoopSimplify prior to the loop pipeline. 2017-01-21 03:48:51 +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
hoist-nounwind.ll [PM] Teach the LoopPassManager to automatically canonicalize loops by 2017-01-17 19:18:12 +00:00
hoist-round.ll Mark @llvm.powi.* as safe to speculatively execute. 2017-01-25 09:32:30 +00:00
hoisting.ll [LICM] Hoist loads that are dominated by invariant.start intrinsic, and are invariant in the loop. 2017-02-02 13:22:03 +00:00
lcssa-ssa-promoter.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
loopsink.ll [PM] Port LoopSink to the new pass manager. 2017-01-20 08:42:19 +00:00
no-preheader-test.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
opt-remarks-conditional-load.ll [LICM] Report failing to hoist conditionally-executed loads 2017-01-11 04:39:49 +00:00
opt-remarks-intervening-store.ll [LICM] Report failing to hoist a load with an invariant address 2017-01-11 04:39:45 +00:00
opt-remarks.ll Correct a typo, s/hosting/hoisting/ 2017-02-14 16:41:10 +00:00
pr23608.ll Fix CHECK directives that weren't checking. 2015-08-31 21:10:35 +00:00
pr26843.ll [AliasSetTracker] Do not strip pointer casts when processing MemSetInst 2016-03-14 18:34:29 +00:00
pr27262.ll [AliasSetTracker] Correctly handle changing the size of an entry 2016-04-14 22:00:11 +00:00
pr32129.ll Use a WeakVH for UnknownInstructions in AliasSetTracker 2017-03-11 01:15:48 +00:00
PR19798.ll
PR21582.ll
PR24013.ll
preheader-safe.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
Preserve-LCSSA.ll
promote-order.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
promote-tls.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
scalar-promote-memmodel.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
scalar-promote-unwind.ll Improve what can be promoted in LICM. 2017-01-19 19:31:40 +00:00
scalar-promote.ll [LICM] Make store promotion work in the face of unordered atomics 2017-02-14 01:38:31 +00:00
sink.ll [PM] Port LoopSink to the new pass manager. 2017-01-20 08:42:19 +00:00
sinking.ll [LICM] Make instruction sinking funclet-aware 2016-01-04 03:37:39 +00:00
speculate.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00
unrolled-deeply-nested.ll [LICM] When we are recomputing the alias sets for a subloop, we cannot 2017-01-27 10:27:32 +00:00
update-scev.ll [LICM] Kill SCEV loop dispositions if needed 2016-05-03 17:50:11 +00:00
volatile-alias.ll [LICM] Report successful hoist/sink/promotion 2017-01-11 04:39:35 +00:00