devirtualize AsmPrinter::printBasicBlockLabel since it is never overridden.
authorChris Lattner <sabre@nondot.org>
Sat, 12 Sep 2009 23:02:08 +0000 (23:02 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 12 Sep 2009 23:02:08 +0000 (23:02 +0000)
Move GetMBBSymbol up to AsmPrinter and make printBasicBlockLabel use it so that
we only have one place that decides what to name bb labels.  Hopefully various
clients of printBasicBlockLabel can start using GetMBBSymbol instead.

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

include/llvm/CodeGen/AsmPrinter.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
lib/Target/X86/AsmPrinter/X86MCInstLower.h

index 88534a54d54ec104bfc65940a0079bef0c8a4a08..cd30b39e36b0eec334f82465f7ea42dae11c8124 100644 (file)
@@ -46,6 +46,7 @@ namespace llvm {
   class MCContext;
   class MCSection;
   class MCStreamer;
+  class MCSymbol;
   class DwarfWriter;
   class Mangler;
   class MCAsmInfo;
@@ -345,6 +346,16 @@ namespace llvm {
     /// instructions, do not use this function outside of llvm-mc.
     virtual void printMCInst(const MCInst *MI);
 
+    /// GetMBBSymbol - Return the MCSymbol corresponding to the specified basic
+    /// block label.
+    MCSymbol *GetMBBSymbol(unsigned MBBID) const;
+    
+    /// printBasicBlockLabel - This method prints the label for the specified
+    /// MachineBasicBlock
+    void printBasicBlockLabel(const MachineBasicBlock *MBB,
+                              bool printAlign = false,
+                              bool printColon = false,
+                              bool printComment = true) const;
   protected:
     /// EmitZeros - Emit a block of zeros.
     ///
@@ -375,13 +386,7 @@ namespace llvm {
     /// that is an implicit def.
     virtual void printImplicitDef(const MachineInstr *MI) const;
     
-    /// printBasicBlockLabel - This method prints the label for the specified
-    /// MachineBasicBlock
-    virtual void printBasicBlockLabel(const MachineBasicBlock *MBB,
-                                      bool printAlign = false,
-                                      bool printColon = false,
-                                      bool printComment = true) const;
-                                      
+    
     /// printPICJumpTableSetLabel - This method prints a set label for the
     /// specified MachineBasicBlock for a jumptable entry.
     virtual void printPICJumpTableSetLabel(unsigned uid,
index 3e8c9131e01017b31d9fadb98b744a4165c22702..64947e824b86f80483e448dc9befcc859854cbbd 100644 (file)
@@ -28,6 +28,7 @@
 #include "llvm/MC/MCInst.h"
 #include "llvm/MC/MCSection.h"
 #include "llvm/MC/MCStreamer.h"
+#include "llvm/MC/MCSymbol.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FormattedStream.h"
@@ -1634,6 +1635,15 @@ bool AsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
   return true;
 }
 
+MCSymbol *AsmPrinter::GetMBBSymbol(unsigned MBBID) const {
+  SmallString<60> Name;
+  raw_svector_ostream(Name) << MAI->getPrivateGlobalPrefix() << "BB"
+    << getFunctionNumber() << '_' << MBBID;
+  
+  return OutContext.GetOrCreateSymbol(Name.str());
+}
+
+
 /// printBasicBlockLabel - This method prints the label for the specified
 /// MachineBasicBlock
 void AsmPrinter::printBasicBlockLabel(const MachineBasicBlock *MBB,
@@ -1646,8 +1656,8 @@ void AsmPrinter::printBasicBlockLabel(const MachineBasicBlock *MBB,
       EmitAlignment(Log2_32(Align));
   }
 
-  O << MAI->getPrivateGlobalPrefix() << "BB" << getFunctionNumber() << '_'
-    << MBB->getNumber();
+  GetMBBSymbol(MBB->getNumber())->print(O, MAI);
+  
   if (printColon)
     O << ':';
   if (printComment) {
index 023882ce5dae1c9cfa1af447ce6a96ecc1f7c997..9e8fb5a733b40eb9cc2c7b2e0336bce48f750c80 100644 (file)
@@ -45,15 +45,6 @@ MCSymbol *X86MCInstLower::GetPICBaseSymbol() const {
   return Ctx.GetOrCreateSymbol(Name.str());
 }
 
-MCSymbol *X86MCInstLower::GetMBBSymbol(unsigned MBBID) const {
-  SmallString<60> Name;
-  raw_svector_ostream(Name) << AsmPrinter.MAI->getPrivateGlobalPrefix() << "BB"
-      << AsmPrinter.getFunctionNumber() << '_' << MBBID;
-
-  return Ctx.GetOrCreateSymbol(Name.str());
-}
-
-
 
 /// LowerGlobalAddressOperand - Lower an MO_GlobalAddress operand to an
 /// MCOperand.
@@ -320,7 +311,7 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
       break;
     case MachineOperand::MO_MachineBasicBlock:
       MCOp = MCOperand::CreateExpr(MCSymbolRefExpr::Create(
-                              GetMBBSymbol(MO.getMBB()->getNumber()), Ctx));
+                       AsmPrinter.GetMBBSymbol(MO.getMBB()->getNumber()), Ctx));
       break;
     case MachineOperand::MO_GlobalAddress:
       MCOp = LowerSymbolOperand(MO, GetGlobalAddressSymbol(MO));
index 3329b90cda3db56d98b628ba063da836a00ade8a..bf529fd44e85e6024885ea26e44940a5067ac019 100644 (file)
@@ -36,7 +36,6 @@ public:
 
   MCSymbol *GetPICBaseSymbol() const;
   
-  MCSymbol *GetMBBSymbol(unsigned MBBID) const;
   MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
   MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
   MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;