OSDN Git Service

[SystemZ] Add use of super-reg in splitMove()
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>
Fri, 17 Mar 2017 06:47:08 +0000 (06:47 +0000)
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>
Fri, 17 Mar 2017 06:47:08 +0000 (06:47 +0000)
commitdb89440b31a4298f084de6ee1c2b68acaf47eb8c
treeb2fbd51230de5174c5244e5977831d062ae3c7b1
parent0ce91864cef24f6e3460c1e8c09eaaed74a0e403
[SystemZ]  Add use of super-reg in splitMove()

If one of the subregs of the 128 bit reg is undefined when splitMove() splits
a store into two instructions, a use of an undefined physical register
results.

To remedy this, an implicit use of the super register is added onto both new
instructions, along with propagated kill and undef flags.

This was discovered with llvm-stress, and that test case is attached as
test/CodeGen/SystemZ/splitMove_undefReg_mverifier.ll

Thanks to Matthias Braun for helping with a nice explanation.

Review: Ulrich Weigand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298047 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/SystemZ/SystemZInstrInfo.cpp
test/CodeGen/SystemZ/splitMove_undefReg_mverifier.ll [new file with mode: 0644]