fix an overly conservative caching issue that caused memdep to
[oota-llvm.git] / lib / CodeGen / TargetInstrInfoImpl.cpp
index 349d43c72447cd6e399f9dbccccd71c9bb00e912..393e315a3214b09c8f27c9ad5d72749fc24e7165 100644 (file)
@@ -142,8 +142,10 @@ void TargetInstrInfoImpl::reMaterialize(MachineBasicBlock &MBB,
   if (TargetRegisterInfo::isVirtualRegister(DestReg)) {
     MO.setReg(DestReg);
     MO.setSubReg(SubIdx);
-  } else {
+  } else if (SubIdx) {
     MO.setReg(TRI->getSubReg(DestReg, SubIdx));
+  } else {
+    MO.setReg(DestReg);
   }
   MBB.insert(I, MI);
 }
@@ -327,7 +329,7 @@ TargetInstrInfo::isReallyTriviallyReMaterializableGeneric(const MachineInstr *
       return false;
 
     // For the def, it should be the only def of that register.
-    if (MO.isDef() && (next(MRI.def_begin(Reg)) != MRI.def_end() ||
+    if (MO.isDef() && (llvm::next(MRI.def_begin(Reg)) != MRI.def_end() ||
                        MRI.isLiveIn(Reg)))
       return false;