get MMI out of the label uniquing business, just go to MCContext
authorChris Lattner <sabre@nondot.org>
Sun, 14 Mar 2010 08:36:50 +0000 (08:36 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 14 Mar 2010 08:36:50 +0000 (08:36 +0000)
to get unique assembler temporary labels.

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

13 files changed:
include/llvm/CodeGen/MachineModuleInfo.h
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/AsmPrinter/DwarfException.cpp
lib/CodeGen/MachineModuleInfo.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/CellSPU/SPURegisterInfo.cpp
lib/Target/PowerPC/PPCRegisterInfo.cpp
lib/Target/X86/X86RegisterInfo.cpp
lib/Target/XCore/XCoreInstrInfo.cpp
lib/Target/XCore/XCoreRegisterInfo.cpp
test/CodeGen/PowerPC/ppc-prologue.ll
test/CodeGen/X86/2009-03-13-PHIElimBug.ll
test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll

index 6783599be3930b5f1a7982a2952a6f4f79aaddb9..30f99db85b2ff8ca0aa8db4454934e9fb6ebf060 100644 (file)
@@ -102,9 +102,6 @@ class MachineModuleInfo : public ImmutablePass {
   /// want.
   MachineModuleInfoImpl *ObjFileMMI;
 
-  /// NextLabelIDToReturn - Unique ID counter for labels.
-  unsigned NextLabelIDToReturn;
-  
   // FrameMoves - List of moves done by a function's prolog.  Used to construct
   // frame maps by debug and exception handling consumers.
   std::vector<MachineMove> FrameMoves;
@@ -201,21 +198,12 @@ public:
   bool callsUnwindInit() const { return CallsUnwindInit; }
   void setCallsUnwindInit(bool b) { CallsUnwindInit = b; }
   
-  /// NextLabelID - Return the next unique label id.
-  ///
-  unsigned NextLabelID() {
-    return NextLabelIDToReturn++;
-  }
-  
-  /// getLabelSym - Turn a label ID into a symbol.
-  MCSymbol *getLabelSym(unsigned ID);
-  
   /// getFrameMoves - Returns a reference to a list of moves done in the current
   /// function's prologue.  Used to construct frame maps for debug and exception
   /// handling comsumers.
   std::vector<MachineMove> &getFrameMoves() { return FrameMoves; }
   
-  //===-EH-----------------------------------------------------------------===//
+  //===- EH ---------------------------------------------------------------===//
 
   /// getOrCreateLandingPadInfo - Find or create an LandingPadInfo for the
   /// specified MachineBasicBlock.
index 37769421b44bceb4a2600f98afb619ceca5c21bc..41d24bb37dbeda33a53058764fad89dc20554716 100644 (file)
@@ -1972,7 +1972,7 @@ void DwarfDebug::endScope(const MachineInstr *MI) {
   if (I == DbgScopeEndMap.end())
     return;
 
-  MCSymbol *Label = MMI->getLabelSym(MMI->NextLabelID());
+  MCSymbol *Label = MMI->getContext().CreateTempSymbol();
   Asm->OutStreamer.EmitLabel(Label);
 
   SmallVector<DbgScope*, 2> &SD = I->second;
@@ -2220,7 +2220,7 @@ MCSymbol *DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, MDNode *S) {
     assert(0 && "Unexpected scope info");
 
   unsigned Src = GetOrCreateSourceID(Dir, Fn);
-  MCSymbol *Label = MMI->getLabelSym(MMI->NextLabelID());
+  MCSymbol *Label = MMI->getContext().CreateTempSymbol();
   Lines.push_back(SrcLineInfo(Line, Col, Src, Label));
 
   if (TimePassesIsEnabled)
index f7b6bc03120105b5f31369215de74cf65506a9ce..4946b4c3c25e7b939f13abe89c1ec113a2fd7648 100644 (file)
@@ -471,7 +471,6 @@ ComputeCallSiteTable(SmallVectorImpl<CallSiteEntry> &CallSites,
       if (!MI->isLabel()) {
         if (MI->getDesc().isCall())
           SawPotentiallyThrowing |= !CallToNoUnwindFunction(MI);
-
         continue;
       }
 
index e7373711cb78513c6add7428dde1e30267d4f612..fdbda8f715fa6f1b6f2aef14c2fad2905eb30cca 100644 (file)
@@ -22,7 +22,6 @@
 #include "llvm/Target/TargetInstrInfo.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetOptions.h"
-#include "llvm/MC/MCAsmInfo.h"
 #include "llvm/MC/MCSymbol.h"
 #include "llvm/Support/Dwarf.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -41,7 +40,7 @@ MachineModuleInfoImpl::~MachineModuleInfoImpl() {}
 
 MachineModuleInfo::MachineModuleInfo(const MCAsmInfo &MAI)
 : ImmutablePass(&ID), Context(MAI),
-  ObjFileMMI(0), NextLabelIDToReturn(1), 
+  ObjFileMMI(0),
   CurCallSite(0), CallsEHReturn(0), CallsUnwindInit(0), DbgInfoAvailable(false){
   // Always emit some info, by default "no personality" info.
   Personalities.push_back(NULL);
@@ -70,12 +69,6 @@ bool MachineModuleInfo::doFinalization() {
   return false;
 }
 
-/// getLabelSym - Turn a label ID into a symbol.
-MCSymbol *MachineModuleInfo::getLabelSym(unsigned ID) {
-  return Context.GetOrCreateTemporarySymbol
-    (Twine(Context.getAsmInfo().getPrivateGlobalPrefix()) + "label" +Twine(ID));
-}
-
 /// EndFunction - Discard function meta information.
 ///
 void MachineModuleInfo::EndFunction() {
@@ -140,7 +133,7 @@ void MachineModuleInfo::addInvoke(MachineBasicBlock *LandingPad,
 /// addLandingPad - Provide the label of a try LandingPad block.
 ///
 MCSymbol *MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) {
-  MCSymbol *LandingPadLabel = getLabelSym(NextLabelID());
+  MCSymbol *LandingPadLabel = Context.CreateTempSymbol();
   LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
   LP.LandingPadLabel = LandingPadLabel;
   return LandingPadLabel;
index 00ee13f7b1384ff698a08cc6f6edfa81ca505d74..fc14e9047ea4729200fa57991dca9be2105ffe5f 100644 (file)
@@ -4362,7 +4362,7 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee,
   if (LandingPad && MMI) {
     // Insert a label before the invoke call to mark the try range.  This can be
     // used to detect deletion of the invoke via the MachineModuleInfo.
-    BeginLabel = MMI->getLabelSym(MMI->NextLabelID());
+    BeginLabel = MMI->getContext().CreateTempSymbol();
 
     // For SjLj, keep track of which landing pads go with which invokes
     // so as to maintain the ordering of pads in the LSDA.
@@ -4464,7 +4464,7 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee,
   if (LandingPad && MMI) {
     // Insert a label at the end of the invoke call to mark the try range.  This
     // can be used to detect deletion of the invoke via the MachineModuleInfo.
-    MCSymbol *EndLabel = MMI->getLabelSym(MMI->NextLabelID());
+    MCSymbol *EndLabel = MMI->getContext().CreateTempSymbol();
     DAG.setRoot(DAG.getEHLabel(getCurDebugLoc(), getRoot(), EndLabel));
 
     // Inform MachineModuleInfo of range.
index daa39a8d36f1137f537ba231251fa98ccdbf29e8..8c78bab37b6fb0a517d363200526873ba274d6ed 100644 (file)
@@ -452,7 +452,7 @@ void SPURegisterInfo::emitPrologue(MachineFunction &MF) const
     FrameSize = -(FrameSize + SPUFrameInfo::minStackSize());
     if (hasDebugInfo) {
       // Mark effective beginning of when frame pointer becomes valid.
-      FrameLabel = MMI->getLabelSym(MMI->NextLabelID());
+      FrameLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, dl, TII.get(SPU::DBG_LABEL)).addSym(FrameLabel);
     }
 
@@ -514,7 +514,7 @@ void SPURegisterInfo::emitPrologue(MachineFunction &MF) const
       }
 
       // Mark effective beginning of when frame pointer is ready.
-      MCSymbol *ReadyLabel = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *ReadyLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, dl, TII.get(SPU::DBG_LABEL)).addSym(ReadyLabel);
 
       MachineLocation FPDst(SPU::R1);
@@ -530,9 +530,8 @@ void SPURegisterInfo::emitPrologue(MachineFunction &MF) const
       dl = MBBI->getDebugLoc();
 
       // Insert terminator label
-      unsigned BranchLabelId = MMI->NextLabelID();
       BuildMI(MBB, MBBI, dl, TII.get(SPU::DBG_LABEL))
-        .addSym(MMI->getLabelSym(BranchLabelId));
+        .addSym(MMI->getContext().CreateTempSymbol());
     }
   }
 }
index 744f6c6b86d1c0a67b1b5ac798a0702977a0fdee..6e7880e22ce23ef88c79409d799639525ef099d9 100644 (file)
@@ -1446,7 +1446,7 @@ PPCRegisterInfo::emitPrologue(MachineFunction &MF) const {
   // reverse order.
   if (needsFrameMoves) {
     // Mark effective beginning of when frame pointer becomes valid.
-    FrameLabel = MMI->getLabelSym(MMI->NextLabelID());
+    FrameLabel = MMI->getContext().CreateTempSymbol();
     BuildMI(MBB, MBBI, dl, TII.get(PPC::DBG_LABEL)).addSym(FrameLabel);
   
     // Show update of SP.
@@ -1487,7 +1487,7 @@ PPCRegisterInfo::emitPrologue(MachineFunction &MF) const {
     }
 
     if (needsFrameMoves) {
-      ReadyLabel = MMI->getLabelSym(MMI->NextLabelID());
+      ReadyLabel = MMI->getContext().CreateTempSymbol();
 
       // Mark effective beginning of when frame pointer is ready.
       BuildMI(MBB, MBBI, dl, TII.get(PPC::DBG_LABEL)).addSym(ReadyLabel);
index f1574cb23ae5e1ef83a3ed1b4824e65c6bb2199b..3238ccebb99f854e99f3cfcbd2e9cbb50e4a71c7 100644 (file)
@@ -959,7 +959,7 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
 
     if (needsFrameMoves) {
       // Mark the place where EBP/RBP was saved.
-      MCSymbol *FrameLabel = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *FrameLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, DL, TII.get(X86::DBG_LABEL)).addSym(FrameLabel);
 
       // Define the current CFA rule to use the provided offset.
@@ -987,7 +987,7 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
 
     if (needsFrameMoves) {
       // Mark effective beginning of when frame pointer becomes valid.
-      MCSymbol *FrameLabel = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *FrameLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, DL, TII.get(X86::DBG_LABEL)).addSym(FrameLabel);
 
       // Define the current CFA to use the EBP/RBP register.
@@ -1027,7 +1027,7 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
 
     if (!HasFP && needsFrameMoves) {
       // Mark callee-saved push instruction.
-      MCSymbol *Label = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *Label = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, DL, TII.get(X86::DBG_LABEL)).addSym(Label);
 
       // Define the current CFA rule to use the provided offset.
@@ -1099,7 +1099,7 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
 
   if ((NumBytes || PushedRegs) && needsFrameMoves) {
     // Mark end of stack pointer adjustment.
-    MCSymbol *Label = MMI->getLabelSym(MMI->NextLabelID());
+    MCSymbol *Label = MMI->getContext().CreateTempSymbol();
     BuildMI(MBB, MBBI, DL, TII.get(X86::DBG_LABEL)).addSym(Label);
 
     if (!HasFP && NumBytes) {
index 1c3e33fb701ed99c0bf5570ebe8226c2042f313d..e5f5a6dbd38af67665e0febf1712c86789a18856 100644 (file)
@@ -429,7 +429,7 @@ bool XCoreInstrInfo::spillCalleeSavedRegisters(MachineBasicBlock &MBB,
     storeRegToStackSlot(MBB, MI, it->getReg(), true,
                         it->getFrameIdx(), it->getRegClass());
     if (emitFrameMoves) {
-      MCSymbol *SaveLabel = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *SaveLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MI, DL, get(XCore::DBG_LABEL)).addSym(SaveLabel);
       XFI->getSpillLabels().push_back(std::make_pair(SaveLabel, *it));
     }
index 856ae36ed3992e500b55bf4531c583ceb093cbe7..88925047ccd75dbb3e6ea12db767bf3fb66a7ef2 100644 (file)
@@ -456,7 +456,7 @@ void XCoreRegisterInfo::emitPrologue(MachineFunction &MF) const {
       std::vector<MachineMove> &Moves = MMI->getFrameMoves();
       
       // Show update of SP.
-      MCSymbol *FrameLabel = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *FrameLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, dl, TII.get(XCore::DBG_LABEL)).addSym(FrameLabel);
       
       MachineLocation SPDst(MachineLocation::VirtualFP);
@@ -475,7 +475,7 @@ void XCoreRegisterInfo::emitPrologue(MachineFunction &MF) const {
       MBB.addLiveIn(XCore::LR);
       
       if (emitFrameMoves) {
-        MCSymbol *SaveLRLabel = MMI->getLabelSym(MMI->NextLabelID());
+        MCSymbol *SaveLRLabel = MMI->getContext().CreateTempSymbol();
         BuildMI(MBB, MBBI, dl, TII.get(XCore::DBG_LABEL)).addSym(SaveLRLabel);
         MachineLocation CSDst(MachineLocation::VirtualFP, LRSpillOffset);
         MachineLocation CSSrc(XCore::LR);
@@ -491,7 +491,7 @@ void XCoreRegisterInfo::emitPrologue(MachineFunction &MF) const {
     // R10 is live-in. It is killed at the spill.
     MBB.addLiveIn(XCore::R10);
     if (emitFrameMoves) {
-      MCSymbol *SaveR10Label = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *SaveR10Label = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, dl, TII.get(XCore::DBG_LABEL)).addSym(SaveR10Label);
       MachineLocation CSDst(MachineLocation::VirtualFP, FPSpillOffset);
       MachineLocation CSSrc(XCore::R10);
@@ -503,7 +503,7 @@ void XCoreRegisterInfo::emitPrologue(MachineFunction &MF) const {
       .addImm(0);
     if (emitFrameMoves) {
       // Show FP is now valid.
-      MCSymbol *FrameLabel = MMI->getLabelSym(MMI->NextLabelID());
+      MCSymbol *FrameLabel = MMI->getContext().CreateTempSymbol();
       BuildMI(MBB, MBBI, dl, TII.get(XCore::DBG_LABEL)).addSym(FrameLabel);
       MachineLocation SPDst(FramePtr);
       MachineLocation SPSrc(MachineLocation::VirtualFP);
index e49dcb82c60df44799ae505512de24b32902dc93..2ebfd3c319fce1381386c92e630956ac9c8dccc3 100644 (file)
@@ -5,9 +5,9 @@ define i32 @_Z4funci(i32 %a) ssp {
 ; CHECK-NEXT:  stw r31, -4(r1)
 ; CHECK-NEXT:  stw r0, 8(r1)
 ; CHECK-NEXT:  stwu r1, -80(r1)
-; CHECK-NEXT: Llabel1:
+; CHECK-NEXT: Ltmp0:
 ; CHECK-NEXT:  mr r31, r1
-; CHECK-NEXT: Llabel2:
+; CHECK-NEXT: Ltmp1:
 entry:
   %a_addr = alloca i32                            ; <i32*> [#uses=2]
   %retval = alloca i32                            ; <i32*> [#uses=2]
index ad7f9f7d1c11e79cf2732f6fb4b844ee6bb4c801..8d426271a1946821c2f3b0617a3c4f5dc7aff731 100644 (file)
@@ -28,5 +28,5 @@ lpad:         ; preds = %cont, %entry
 }
 
 ; CHECK: call{{.*}}f
-; CHECK-NEXT: Llabel1:
+; CHECK-NEXT: Ltmp0:
 ; CHECK-NEXT: movl %eax, %esi
index 11c410173fcb27e0ef9a77b02aeac177147ff8a9..da493d4910e163af39915ce3620a259dc5b05879 100644 (file)
@@ -21,4 +21,4 @@ lpad:         ; preds = %cont, %entry
 }
 
 ; CHECK: lpad
-; CHECK-NEXT: Llabel
+; CHECK-NEXT: Ltmp