createMCInstPrinter doesn't need TargetMachine anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134525 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2011-07-06 19:45:42 +00:00
parent a3574fb7e5
commit b262799d49
22 changed files with 24 additions and 57 deletions

View File

@ -85,7 +85,6 @@ namespace llvm {
TargetMachine &TM);
typedef MCDisassembler *(*MCDisassemblerCtorTy)(const Target &T);
typedef MCInstPrinter *(*MCInstPrinterCtorTy)(const Target &T,
TargetMachine &TM,
unsigned SyntaxVariant,
const MCAsmInfo &MAI);
typedef MCCodeEmitter *(*CodeEmitterCtorTy)(const Target &T,
@ -334,12 +333,11 @@ namespace llvm {
return MCDisassemblerCtorFn(*this);
}
MCInstPrinter *createMCInstPrinter(TargetMachine &TM,
unsigned SyntaxVariant,
MCInstPrinter *createMCInstPrinter(unsigned SyntaxVariant,
const MCAsmInfo &MAI) const {
if (!MCInstPrinterCtorFn)
return 0;
return MCInstPrinterCtorFn(*this, TM, SyntaxVariant, MAI);
return MCInstPrinterCtorFn(*this, SyntaxVariant, MAI);
}

View File

@ -136,7 +136,7 @@ bool LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
default: return true;
case CGFT_AssemblyFile: {
MCInstPrinter *InstPrinter =
getTarget().createMCInstPrinter(*this, MAI.getAssemblerDialect(), MAI);
getTarget().createMCInstPrinter(MAI.getAssemblerDialect(), MAI);
// Create a code emitter if asked to show the encoding.
MCCodeEmitter *MCE = 0;

View File

@ -45,6 +45,7 @@ void ScheduleDAG::EmitPhysRegCopy(SUnit *SU,
unsigned Reg = 0;
for (SUnit::const_succ_iterator II = SU->Succs.begin(),
EE = SU->Succs.end(); II != EE; ++II) {
if (II->isCtrl()) continue; // ignore chain preds
if (II->getReg()) {
Reg = II->getReg();
break;

View File

@ -79,7 +79,7 @@ LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo,
// Set up the instruction printer.
int AsmPrinterVariant = MAI->getAssemblerDialect();
MCInstPrinter *IP = TheTarget->createMCInstPrinter(*TM, AsmPrinterVariant,
MCInstPrinter *IP = TheTarget->createMCInstPrinter(AsmPrinterVariant,
*MAI);
assert(IP && "Unable to create instruction printer!");

View File

@ -193,8 +193,7 @@ EDDisassembler::EDDisassembler(CPUKey &key) :
InstString.reset(new std::string);
InstStream.reset(new raw_string_ostream(*InstString));
InstPrinter.reset(Tgt->createMCInstPrinter(*TargetMachine, LLVMSyntaxVariant,
*AsmInfo));
InstPrinter.reset(Tgt->createMCInstPrinter(LLVMSyntaxVariant, *AsmInfo));
if (!InstPrinter)
return;

View File

@ -1954,11 +1954,10 @@ void ARMAsmPrinter::EmitInstruction(const MachineInstr *MI) {
//===----------------------------------------------------------------------===//
static MCInstPrinter *createARMMCInstPrinter(const Target &T,
TargetMachine &TM,
unsigned SyntaxVariant,
const MCAsmInfo &MAI) {
if (SyntaxVariant == 0)
return new ARMInstPrinter(TM, MAI);
return new ARMInstPrinter(MAI);
return 0;
}

View File

@ -19,11 +19,10 @@
namespace llvm {
class MCOperand;
class TargetMachine;
class ARMInstPrinter : public MCInstPrinter {
public:
ARMInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
ARMInstPrinter(const MCAsmInfo &MAI)
: MCInstPrinter(MAI) {}
virtual void printInst(const MCInst *MI, raw_ostream &O);

View File

@ -18,11 +18,10 @@
namespace llvm {
class MCOperand;
class TargetMachine;
class MBlazeInstPrinter : public MCInstPrinter {
public:
MBlazeInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
MBlazeInstPrinter(const MCAsmInfo &MAI)
: MCInstPrinter(MAI) {}
virtual void printInst(const MCInst *MI, raw_ostream &O);

View File

@ -319,11 +319,10 @@ isBlockOnlyReachableByFallthrough(const MachineBasicBlock *MBB) const {
}
static MCInstPrinter *createMBlazeMCInstPrinter(const Target &T,
TargetMachine &TM,
unsigned SyntaxVariant,
const MCAsmInfo &MAI) {
if (SyntaxVariant == 0)
return new MBlazeInstPrinter(TM, MAI);
return new MBlazeInstPrinter(MAI);
return 0;
}

View File

@ -18,11 +18,10 @@
namespace llvm {
class MCOperand;
class TargetMachine;
class MSP430InstPrinter : public MCInstPrinter {
public:
MSP430InstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
MSP430InstPrinter(const MCAsmInfo &MAI)
: MCInstPrinter(MAI) {}
virtual void printInst(const MCInst *MI, raw_ostream &O);

View File

@ -164,11 +164,10 @@ void MSP430AsmPrinter::EmitInstruction(const MachineInstr *MI) {
}
static MCInstPrinter *createMSP430MCInstPrinter(const Target &T,
TargetMachine &TM,
unsigned SyntaxVariant,
const MCAsmInfo &MAI) {
if (SyntaxVariant == 0)
return new MSP430InstPrinter(TM, MAI);
return new MSP430InstPrinter(MAI);
return 0;
}

View File

@ -19,14 +19,12 @@
namespace llvm {
class MCOperand;
class TargetMachine;
class PPCInstPrinter : public MCInstPrinter {
// 0 -> AIX, 1 -> Darwin.
unsigned SyntaxVariant;
public:
PPCInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI,
unsigned syntaxVariant)
PPCInstPrinter(const MCAsmInfo &MAI, unsigned syntaxVariant)
: MCInstPrinter(MAI), SyntaxVariant(syntaxVariant) {}
bool isDarwinSyntax() const {

View File

@ -680,10 +680,9 @@ static AsmPrinter *createPPCAsmPrinterPass(TargetMachine &tm,
}
static MCInstPrinter *createPPCMCInstPrinter(const Target &T,
TargetMachine &TM,
unsigned SyntaxVariant,
const MCAsmInfo &MAI) {
return new PPCInstPrinter(TM, MAI, SyntaxVariant);
return new PPCInstPrinter(MAI, SyntaxVariant);
}

View File

@ -15,7 +15,6 @@
#define DEBUG_TYPE "asm-printer"
#include "X86ATTInstPrinter.h"
#include "X86InstComments.h"
#include "X86Subtarget.h"
#include "MCTargetDesc/X86TargetDesc.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCAsmInfo.h"
@ -31,7 +30,7 @@ using namespace llvm;
#define PRINT_ALIAS_INSTR
#include "X86GenAsmWriter.inc"
X86ATTInstPrinter::X86ATTInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
X86ATTInstPrinter::X86ATTInstPrinter(const MCAsmInfo &MAI)
: MCInstPrinter(MAI) {
}

View File

@ -19,12 +19,10 @@
namespace llvm {
class MCOperand;
class X86Subtarget;
class TargetMachine;
class X86ATTInstPrinter : public MCInstPrinter {
public:
X86ATTInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI);
X86ATTInstPrinter(const MCAsmInfo &MAI);
virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
virtual void printInst(const MCInst *MI, raw_ostream &OS);

View File

@ -15,7 +15,6 @@
#define DEBUG_TYPE "asm-printer"
#include "X86IntelInstPrinter.h"
#include "X86InstComments.h"
#include "X86Subtarget.h"
#include "MCTargetDesc/X86TargetDesc.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCAsmInfo.h"

View File

@ -20,11 +20,10 @@
namespace llvm {
class MCOperand;
class TargetMachine;
class X86IntelInstPrinter : public MCInstPrinter {
public:
X86IntelInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
X86IntelInstPrinter(const MCAsmInfo &MAI)
: MCInstPrinter(MAI) {}
virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;

View File

@ -709,13 +709,12 @@ void X86AsmPrinter::PrintDebugValueComment(const MachineInstr *MI,
//===----------------------------------------------------------------------===//
static MCInstPrinter *createX86MCInstPrinter(const Target &T,
TargetMachine &TM,
unsigned SyntaxVariant,
const MCAsmInfo &MAI) {
if (SyntaxVariant == 0)
return new X86ATTInstPrinter(TM, MAI);
return new X86ATTInstPrinter(MAI);
if (SyntaxVariant == 1)
return new X86IntelInstPrinter(TM, MAI);
return new X86IntelInstPrinter(MAI);
return 0;
}

View File

@ -127,7 +127,7 @@ static bool ByteArrayFromString(ByteArrayTy &ByteArray,
return false;
}
int Disassembler::disassemble(const Target &T, TargetMachine &TM,
int Disassembler::disassemble(const Target &T,
const std::string &Triple,
MemoryBuffer &Buffer,
raw_ostream &Out) {
@ -146,7 +146,7 @@ int Disassembler::disassemble(const Target &T, TargetMachine &TM,
}
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(TM, AsmPrinterVariant,
OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(AsmPrinterVariant,
*AsmInfo));
if (!IP) {
errs() << "error: no instruction printer for target " << Triple << '\n';

View File

@ -21,13 +21,11 @@ namespace llvm {
class MemoryBuffer;
class Target;
class TargetMachine;
class raw_ostream;
class Disassembler {
public:
static int disassemble(const Target &target,
TargetMachine &TM,
const std::string &tripleString,
MemoryBuffer &buffer,
raw_ostream &Out);

View File

@ -343,7 +343,7 @@ static int AssembleInput(const char *ProgName) {
// FIXME: There is a bit of code duplication with addPassesToEmitFile.
if (FileType == OFT_AssemblyFile) {
MCInstPrinter *IP =
TheTarget->createMCInstPrinter(*TM, OutputAsmVariant, *MAI);
TheTarget->createMCInstPrinter(OutputAsmVariant, *MAI);
MCCodeEmitter *CE = 0;
TargetAsmBackend *TAB = 0;
if (ShowEncoding) {
@ -426,7 +426,7 @@ static int DisassembleInput(const char *ProgName, bool Enhanced) {
return 1;
}
Res = Disassembler::disassemble(*TheTarget, *TM, TripleName,
Res = Disassembler::disassemble(*TheTarget, TripleName,
*Buffer.take(), Out->os());
}

View File

@ -38,7 +38,6 @@
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/system_error.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetRegistry.h"
#include "llvm/Target/TargetSelect.h"
#include <algorithm>
@ -196,22 +195,9 @@ static void DisassembleInput(const StringRef &Filename) {
return;
}
// FIXME: We shouldn't need to do this (and link in codegen).
// When we split this out, we should do it in a way that makes
// it straightforward to switch subtargets on the fly (.e.g,
// the .cpu and .code16 directives).
std::string FeaturesStr;
std::string CPU;
OwningPtr<TargetMachine> TM(TheTarget->createTargetMachine(TripleName, CPU,
FeaturesStr));
if (!TM) {
errs() << "error: could not create target for triple " << TripleName << "\n";
return;
}
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
OwningPtr<MCInstPrinter> IP(TheTarget->createMCInstPrinter(
*TM, AsmPrinterVariant, *AsmInfo));
AsmPrinterVariant, *AsmInfo));
if (!IP) {
errs() << "error: no instruction printer for target " << TripleName << '\n';
return;