1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/include/llvm/Analysis
Craig Topper bb07faeae4 [JumpThreading] Teach jump threading how to analyze (and (cmp A, C1), (cmp A, C2)) after InstCombine has turned it into (cmp (add A, C3), C4)
Currently JumpThreading can use LazyValueInfo to analyze an 'and' or 'or' of compare if the compare is fed by a livein of a basic block. This can be used to to prove the condition can't be met for some predecessor and the jump from that predecessor can be moved to the false path of the condition.

But if the compare is something that InstCombine turns into an add and a single compare, it can't be analyzed because the livein is now an input to the add and not the compare.

This patch adds a new method to LVI to get a ConstantRange on an edge. Then we teach jump threading to detect the add livein feeding a compare and to get the ConstantRange and propagate it.

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

llvm-svn: 306085
2017-06-23 05:41:35 +00:00
..
AliasAnalysis.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
AliasAnalysisEvaluator.h Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
AliasSetTracker.h Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts 2017-05-01 17:07:56 +00:00
AssumptionCache.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
BasicAliasAnalysis.h De-duplicate some code for creating an AARGetter suitable for the legacy PM. 2017-02-09 23:11:52 +00:00
BlockFrequencyInfo.h Add an interface to scale the frequencies of a set of blocks. 2017-01-19 18:53:16 +00:00
BlockFrequencyInfoImpl.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
BranchProbabilityInfo.h [BPI] Don't assume that strcmp returning >0 is more likely than <0 2017-06-08 09:44:40 +00:00
CallGraph.h CallGraph: Remove almost-unused field 'Root'. 2017-05-11 23:59:05 +00:00
CallGraphSCCPass.h [CallGraphSCCPass] Use an ArrayRef instead of a pair of iterators 2016-08-06 06:21:02 +00:00
CallPrinter.h
CaptureTracking.h
CFG.h
CFGPrinter.h [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
CFLAndersAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
CFLSteensAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
CGSCCPassManager.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
CodeMetrics.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
ConstantFolding.h [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin 2017-06-09 23:18:11 +00:00
DemandedBits.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
DependenceAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
DivergenceAnalysis.h
DominanceFrontier.h [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
DominanceFrontierImpl.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
DomPrinter.h
DOTGraphTraitsPass.h
EHPersonalities.h [tsan] Add support for C++ exceptions into TSan (call __tsan_func_exit during unwinding), LLVM part 2016-11-14 21:41:13 +00:00
GlobalsModRef.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
IndirectCallPromotionAnalysis.h
IndirectCallSiteVisitor.h Fix the samplepgo indirect call promotion bug: we should not promote a direct call. 2017-02-06 23:33:15 +00:00
InlineCost.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
InstructionSimplify.h [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin 2017-06-09 23:18:11 +00:00
Interval.h s/static inline/static/ for headers I have changed in r279475. NFC. 2016-08-31 16:48:13 +00:00
IntervalIterator.h
IntervalPartition.h
IteratedDominanceFrontier.h IDFCalculator: Remove unused field. 2016-08-22 19:52:23 +00:00
IVUsers.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
LazyBlockFrequencyInfo.h [LazyBFI] Fix typos 2017-02-14 17:21:12 +00:00
LazyBranchProbabilityInfo.h [BPI] Don't assume that strcmp returning >0 is more likely than <0 2017-06-08 09:44:40 +00:00
LazyCallGraph.h [PM/LCG] Teach the LazyCallGraph how to replace a function without 2017-02-09 23:24:13 +00:00
LazyValueInfo.h [JumpThreading] Teach jump threading how to analyze (and (cmp A, C1), (cmp A, C2)) after InstCombine has turned it into (cmp (add A, C3), C4) 2017-06-23 05:41:35 +00:00
Lint.h
Loads.h Extract FindAvailablePtrLoadStore out of FindAvailableLoadedValue. NFCI 2017-03-19 15:27:52 +00:00
LoopAccessAnalysis.h [SLP] Revert everything that has to do with memory access sorting. 2017-03-10 18:59:07 +00:00
LoopAnalysisManager.h Revert r293017 and fix the actual underlying issue. 2017-02-07 01:50:48 +00:00
LoopInfo.h Avoid unnecessary copies in some for loops 2017-04-24 20:01:03 +00:00
LoopInfoImpl.h Restrict the definition of loop preheader to avoid EH blocks 2017-06-22 23:27:16 +00:00
LoopIterator.h [LV] Move LoopBodyTraits to a better place, and add comment for simplifying LoopBlocksTraversal. NFC. 2016-08-17 22:20:07 +00:00
LoopPass.h [LegacyPM] Make the 'addLoop' method accept a loop to add rather than 2017-05-25 03:01:31 +00:00
LoopUnrollAnalyzer.h
MemoryBuiltins.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
MemoryDependenceAnalysis.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MemoryLocation.h
MemorySSA.h [IR] Stop deleting other signatures of User::operator new when we override one signature in a class derived from User 2017-06-12 23:25:15 +00:00
MemorySSAUpdater.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ModuleSummaryAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ObjCARCAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
ObjCARCAnalysisUtils.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ObjCARCInstKind.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ObjectUtils.h Move llvm::canBeOmittedFromSymbolTable() to Analysis. 2017-03-31 04:46:31 +00:00
OptimizationDiagnosticInfo.h [ORE] Remove ORE.emit{{.+}} functions 2017-02-23 21:32:53 +00:00
OrderedBasicBlock.h [OrderedBasicBlock] Return false for comesBefore(A, A) 2017-06-02 13:10:31 +00:00
Passes.h
PHITransAddr.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
PostDominators.h [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
ProfileSummaryInfo.h Add hasProfileSummary and has{Sample|Instrumentation}Profile methods 2017-05-16 20:14:39 +00:00
PtrUseVisitor.h [IR/Analysis] Defend against getting slightly wrong template arguments 2017-02-07 03:17:30 +00:00
RegionInfo.h [RegionInfo] Fix dangling references created by moving RegionInfo objects 2017-04-24 11:54:37 +00:00
RegionInfoImpl.h
RegionIterator.h Modify df_iterator to support post-order actions 2016-10-05 21:36:16 +00:00
RegionPass.h Add opt-bisect support for region passes. 2017-06-01 21:22:26 +00:00
RegionPrinter.h
ScalarEvolution.h [ScalarEvolution] Apply Depth limit to getMulExpr 2017-06-15 11:48:21 +00:00
ScalarEvolutionAliasAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ScalarEvolutionExpander.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
ScalarEvolutionExpressions.h Use range-for in a few places 2017-04-14 17:42:12 +00:00
ScalarEvolutionNormalization.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ScopedNoAliasAA.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
SparsePropagation.h
TargetFolder.h [ConstnatFolding] Teach the folder how to fold ConstantVector 2016-07-29 03:27:26 +00:00
TargetLibraryInfo.def Revert "Add pthread_self function prototype and make it speculatable." 2017-05-21 00:37:55 +00:00
TargetLibraryInfo.h fix formatting; NFC 2017-06-08 20:00:09 +00:00
TargetTransformInfo.h DivergencyAnalysis patch for review 2017-06-15 19:33:10 +00:00
TargetTransformInfoImpl.h DivergencyAnalysis patch for review 2017-06-15 19:33:10 +00:00
Trace.h
TypeBasedAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
TypeMetadataUtils.h [cfi] CFI-ICall for ThinLTO. 2017-06-16 00:18:29 +00:00
ValueTracking.h fix typos/formatting; NFC 2017-06-12 22:34:37 +00:00
VectorUtils.h [LV] Move interleaved access helper functions to VectorUtils (NFC) 2017-02-01 17:45:46 +00:00