add note about switch lowering

llvm-svn: 30308
This commit is contained in:
Chris Lattner 2006-09-13 23:37:16 +00:00
parent 237ccf2a51
commit 1463377ddb
1 changed files with 29 additions and 0 deletions

View File

@ -607,6 +607,34 @@ or eax, 2
cmp eax, 6 cmp eax, 6
jz label jz label
If we aren't going to do this, we should lower the switch better. We compile
the code to:
_f:
movl 8(%esp), %eax
movl 4(%esp), %ecx
cmpl $6, %ecx
jl LBB1_4 #entry
jmp LBB1_3 #entry
LBB1_3: #entry
cmpl $6, %ecx
je LBB1_1 #bb
jmp LBB1_2 #UnifiedReturnBlock
LBB1_4: #entry
cmpl $4, %ecx
jne LBB1_2 #UnifiedReturnBlock
LBB1_1: #bb
incl %eax
ret
LBB1_2: #UnifiedReturnBlock
ret
In the code above, the 'if' is turned into a 'switch' at the mid-level. It looks
like the 'lower to branches' mode could be improved a little here. In particular,
the fall-through to LBB1_3 doesn't need a branch. It would also be nice to
eliminate the redundant "cmp 6", maybe by lowering to a linear sequence of
compares if there are below a certain number of cases (instead of a binary sequence)?
//===---------------------------------------------------------------------===// //===---------------------------------------------------------------------===//
Compile: Compile:
@ -675,3 +703,4 @@ _f:
etc. etc.
//===---------------------------------------------------------------------===// //===---------------------------------------------------------------------===//