Issue |
91437
|
Summary |
[SystemZ] Register clobber in L128 expansion
|
Labels |
backend:SystemZ,
miscompilation
|
Assignees |
|
Reporter |
nikic
|
Running https://gist.github.com/nikic/974087a15f48f4495f25361bae3015d2 through `llc -mtriple=s390x--` gives something like this:
```
lg %r4, 14920(%r4,%r15) # 16-byte Folded Reload
lg %r5, 14928(%r4,%r15) # 16-byte Folded Reload
```
Note that `%r4` is used in the load offset calculation, but also one of the result registers.
Originally, this is a L128:
```
renamable $r2q = L128 $r15d, 14920, killed $r2d :: (load (s128) from %stack.13, align 8)
```
That gets expanded into two LG, resulting in the register clobber:
```
$r2d = LG $r15d, 14920, $r2d :: (load (s128) from %stack.13, align 8)
$r3d = LG $r15d, 14928, killed $r2d :: (load (s128) from %stack.13, align 8)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs