mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-30 07:00:45 +00:00
Reprioritize tests for tail duplication to be aggressive about indirect
branches even when optimizing for code size. Unless we find evidence to the contrary in the future, the special treatment for indirect branches does not have a significant effect on code size, and performance still matters with -Os. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90147 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
15217e63bc
commit
3858225afc
@ -116,14 +116,14 @@ bool TailDuplicatePass::TailDuplicate(MachineBasicBlock *TailBB,
|
|||||||
// duplicate only one, because one branch instruction can be eliminated to
|
// duplicate only one, because one branch instruction can be eliminated to
|
||||||
// compensate for the duplication.
|
// compensate for the duplication.
|
||||||
unsigned MaxDuplicateCount;
|
unsigned MaxDuplicateCount;
|
||||||
if (MF.getFunction()->hasFnAttr(Attribute::OptimizeForSize))
|
if (!TailBB->empty() && TailBB->back().getDesc().isIndirectBranch())
|
||||||
MaxDuplicateCount = 1;
|
|
||||||
else if (!TailBB->empty() && TailBB->back().getDesc().isIndirectBranch())
|
|
||||||
// If the target has hardware branch prediction that can handle indirect
|
// If the target has hardware branch prediction that can handle indirect
|
||||||
// branches, duplicating them can often make them predictable when there
|
// branches, duplicating them can often make them predictable when there
|
||||||
// are common paths through the code. The limit needs to be high enough
|
// are common paths through the code. The limit needs to be high enough
|
||||||
// to allow undoing the effects of tail merging.
|
// to allow undoing the effects of tail merging.
|
||||||
MaxDuplicateCount = 20;
|
MaxDuplicateCount = 20;
|
||||||
|
else if (MF.getFunction()->hasFnAttr(Attribute::OptimizeForSize))
|
||||||
|
MaxDuplicateCount = 1;
|
||||||
else
|
else
|
||||||
MaxDuplicateCount = TailDuplicateSize;
|
MaxDuplicateCount = TailDuplicateSize;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user