llvm-6502/test/Analysis
Duncan P. N. Exon Smith d905bba691 blockfreq: Approximate irreducible control flow
Previously, irreducible backedges were ignored.  With this commit,
irreducible SCCs are discovered on the fly, and modelled as loops with
multiple headers.

This approximation specifies the headers of irreducible sub-SCCs as its
entry blocks and all nodes that are targets of a backedge within it
(excluding backedges within true sub-loops).  Block frequency
calculations act as if we insert a new block that intercepts all the
edges to the headers.  All backedges and entries to the irreducible SCC
point to this imaginary block.  This imaginary block has an edge (with
even probability) to each header block.

The result is now reasonable enough that I've added a number of
testcases for irreducible control flow.  I've outlined in
`BlockFrequencyInfoImpl.h` ways to improve the approximation.

<rdar://problem/14292693>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207286 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-25 23:08:57 +00:00
..
BasicAA PR15967 Fix in basicaa for faulty returning no alias. 2014-03-26 21:30:19 +00:00
BlockFrequencyInfo blockfreq: Approximate irreducible control flow 2014-04-25 23:08:57 +00:00
BranchProbabilityInfo Fix a bug in which BranchProbabilityInfo wasn't setting branch weights of basic blocks inside loops correctly. 2014-04-14 16:56:19 +00:00
CallGraph
CostModel Don't assert in BasicTTI::getMemoryOpCost for non-simple types 2014-04-14 05:59:09 +00:00
Delinearization in findGCD of multiply expr return the gcd 2014-04-08 21:21:05 +00:00
DependenceAnalysis
Dominators
GlobalsModRef
LazyCallGraph [LCG] Add support for building persistent and connected SCCs to the 2014-04-18 10:50:32 +00:00
Lint
LoopInfo
MemoryDependenceAnalysis
PostDominators
RegionInfo
ScalarEvolution
TypeBasedAliasAnalysis