diff options
Diffstat (limited to 'lib/CodeGen/MachineModuleInfo.cpp')
| -rw-r--r-- | lib/CodeGen/MachineModuleInfo.cpp | 72 | 
1 files changed, 0 insertions, 72 deletions
| diff --git a/lib/CodeGen/MachineModuleInfo.cpp b/lib/CodeGen/MachineModuleInfo.cpp index 4b067a0aa98b..ed5bb5e5410c 100644 --- a/lib/CodeGen/MachineModuleInfo.cpp +++ b/lib/CodeGen/MachineModuleInfo.cpp @@ -293,75 +293,3 @@ unsigned MachineModuleInfo::getPersonalityIndex() const {    return 0;  } -//===----------------------------------------------------------------------===// -/// DebugLabelFolding pass - This pass prunes out redundant labels.  This allows -/// a info consumer to determine if the range of two labels is empty, by seeing -/// if the labels map to the same reduced label. - -namespace llvm { - -struct DebugLabelFolder : public MachineFunctionPass { -  static char ID; -  DebugLabelFolder() : MachineFunctionPass(&ID) {} - -  virtual void getAnalysisUsage(AnalysisUsage &AU) const { -    AU.setPreservesCFG(); -    AU.addPreservedID(MachineLoopInfoID); -    AU.addPreservedID(MachineDominatorsID); -    MachineFunctionPass::getAnalysisUsage(AU); -  } - -  virtual bool runOnMachineFunction(MachineFunction &MF); -  virtual const char *getPassName() const { return "Label Folder"; } -}; - -char DebugLabelFolder::ID = 0; - -bool DebugLabelFolder::runOnMachineFunction(MachineFunction &MF) { -  // Get machine module info. -  MachineModuleInfo *MMI = getAnalysisIfAvailable<MachineModuleInfo>(); -  if (!MMI) return false; - -  // Track if change is made. -  bool MadeChange = false; -  // No prior label to begin. -  unsigned PriorLabel = 0; - -  // Iterate through basic blocks. -  for (MachineFunction::iterator BB = MF.begin(), E = MF.end(); -       BB != E; ++BB) { -    // Iterate through instructions. -    for (MachineBasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ) { -      // Is it a label. -      if (I->isDebugLabel() && !MMI->isDbgLabelUsed(I->getOperand(0).getImm())){ -        // The label ID # is always operand #0, an immediate. -        unsigned NextLabel = I->getOperand(0).getImm(); - -        // If there was an immediate prior label. -        if (PriorLabel) { -          // Remap the current label to prior label. -          MMI->RemapLabel(NextLabel, PriorLabel); -          // Delete the current label. -          I = BB->erase(I); -          // Indicate a change has been made. -          MadeChange = true; -          continue; -        } else { -          // Start a new round. -          PriorLabel = NextLabel; -        } -       } else { -        // No consecutive labels. -        PriorLabel = 0; -      } - -      ++I; -    } -  } - -  return MadeChange; -} - -FunctionPass *createDebugLabelFoldingPass() { return new DebugLabelFolder(); } - -} | 
