forked from OSchip/llvm-project
[SDAGBuilder] Don't create a binary tree for switches in minsize mode
This bloats codesize - all of the non-leaf nodes are extra code. llvm-svn: 280932
This commit is contained in:
parent
7771462b28
commit
c6a6144966
|
|
@ -9237,7 +9237,8 @@ void SelectionDAGBuilder::visitSwitch(const SwitchInst &SI) {
|
||||||
WorkList.pop_back();
|
WorkList.pop_back();
|
||||||
unsigned NumClusters = W.LastCluster - W.FirstCluster + 1;
|
unsigned NumClusters = W.LastCluster - W.FirstCluster + 1;
|
||||||
|
|
||||||
if (NumClusters > 3 && TM.getOptLevel() != CodeGenOpt::None) {
|
if (NumClusters > 3 && TM.getOptLevel() != CodeGenOpt::None &&
|
||||||
|
!DefaultMBB->getParent()->getFunction()->optForMinSize()) {
|
||||||
// For optimized builds, lower large range as a balanced binary tree.
|
// For optimized builds, lower large range as a balanced binary tree.
|
||||||
splitWorkItem(WorkList, W, SI.getCondition(), SwitchMBB);
|
splitWorkItem(WorkList, W, SI.getCondition(), SwitchMBB);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
; RUN: llc < %s | FileCheck %s
|
||||||
|
|
||||||
|
target datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"
|
||||||
|
target triple = "thumbv7-apple-ios8.0.0"
|
||||||
|
|
||||||
|
; CHECK: beq
|
||||||
|
; CHECK: beq
|
||||||
|
; CHECK: beq
|
||||||
|
; CHECK: cbnz
|
||||||
|
declare void @g(i32)
|
||||||
|
define void @f(i32 %val) optsize minsize {
|
||||||
|
switch i32 %val, label %def [
|
||||||
|
i32 0, label %one
|
||||||
|
i32 9, label %two
|
||||||
|
i32 994, label %three
|
||||||
|
i32 1154, label %four
|
||||||
|
]
|
||||||
|
|
||||||
|
one:
|
||||||
|
call void @g(i32 1)
|
||||||
|
ret void
|
||||||
|
two:
|
||||||
|
call void @g(i32 001)
|
||||||
|
ret void
|
||||||
|
three:
|
||||||
|
call void @g(i32 78)
|
||||||
|
ret void
|
||||||
|
four:
|
||||||
|
call void @g(i32 87)
|
||||||
|
ret void
|
||||||
|
def:
|
||||||
|
call void @g(i32 11)
|
||||||
|
ret void
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue