From 0123c1da3592e99b3fa75c81cdffa20bfc622c12 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 22 Jul 2010 21:10:04 +0000 Subject: [PATCH] X86MCInstLower now depends on AsmPrinter being around. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109154 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86MCInstLower.cpp | 36 ++++++++----------------------- lib/Target/X86/X86MCInstLower.h | 7 ++---- 2 files changed, 11 insertions(+), 32 deletions(-) diff --git a/lib/Target/X86/X86MCInstLower.cpp b/lib/Target/X86/X86MCInstLower.cpp index 3eb12a969c7..e55b7265cb9 100644 --- a/lib/Target/X86/X86MCInstLower.cpp +++ b/lib/Target/X86/X86MCInstLower.cpp @@ -29,7 +29,7 @@ using namespace llvm; X86MCInstLower::X86MCInstLower(Mangler *mang, const MachineFunction &mf, - X86AsmPrinter *asmprinter) + X86AsmPrinter &asmprinter) : Ctx(mf.getContext()), Mang(mang), MF(mf), TM(mf.getTarget()), MAI(*TM.getMCAsmInfo()), AsmPrinter(asmprinter) {} @@ -181,7 +181,7 @@ MCOperand X86MCInstLower::LowerSymbolOperand(const MachineOperand &MO, // local labels. This is only safe when the symbols are in the same // section so we are restricting it to jumptable references. MCSymbol *Label = Ctx.CreateTempSymbol(); - AsmPrinter->OutStreamer.EmitAssignment(Label, Expr); + AsmPrinter.OutStreamer.EmitAssignment(Label, Expr); Expr = MCSymbolRefExpr::Create(Label, Ctx); } break; @@ -320,38 +320,20 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const { MO.getMBB()->getSymbol(), Ctx)); break; case MachineOperand::MO_GlobalAddress: - // If we don't have an asmprinter, we're converting to MCInst to get - // instruction sizes, which doesn't need precise value information for - // symbols, just lower to a 0 immediate. - if (AsmPrinter != 0) - MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO)); - else - MCOp = MCOperand::CreateImm(0); + MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO)); break; case MachineOperand::MO_ExternalSymbol: - if (AsmPrinter != 0) - MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO)); - else - MCOp = MCOperand::CreateImm(0); + MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO)); break; case MachineOperand::MO_JumpTableIndex: - if (AsmPrinter != 0) - MCOp = LowerSymbolOperand(MO, AsmPrinter->GetJTISymbol(MO.getIndex())); - else - MCOp = MCOperand::CreateImm(0); + MCOp = LowerSymbolOperand(MO, AsmPrinter.GetJTISymbol(MO.getIndex())); break; case MachineOperand::MO_ConstantPoolIndex: - if (AsmPrinter != 0) - MCOp = LowerSymbolOperand(MO, AsmPrinter->GetCPISymbol(MO.getIndex())); - else - MCOp = MCOperand::CreateImm(0); + MCOp = LowerSymbolOperand(MO, AsmPrinter.GetCPISymbol(MO.getIndex())); break; case MachineOperand::MO_BlockAddress: - if (AsmPrinter != 0) - MCOp = LowerSymbolOperand(MO, - AsmPrinter->GetBlockAddressSymbol(MO.getBlockAddress())); - else - MCOp = MCOperand::CreateImm(0); + MCOp = LowerSymbolOperand(MO, + AsmPrinter.GetBlockAddressSymbol(MO.getBlockAddress())); break; } @@ -522,7 +504,7 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const { void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { - X86MCInstLower MCInstLowering(Mang, *MF, this); + X86MCInstLower MCInstLowering(Mang, *MF, *this); switch (MI->getOpcode()) { case TargetOpcode::DBG_VALUE: if (isVerbose() && OutStreamer.hasRawTextSupport()) { diff --git a/lib/Target/X86/X86MCInstLower.h b/lib/Target/X86/X86MCInstLower.h index 0d493c4b47e..539b09be6fd 100644 --- a/lib/Target/X86/X86MCInstLower.h +++ b/lib/Target/X86/X86MCInstLower.h @@ -33,13 +33,10 @@ class LLVM_LIBRARY_VISIBILITY X86MCInstLower { const MachineFunction &MF; const TargetMachine &TM; const MCAsmInfo &MAI; - - /// AsmPrinter - This is the asmprinter when emission is actually happening, - /// or null if an instruction is being lowered for some other reason. - X86AsmPrinter *AsmPrinter; + X86AsmPrinter &AsmPrinter; public: X86MCInstLower(Mangler *mang, const MachineFunction &MF, - X86AsmPrinter *asmprinter); + X86AsmPrinter &asmprinter); void Lower(const MachineInstr *MI, MCInst &OutMI) const;