Fix valgrind warning for gcc builds.
authorPatrik Hagglund <patrik.h.hagglund@ericsson.com>
Tue, 14 Jan 2014 14:09:00 +0000 (14:09 +0000)
committerPatrik Hagglund <patrik.h.hagglund@ericsson.com>
Tue, 14 Jan 2014 14:09:00 +0000 (14:09 +0000)
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

lib/CodeGen/RegisterCoalescer.cpp

index dd86c1f01035341e3028959412faf13a60ca93a4..efe7161e16fa3bf4c2accbbcccb31a9d98f6b503 100644 (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);