mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
this part implemented.
llvm-svn: 31122
This commit is contained in:
parent
5eec4941d1
commit
3826e15c8d
@ -607,35 +607,6 @@ or eax, 2
|
||||
cmp eax, 6
|
||||
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)?
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
GCC's ix86_expand_int_movcc function (in i386.c) has a ton of interesting
|
||||
|
Loading…
Reference in New Issue
Block a user