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

Reply via email to