diff options
author | Chris Lattner <sabre@nondot.org> | 2009-09-12 20:45:03 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-09-12 20:45:03 +0000 |
commit | b6a2fc080f47eabdcaabf0101e9ca7c95e9d8bdc (patch) | |
tree | 1c32b7ff26477d32bff9f9ff6d722bacc3ed888d | |
parent | 8fea32f9ff5cec2165661a3da986abe29c9bddb1 (diff) |
eliminate the "MBBLabel" MCOperand type, and just use a MCSymbol for
MBB labels like everything else.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81628 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/MC/MCInst.h | 22 | ||||
-rw-r--r-- | lib/MC/MCInst.cpp | 3 | ||||
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp | 5 | ||||
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86MCInstLower.cpp | 14 | ||||
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86MCInstLower.h | 1 |
5 files changed, 12 insertions, 33 deletions
diff --git a/include/llvm/MC/MCInst.h b/include/llvm/MC/MCInst.h index 10a896a668..0fc4d186b9 100644 --- a/include/llvm/MC/MCInst.h +++ b/include/llvm/MC/MCInst.h @@ -31,7 +31,6 @@ class MCOperand { kInvalid, ///< Uninitialized. kRegister, ///< Register operand. kImmediate, ///< Immediate operand. - kMBBLabel, ///< Basic block label. kExpr ///< Relocatable immediate operand. }; unsigned char Kind; @@ -40,10 +39,6 @@ class MCOperand { unsigned RegVal; int64_t ImmVal; const MCExpr *ExprVal; - struct { - unsigned FunctionNo; - unsigned BlockNo; - } MBBLabel; }; public: @@ -53,7 +48,6 @@ public: bool isValid() const { return Kind != kInvalid; } bool isReg() const { return Kind == kRegister; } bool isImm() const { return Kind == kImmediate; } - bool isMBBLabel() const { return Kind == kMBBLabel; } bool isExpr() const { return Kind == kExpr; } /// getReg - Returns the register number. @@ -77,15 +71,6 @@ public: ImmVal = Val; } - unsigned getMBBLabelFunction() const { - assert(isMBBLabel() && "This is not a machine basic block"); - return MBBLabel.FunctionNo; - } - unsigned getMBBLabelBlock() const { - assert(isMBBLabel() && "This is not a machine basic block"); - return MBBLabel.BlockNo; - } - const MCExpr *getExpr() const { assert(isExpr() && "This is not an expression"); return ExprVal; @@ -107,13 +92,6 @@ public: Op.ImmVal = Val; return Op; } - static MCOperand CreateMBBLabel(unsigned Fn, unsigned MBB) { - MCOperand Op; - Op.Kind = kMBBLabel; - Op.MBBLabel.FunctionNo = Fn; - Op.MBBLabel.BlockNo = MBB; - return Op; - } static MCOperand CreateExpr(const MCExpr *Val) { MCOperand Op; Op.Kind = kExpr; diff --git a/lib/MC/MCInst.cpp b/lib/MC/MCInst.cpp index f19056bc9a..d05031870a 100644 --- a/lib/MC/MCInst.cpp +++ b/lib/MC/MCInst.cpp @@ -21,9 +21,6 @@ void MCOperand::print(raw_ostream &OS, const MCAsmInfo *MAI) const { OS << "Reg:" << getReg(); else if (isImm()) OS << "Imm:" << getImm(); - else if (isMBBLabel()) - OS << "MBB:(" << getMBBLabelFunction() << "," - << getMBBLabelBlock() << ")"; else if (isExpr()) { OS << "Expr:("; getExpr()->print(OS, MAI); diff --git a/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp index 9841d708d8..2c0b5689ae 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp @@ -58,11 +58,6 @@ void X86ATTAsmPrinter::print_pcrel_imm(const MCInst *MI, unsigned OpNo) { O << Op.getImm(); else if (Op.isExpr()) Op.getExpr()->print(O, MAI); - else if (Op.isMBBLabel()) - // FIXME: Keep in sync with printBasicBlockLabel. printBasicBlockLabel - // should eventually call into this code, not the other way around. - O << MAI->getPrivateGlobalPrefix() << "BB" << Op.getMBBLabelFunction() - << '_' << Op.getMBBLabelBlock(); else llvm_unreachable("Unknown pcrel immediate operand"); } diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp index ed8207415f..9946506441 100644 --- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp +++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp @@ -45,6 +45,16 @@ MCSymbol *X86MCInstLower::GetPICBaseSymbol() const { return Ctx.GetOrCreateSymbol(Name.str()); } +MCOperand X86MCInstLower::LowerMBBOperand(const MachineOperand &MO) const { + SmallString<60> Name; + raw_svector_ostream(Name) << AsmPrinter.MAI->getPrivateGlobalPrefix() << "BB" + << AsmPrinter.getFunctionNumber() << '_' << MO.getMBB()->getNumber(); + + MCSymbol *Sym = Ctx.GetOrCreateSymbol(Name.str()); + return MCOperand::CreateExpr(MCSymbolRefExpr::Create(Sym, Ctx)); +} + + /// LowerGlobalAddressOperand - Lower an MO_GlobalAddress operand to an /// MCOperand. @@ -331,9 +341,7 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const { MCOp = MCOperand::CreateImm(MO.getImm()); break; case MachineOperand::MO_MachineBasicBlock: -// FIXME: Kill MBBLabel operand type! - MCOp = MCOperand::CreateMBBLabel(AsmPrinter.getFunctionNumber(), - MO.getMBB()->getNumber()); + MCOp = LowerMBBOperand(MO); 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 de85755d72..b7b2bb0eb4 100644 --- a/lib/Target/X86/AsmPrinter/X86MCInstLower.h +++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.h @@ -37,6 +37,7 @@ public: private: const X86Subtarget &getSubtarget() const; + MCOperand LowerMBBOperand(const MachineOperand &MO) const; MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const; MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const; MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const; |