llvm-6502/include/llvm/Analysis
Silviu Baranga a420a14276 [LAA] Fix estimation of number of memchecks
Summary:
We need to add a runtime memcheck for pair of accesses (x,y) where at least one of x and y
are writes.
 
Assuming we have w writes and r reads, currently this number is  estimated as being
w* (w+r-1). This estimation will count (write,write) pairs twice and will overestimate
the number of checks required.

This change adds a getNumberOfChecks method to RuntimePointerCheck, which
will count the number of runtime checks needed (similar in implementation to
needsAnyChecking) and uses it to produce the correct number of runtime checks.

Test Plan:
llvm test suite
spec2k
spec2k6

Performance results: no changes observed (not surprising since the formula for 1 writer is basically the same, which would covers most cases - at least with the current check limit).

Reviewers: anemet

Reviewed By: anemet

Subscribers: mzolotukhin, llvm-commits

Differential Revision: http://reviews.llvm.org/D10217

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239295 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-08 10:27:06 +00:00
..
AliasAnalysis.h [PM/AA] Start refactoring AliasAnalysis to remove the analysis group and 2015-06-04 02:03:15 +00:00
AliasSetTracker.h Constify arguments in AliasSetTracker methods. NFC 2015-05-13 01:12:12 +00:00
AssumptionCache.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
BlockFrequencyInfo.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
BlockFrequencyInfoImpl.h Tidy comment. NFC. 2015-06-04 20:49:52 +00:00
BranchProbabilityInfo.h Add BranchProbabilityInfo::releaseMemory to clear the Weights field. 2015-05-28 19:43:06 +00:00
CallGraph.h Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:43:39 +00:00
CallGraphSCCPass.h
CallPrinter.h
CaptureTracking.h Match semantics of PointerMayBeCapturedBefore to its name by default 2014-07-21 21:30:22 +00:00
CFG.h
CFGPrinter.h Tweak CFGPrinter to wrap very long names. 2014-08-20 17:38:12 +00:00
CGSCCPassManager.h Remove std::move on return of temporary. 2015-05-01 15:25:29 +00:00
CodeMetrics.h [PM] Split the AssumptionTracker immutable pass into two separate APIs: 2015-01-04 12:03:27 +00:00
ConstantFolding.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
DependenceAnalysis.h [DependenceAnalysis] Extend unifySubscriptType for handling coupled subscript groups. 2015-05-29 16:58:08 +00:00
DominanceFrontier.h These functions are not actually defined for NDEBUG or !LLVM_DUMP_ENABLED, so guarding the declarations as well. NFC, silences MSVC warnings in release builds. 2014-10-24 15:16:39 +00:00
DominanceFrontierImpl.h Add more missing #includes, found by modules build. 2015-05-11 22:41:07 +00:00
DomPrinter.h
DOTGraphTraitsPass.h Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
InlineCost.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
InstructionSimplify.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
Interval.h
IntervalIterator.h Remove use of reserved identifier 2015-03-15 01:37:01 +00:00
IntervalPartition.h
IteratedDominanceFrontier.h Move IDF Calculation to a separate file, expose an interface to it. 2015-04-21 19:13:02 +00:00
IVUsers.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
JumpInstrTableInfo.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LazyCallGraph.h Revert r225854: [PM] Move the LazyCallGraph printing functionality to 2015-01-14 00:27:45 +00:00
LazyValueInfo.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LibCallAliasAnalysis.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LibCallSemantics.h Stop calling DwarfEHPrepare from WinEHPrepare 2015-03-12 00:36:20 +00:00
Lint.h
Loads.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
LoopAccessAnalysis.h [LAA] Fix estimation of number of memchecks 2015-06-08 10:27:06 +00:00
LoopInfo.h Push constness through LoopInfo::isLoopHeader and clean it up a bit. 2015-06-02 15:28:27 +00:00
LoopInfoImpl.h Push constness through LoopInfo::isLoopHeader and clean it up a bit. 2015-06-02 15:28:27 +00:00
LoopIterator.h
LoopPass.h Fix assertion in LICM doFinalization() 2014-09-24 16:48:31 +00:00
MemoryBuiltins.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
MemoryDependenceAnalysis.h Revamp PredIteratorCache interface to be cleaner. 2015-04-21 21:11:50 +00:00
MemoryLocation.h [PM/AA] Start refactoring AliasAnalysis to remove the analysis group and 2015-06-04 02:03:15 +00:00
Passes.h Divergence analysis for GPU programs 2015-04-10 05:03:50 +00:00
PHITransAddr.h [PHITransAddr] Don't translate unreachable values 2015-06-01 00:15:08 +00:00
PostDominators.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
PtrUseVisitor.h
RegionInfo.h Remove empty non-virtual destructors or mark them =default when non-public 2015-04-11 15:32:26 +00:00
RegionInfoImpl.h Make it obvious that we're iterating over a range of pointers. 2015-04-16 12:43:07 +00:00
RegionIterator.h Remove explicit RNSuccIterator copy assignment in favor of implicit default 2015-03-04 07:51:50 +00:00
RegionPass.h
RegionPrinter.h
ScalarEvolution.h [ScalarEvolution] refactor: extract interface getGEPExpr 2015-05-18 17:03:25 +00:00
ScalarEvolutionExpander.h [SCEVExpander] Fix comments for functions. NFC. 2015-04-14 03:20:40 +00:00
ScalarEvolutionExpressions.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
ScalarEvolutionNormalization.h
SparsePropagation.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
TargetFolder.h [opaque pointer types] Push explicit type parameter for geps through the constant folders 2015-04-03 01:15:16 +00:00
TargetLibraryInfo.def Move TargetLibraryInfo data from two files into one common .def file. 2015-03-03 23:41:58 +00:00
TargetLibraryInfo.h TLI: Add addVectorizableFunctionsFromVecLib. 2015-03-17 19:50:55 +00:00
TargetTransformInfo.h [LoopVectorize] Teach Loop Vectorizor about interleaved memory accesses. 2015-06-08 06:39:56 +00:00
TargetTransformInfoImpl.h [LoopVectorize] Teach Loop Vectorizor about interleaved memory accesses. 2015-06-08 06:39:56 +00:00
Trace.h
ValueTracking.h Exploit dereferenceable_or_null attribute in LICM pass 2015-05-18 18:07:00 +00:00