mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-21 21:11:36 +00:00
Make emission of jump tables a bit less conservative; they are now required
to be only 31.25% dense, rather than 75% dense. llvm-svn: 28165
This commit is contained in:
parent
0fb3fc3626
commit
1f359b07de
@ -880,9 +880,9 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) {
|
||||
const BasicBlock *LLVMBB = CurMBB->getBasicBlock();
|
||||
Reloc::Model Relocs = TLI.getTargetMachine().getRelocationModel();
|
||||
|
||||
// If the switch has more than 5 blocks, and at least 75% dense, then emit a
|
||||
// jump table rather than lowering the switch to a binary tree of conditional
|
||||
// branches.
|
||||
// If the switch has more than 5 blocks, and at least 31.25% dense, and the
|
||||
// target supports indirect branches, then emit a jump table rather than
|
||||
// lowering the switch to a binary tree of conditional branches.
|
||||
// FIXME: Make this work with PIC code
|
||||
if (TLI.isOperationLegal(ISD::BRIND, TLI.getPointerTy()) &&
|
||||
(Relocs == Reloc::Static || Relocs == Reloc::DynamicNoPIC) &&
|
||||
@ -891,7 +891,7 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) {
|
||||
uint64_t Last = cast<ConstantIntegral>(Cases.back().first)->getRawValue();
|
||||
double Density = (double)Cases.size() / (double)((Last - First) + 1ULL);
|
||||
|
||||
if (Density >= 0.75) {
|
||||
if (Density >= 0.3125) {
|
||||
// Create a new basic block to hold the code for loading the address
|
||||
// of the jump table, and jumping to it. Update successor information;
|
||||
// we will either branch to the default case for the switch, or the jump
|
||||
|
Loading…
x
Reference in New Issue
Block a user