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

Reply via email to