mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[GVNHoist] Enable aggressive hoisting when optimizing for code-size
Enable scalar hoisting at -Oz as it is safe to hoist scalars to a place where they are partially needed. Differential Revision: https://reviews.llvm.org/D27111 llvm-svn: 288141
This commit is contained in:
parent
b228a39a42
commit
830876ec2a
@ -202,7 +202,12 @@ public:
|
||||
GVNHoist(DominatorTree *DT, AliasAnalysis *AA, MemoryDependenceResults *MD,
|
||||
MemorySSA *MSSA, bool OptForMinSize)
|
||||
: DT(DT), AA(AA), MD(MD), MSSA(MSSA), OptForMinSize(OptForMinSize),
|
||||
HoistingGeps(OptForMinSize), HoistedCtr(0) {}
|
||||
HoistingGeps(OptForMinSize), HoistedCtr(0) {
|
||||
// Hoist as far as possible when optimizing for code-size.
|
||||
if (OptForMinSize)
|
||||
MaxNumberOfBBSInPath = -1;
|
||||
}
|
||||
|
||||
bool run(Function &F) {
|
||||
VN.setDomTree(DT);
|
||||
VN.setAliasAnalysis(AA);
|
||||
@ -500,10 +505,13 @@ private:
|
||||
bool safeToHoistScalar(const BasicBlock *HoistBB,
|
||||
SmallPtrSetImpl<const BasicBlock *> &WL,
|
||||
int &NBBsOnAllPaths) {
|
||||
// Check that the hoisted expression is needed on all paths. Enable scalar
|
||||
// hoisting at -Oz as it is safe to hoist scalars to a place where they are
|
||||
// partially needed.
|
||||
if (!OptForMinSize && !hoistingFromAllPaths(HoistBB, WL))
|
||||
// Enable scalar hoisting at -Oz as it is safe to hoist scalars to a place
|
||||
// where they are partially needed.
|
||||
if (OptForMinSize)
|
||||
return true;
|
||||
|
||||
// Check that the hoisted expression is needed on all paths.
|
||||
if (!hoistingFromAllPaths(HoistBB, WL))
|
||||
return false;
|
||||
|
||||
for (const BasicBlock *BB : WL)
|
||||
|
Loading…
Reference in New Issue
Block a user