Skip to content

Commit ff9ddfd

Browse files
committed
[TailDuplicator] Add a limit on the size of predecessors
1 parent 4ff126c commit ff9ddfd

File tree

3 files changed

+169
-223
lines changed

3 files changed

+169
-223
lines changed

llvm/lib/CodeGen/TailDuplicator.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ static cl::opt<bool>
7676
static cl::opt<unsigned> TailDupLimit("tail-dup-limit", cl::init(~0U),
7777
cl::Hidden);
7878

79+
static cl::opt<unsigned> TailDupPredSizeLimit(
80+
"tail-dup-pred-size-limit",
81+
cl::desc("Maximum predecessors to consider tail duplicating."), cl::init(8),
82+
cl::Hidden);
83+
7984
void TailDuplicator::initMF(MachineFunction &MFin, bool PreRegAlloc,
8085
const MachineBranchProbabilityInfo *MBPIin,
8186
MBFIWrapper *MBFIin,
@@ -565,6 +570,8 @@ bool TailDuplicator::shouldTailDuplicate(bool IsSimple,
565570
if (TailBB.isSuccessor(&TailBB))
566571
return false;
567572

573+
if (TailDupPredSizeLimit < TailBB.pred_size())
574+
return false;
568575
// Set the limit on the cost to duplicate. When optimizing for size,
569576
// duplicate only one, because one branch instruction can be eliminated to
570577
// compensate for the duplication.

0 commit comments

Comments
 (0)