Issue |
136848
|
Summary |
[x86] Unable to fold table lookup into tail call
|
Labels |
backend:X86
|
Assignees |
|
Reporter |
zmodem
|
Reported by @haberman
Consider:
```
typedef void Func(void *table, long idx);
void ExtraMov(Func** table, long idx) {
return table[idx](table, idx);
}
```
Actual output:
```
ExtraMov(void (**)(void*, long), long):
mov rax, qword ptr [rdi + 8*rsi]
jmp rax
```
Desired output:
```
ExtraMov(void (**)(void*, long), long):
jmp qword ptr [rdi + 8*rsi]
```
(GCC can do it: https://godbolt.org/z/73rGW9M45)
(For 32-bit x86 we get it right, but only for -fno-pic; for -fpic we get confused: https://godbolt.org/z/1e9s787Gr)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs