1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 14:02:52 +02:00
llvm-mirror/include/llvm/Analysis
Piotr Padlewski 9032a3fc4f [Devirtualization] MemDep returns non-local !invariant.group dependencies
Summary:
Memory Dependence Analysis was limited to return only local dependencies
for invariant.group handling. Now it returns NonLocal when it finds it
and then by asking getNonLocalPointerDependency we get found dep.

Thanks to this we are able to devirtualize loops!

    void indirect(A &a, int n) {
      for (int i = 0 ; i < n; i++)
        a.foo();

    }
    void test(int n) {
      A a;
      indirect(a);
    }

After inlining a.foo() will be changed to direct call, even if foo and A::A()
is external (but only if vtable definition is be available).

Reviewers: nlewycky, dberlin, chandlerc, rsmith

Subscribers: mehdi_amini, davide, llvm-commits

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

llvm-svn: 291762
2017-01-12 11:33:58 +00:00
..
AliasAnalysis.h [PM] Teach the AAManager and AAResults layer (the worst offender for 2016-12-27 08:44:39 +00:00
AliasAnalysisEvaluator.h
AliasSetTracker.h [AliasSetTracker] Add support for memcpy and memmove. 2016-10-19 19:09:03 +00:00
AssumptionCache.h Make processing @llvm.assume more efficient - Add affected values to the assumption cache 2017-01-11 13:24:24 +00:00
BasicAliasAnalysis.h [PM] Teach BasicAA how to invalidate its result object. 2016-12-27 10:30:45 +00:00
BlockFrequencyInfo.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
BlockFrequencyInfoImpl.h
BranchProbabilityInfo.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
CallGraph.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
CallGraphSCCPass.h
CallPrinter.h
CaptureTracking.h
CFG.h
CFGPrinter.h [PM] Port CFGViewer and CFGPrinter to the new Pass Manager 2016-09-15 18:35:27 +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 [PM] Fix a typo in a comment that Davide spotted in another code review. 2017-01-05 03:10:26 +00:00
CodeMetrics.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
ConstantFolding.h [Analysis] Remove repeated text from a comment. NFC 2016-12-29 21:48:28 +00:00
DemandedBits.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +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] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
DominanceFrontierImpl.h
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
InlineCost.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
InstructionSimplify.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +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
IVUsers.h [PM] Separate the LoopAnalysisManager from the LoopPassManager and move 2017-01-11 09:43:56 +00:00
LazyBlockFrequencyInfo.h
LazyBranchProbabilityInfo.h
LazyCallGraph.h Make some operator bools explicit for sanity/safety. 2017-01-11 19:47:16 +00:00
LazyValueInfo.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
Lint.h
Loads.h fix comment formatting; NFC 2017-01-04 18:16:43 +00:00
LoopAccessAnalysis.h [PM] Separate the LoopAnalysisManager from the LoopPassManager and move 2017-01-11 09:43:56 +00:00
LoopAnalysisManager.h [PM] Separate the LoopAnalysisManager from the LoopPassManager and move 2017-01-11 09:43:56 +00:00
LoopInfo.h [PM] Rewrite the loop pass manager to use a worklist and augmented run 2017-01-11 06:23:21 +00:00
LoopInfoImpl.h Codegen: Tail-duplicate during placement. 2016-10-11 20:36:43 +00:00
LoopIterator.h
LoopPass.h [LCSSA] Perform LCSSA verification only for the current loop nest. 2016-10-28 12:57:20 +00:00
LoopUnrollAnalyzer.h
MemoryBuiltins.h [Analysis] Centralize objectsize lowering logic. 2016-12-20 23:46:36 +00:00
MemoryDependenceAnalysis.h [Devirtualization] MemDep returns non-local !invariant.group dependencies 2017-01-12 11:33:58 +00:00
MemoryLocation.h
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
ObjCARCInstKind.h
OptimizationDiagnosticInfo.h [GVN, OptDiag] Print the interesting instructions involved in missed load-elimination 2016-12-01 17:34:50 +00:00
OrderedBasicBlock.h
Passes.h
PHITransAddr.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
PostDominators.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ProfileSummaryInfo.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
PtrUseVisitor.h
RegionInfo.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
RegionInfoImpl.h
RegionIterator.h Modify df_iterator to support post-order actions 2016-10-05 21:36:16 +00:00
RegionPass.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
RegionPrinter.h
ScalarEvolution.h [PM] Teach SCEV to invalidate itself when its dependencies become 2017-01-09 07:44:34 +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 Re-land "[SCEVExpander] Use llvm data structures; NFC" 2016-12-13 22:04:58 +00:00
ScalarEvolutionExpressions.h [SCEV] Refactor out a useful pattern; NFC 2016-11-09 18:22:43 +00:00
ScalarEvolutionNormalization.h
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
TargetLibraryInfo.def
TargetLibraryInfo.h fix comment typos; NFC 2017-01-09 16:27:56 +00:00
TargetTransformInfo.h [X86] updating TTI costs for arithmetic instructions on X86\SLM arch. 2017-01-11 08:23:37 +00:00
TargetTransformInfoImpl.h [X86] updating TTI costs for arithmetic instructions on X86\SLM arch. 2017-01-11 08:23:37 +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
ValueTracking.h InstSimplify: Eliminate fabs on known positive 2017-01-11 00:33:24 +00:00
VectorUtils.h