From: Patrik Hagglund Date: Tue, 14 Jan 2014 14:09:00 +0000 (+0000) Subject: Fix valgrind warning for gcc builds. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=fc40386116ac01aef455fdfd56e4c1b1baff6685;p=oota-llvm.git 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 --- diff --git a/lib/CodeGen/RegisterCoalescer.cpp b/lib/CodeGen/RegisterCoalescer.cpp index dd86c1f0103..efe7161e16f 100644 --- a/lib/CodeGen/RegisterCoalescer.cpp +++ b/lib/CodeGen/RegisterCoalescer.cpp @@ -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);