| Issue |
71667
|
| Summary |
[X86] Blockaddress offsets are lost when performing X86 LEA fixups with slow 3-ops LEAs
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
momo5502
|
If there are indirect branches with blockaddresses, the X86FixupLEAs pass drops blockaddress offsets, when splitting up slow 3-ops LEAs, as can be seen in this example:
https://godbolt.org/z/bEsc3Poje
Before running the pass, the first instruction in bb.0 is a LEA with ebp, ebx and a blockaddress:
```
renamable $eax = LEA32r renamable $ebp, 1, renamable $ebx, target-flags(x86-gotoff) blockaddress(@square, %ir-block.1), $noreg
JMP32r killed renamable $eax
```
After the transformation, the blockaddress is missing:
```
renamable $eax = LEA32r renamable $ebx, 1, renamable $ebp, 0, $noreg
JMP32r killed renamable $eax
```
This only happens when `slow-3ops-lea` are enabled.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs