aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h19
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp14
-rw-r--r--lib/Target/X86/AsmPrinter/X86MCInstLower.cpp11
-rw-r--r--lib/Target/X86/AsmPrinter/X86MCInstLower.h1
4 files changed, 25 insertions, 20 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index 88534a54d5..cd30b39e36 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -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,
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 3e8c9131e0..64947e824b 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -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) {
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
index 023882ce5d..9e8fb5a733 100644
--- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
+++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
@@ -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));
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.h b/lib/Target/X86/AsmPrinter/X86MCInstLower.h
index 3329b90cda..bf529fd44e 100644
--- a/lib/Target/X86/AsmPrinter/X86MCInstLower.h
+++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.h
@@ -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;