llvm-project/llvm/test/Analysis
Serguei Katkov 2616bbb16d [BPI] Use metadata info before any other heuristics
Metadata potentially is more precise than any heuristics we use, so
it makes sense to use first metadata info if it is available. However it makes
sense to examine it against other strong heuristics like unreachable one.
If edge coming to unreachable block has higher probability then it is expected 
by unreachable heuristic then we use heuristic and remaining probability is
distributed among other reachable blocks equally.

An example where metadata might be more strong then unreachable heuristic is
as follows: it is possible that there are two branches and for the branch A
metadata says that its probability is (0, 2^25). For the branch B
the probability is (1, 2^25).
So the expectation is that first edge of B is hotter than first edge of A
because first edge of A did not executed at least once.
If first edge of A points to the unreachable block then using the unreachable
heuristics we'll set the probability for A to (1, 2^20) and now edge of A
becomes hotter than edge of B.
This is unexpected behavior.

This fixed the biggest part of https://bugs.llvm.org/show_bug.cgi?id=32214

Reviewers: sanjoy, junbuml, vsk, chandlerc

Reviewed By: chandlerc

Subscribers: llvm-commits, reames, davidxl

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

llvm-svn: 300440
2017-04-17 04:33:04 +00:00
..
AliasSet [AliasSetTracker] Make AST smarter about assume intrinsics that don't actually affect memory. 2016-11-07 14:11:45 +00:00
AssumptionCache Add files I seem to have dropped in my revert (r290086). 2016-12-19 08:32:13 +00:00
BasicAA Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
BlockFrequencyInfo [BFI] Add new LazyBFI analysis pass 2016-07-13 05:01:48 +00:00
BranchProbabilityInfo [BPI] Use metadata info before any other heuristics 2017-04-17 04:33:04 +00:00
CFLAliasAnalysis [Verifier] Add verification for TBAA metadata 2016-12-11 20:07:15 +00:00
CallGraph [CG] Add a new pass manager printer pass for the old call graph and 2016-03-10 11:24:11 +00:00
ConstantFolding [ConstantFolding] Fix to prevent constant folding having to repeatedly scan operands. NFCI 2017-03-21 10:17:39 +00:00
CostModel [SystemZ] Fix target specific tests 2017-04-12 17:14:46 +00:00
Delinearization [ValueTracking] Make poison propagation more aggressive 2017-02-22 06:52:32 +00:00
DemandedBits [Analysis] Support bitreverse in -demanded-bits pass 2017-04-13 16:44:25 +00:00
DependenceAnalysis [DependenceAnalysis] Check if result of getConstantPart is null 2016-04-04 18:13:18 +00:00
DivergenceAnalysis AMDGPU: Add all atomicrmw fields to atomic.inc/dec 2017-03-30 22:21:40 +00:00
DominanceFrontier Another fix the testcase introduced by r261903 - Add the missing matches 2016-02-26 03:41:47 +00:00
Dominators Remove useless pass from the pipeline in test/Analysis/Dominators/2007-01-14-BreakCritEdges.ll. 2016-07-25 16:27:34 +00:00
GlobalsModRef Fix regression from my recent GlobalsAA fix. 2016-10-24 21:47:44 +00:00
IVUsers [PM] Teach the LoopPassManager to automatically canonicalize loops by 2017-01-17 19:18:12 +00:00
LazyCallGraph [LCG] Spell the printing pass pipeline name for the lazy call graph 2016-03-10 11:24:06 +00:00
LazyValueAnalysis Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
Lint
LoopAccessAnalysis [LV/LoopAccess] Check statically if an unknown dependence distance can be 2017-02-12 09:32:53 +00:00
LoopInfo
MemoryDependenceAnalysis [PM] The assumption cache is fundamentally designed to be self-updating, 2017-01-15 00:26:18 +00:00
MemorySSA Remove readnone from invariant.group.barrier 2017-04-12 20:45:12 +00:00
PostDominators Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
ProfileSummary Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
RegionInfo Fix minor typo introduce in r297014 2017-03-06 16:03:26 +00:00
ScalarEvolution [ScalarEvolution] Re-enable Predicate implication from operations 2017-03-31 12:05:30 +00:00
ScopedNoAliasAA [ScopedNoAliasAA] Make test basic.ll less confusing 2016-03-07 17:49:10 +00:00
TypeBasedAliasAnalysis [TBAAVerifier] Be stricter around verifying scalar nodes 2016-12-29 15:47:05 +00:00
ValueTracking [ValueTracking] use nonnull argument attribute to eliminate null checks 2017-02-12 15:35:34 +00:00
alias-analysis-uses.ll Add an "addUsedAAAnalyses" helper function 2016-02-09 01:21:57 +00:00