mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-07 14:33:15 +00:00
Note switch-lowering inefficiency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107565 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
68b559e5f3
commit
b4a74c1d82
@ -1888,3 +1888,39 @@ of the ADD, and replacing the ADD with the ADDE, should give the desired result.
|
||||
(That said, we are doing a lot better than gcc on this testcase. :) )
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Switch lowering generates less than ideal code for the following switch:
|
||||
define void @a(i32 %x) nounwind {
|
||||
entry:
|
||||
switch i32 %x, label %if.end [
|
||||
i32 0, label %if.then
|
||||
i32 1, label %if.then
|
||||
i32 2, label %if.then
|
||||
i32 3, label %if.then
|
||||
i32 5, label %if.then
|
||||
]
|
||||
if.then:
|
||||
tail call void @foo() nounwind
|
||||
ret void
|
||||
if.end:
|
||||
ret void
|
||||
}
|
||||
declare void @foo()
|
||||
|
||||
Generated code on x86-64 (other platforms give similar results):
|
||||
a:
|
||||
cmpl $5, %edi
|
||||
ja .LBB0_2
|
||||
movl %edi, %eax
|
||||
movl $47, %ecx
|
||||
btq %rax, %rcx
|
||||
jb .LBB0_3
|
||||
.LBB0_2:
|
||||
ret
|
||||
.LBB0_3:
|
||||
xorb %al, %al
|
||||
jmp foo@PLT # TAILCALL
|
||||
|
||||
The movl+movl+btq+jb could be simplified to a cmpl+jne.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
Loading…
x
Reference in New Issue
Block a user