Fix valgrind warning for gcc builds.

Sorry, I don't understand why the warning is generated (a gcc
bug?). Anyhow, the change should improve readablity. No functionality
change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199214 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Patrik Hagglund 2014-01-14 14:09:00 +00:00
parent 527fa8c18c
commit fc40386116

View File

@ -816,18 +816,17 @@ bool RegisterCoalescer::reMaterializeTrivialDef(CoalescerPair &CP,
}
if (TargetRegisterInfo::isVirtualRegister(DstReg)) {
unsigned NewIdx = NewMI->getOperand(0).getSubReg();
unsigned NewIdx;
const TargetRegisterClass *RCForInst;
if (NewIdx)
RCForInst = TRI->getMatchingSuperRegClass(MRI->getRegClass(DstReg), DefRC,
NewIdx);
if (MRI->constrainRegClass(DstReg, DefRC)) {
// The materialized instruction is quite capable of setting DstReg
// directly, but it may still have a now-trivial subregister index which
// we should clear.
NewMI->getOperand(0).setSubReg(0);
} else if (NewIdx && RCForInst) {
} else if ((NewIdx = NewMI->getOperand(0).getSubReg()) &&
(RCForInst = TRI->getMatchingSuperRegClass(
MRI->getRegClass(DstReg), DefRC, NewIdx))) {
// The subreg index on NewMI is essential; we still have to make sure
// DstReg:idx is in a class that NewMI can use.
MRI->constrainRegClass(DstReg, RCForInst);