OSDN Git Service

DetectDeadLanes: Cleanup, assert on some impossible cases.
authorMatthias Braun <matze@braunis.de>
Fri, 6 May 2016 22:43:46 +0000 (22:43 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 6 May 2016 22:43:46 +0000 (22:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268814 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/DetectDeadLanes.cpp

index cadc40a..6909cac 100644 (file)
@@ -76,7 +76,7 @@ private:
   void transferUsedLanesStep(const MachineOperand &Def, LaneBitmask UsedLanes);
 
   /// Given a use regiser operand \p Use and a mask of defined lanes, check
-  /// if the operand belongs to a lowerToCopies() instruction, transfer the
+  /// if the operand belongs to a lowersToCopies() instruction, transfer the
   /// mask to the def and put the instruction into the worklist.
   void transferDefinedLanesStep(const MachineOperand &Use,
                                 LaneBitmask DefinedLanes);
@@ -85,7 +85,7 @@ private:
   /// of COPY-like instruction, determine which lanes are defined at the output
   /// operand \p Def.
   LaneBitmask transferDefinedLanes(const MachineOperand &Def, unsigned OpNum,
-                                   LaneBitmask DefinedLanes);
+                                   LaneBitmask DefinedLanes) const;
 
   LaneBitmask determineInitialDefinedLanes(unsigned Reg);
   LaneBitmask determineInitialUsedLanes(unsigned Reg);
@@ -294,8 +294,7 @@ void DetectDeadLanes::transferDefinedLanesStep(const MachineOperand &Use,
 }
 
 LaneBitmask DetectDeadLanes::transferDefinedLanes(const MachineOperand &Def,
-                                                  unsigned OpNum,
-                                                  LaneBitmask DefinedLanes) {
+    unsigned OpNum, LaneBitmask DefinedLanes) const {
   const MachineInstr &MI = *Def.getParent();
   // Translate DefinedLanes if necessary.
   switch (MI.getOpcode()) {
@@ -330,8 +329,8 @@ LaneBitmask DetectDeadLanes::transferDefinedLanes(const MachineOperand &Def,
     llvm_unreachable("function must be called with COPY-like instruction");
   }
 
-  unsigned SubIdx = Def.getSubReg();
-  DefinedLanes = TRI->composeSubRegIndexLaneMask(SubIdx, DefinedLanes);
+  assert(Def.getSubReg() == 0 &&
+         "Should not have subregister defs in machine SSA phase");
   DefinedLanes &= MRI->getMaxLaneMaskForVReg(Def.getReg());
   return DefinedLanes;
 }
@@ -396,9 +395,9 @@ LaneBitmask DetectDeadLanes::determineInitialDefinedLanes(unsigned Reg) {
   if (DefMI.isImplicitDef() || Def.isDead())
     return 0;
 
-  unsigned SubReg = Def.getSubReg();
-  return SubReg != 0 ? TRI->getSubRegIndexLaneMask(SubReg)
-                     : MRI->getMaxLaneMaskForVReg(Reg);
+  assert(Def.getSubReg() == 0 &&
+         "Should not have subregister defs in machine SSA phase");
+  return MRI->getMaxLaneMaskForVReg(Reg);
 }
 
 LaneBitmask DetectDeadLanes::determineInitialUsedLanes(unsigned Reg) {