MachineInstr: addRegisterDefReadUndef() => setRegisterDefReadUndef()
authorMatthias Braun <matze@braunis.de>
Wed, 11 Nov 2015 00:41:58 +0000 (00:41 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 11 Nov 2015 00:41:58 +0000 (00:41 +0000)
This way we can not only add but also remove read undef flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252678 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineInstr.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/MachineInstr.cpp

index 44bc250816676adad70b68e3cc088f97cd4c5327..34681ec44e95a87c2cab7352268b6b6a1f88723a 100644 (file)
@@ -1063,7 +1063,7 @@ public:
   /// Mark all subregister defs of register @p Reg with the undef flag.
   /// This function is used when we determined to have a subregister def in an
   /// otherwise undefined super register.
-  void addRegisterDefReadUndef(unsigned Reg);
+  void setRegisterDefReadUndef(unsigned Reg, bool IsUndef = true);
 
   /// We have determined MI defines a register. Make sure there is an operand
   /// defining Reg.
index afd8db8d408f570845862a80c4fbfb99a2574d15..9451d92bd7ae3e1036e9a634eb4318ec958131c6 100644 (file)
@@ -490,7 +490,7 @@ bool LiveIntervals::computeDeadValues(LiveInterval &LI,
     if (MRI->shouldTrackSubRegLiveness(VReg)) {
       if ((I == LI.begin() || std::prev(I)->end < Def) && !VNI->isPHIDef()) {
         MachineInstr *MI = getInstructionFromIndex(Def);
-        MI->addRegisterDefReadUndef(VReg);
+        MI->setRegisterDefReadUndef(VReg);
         DeadBeforeDef = true;
       }
     }
index bc0adbb81ee839e8f93921de20db192edb3c1f03..e202810bf6e59145dce60fdb5dee66c32248b195 100644 (file)
@@ -1933,11 +1933,11 @@ void MachineInstr::clearRegisterDeads(unsigned Reg) {
   }
 }
 
-void MachineInstr::addRegisterDefReadUndef(unsigned Reg) {
+void MachineInstr::setRegisterDefReadUndef(unsigned Reg, bool IsUndef) {
   for (MachineOperand &MO : operands()) {
     if (!MO.isReg() || !MO.isDef() || MO.getReg() != Reg || MO.getSubReg() == 0)
       continue;
-    MO.setIsUndef();
+    MO.setIsUndef(IsUndef);
   }
 }