Pass in a "const Triple &T" instead of a raw StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232429 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2015-03-16 22:29:29 +00:00
parent 63641de2e6
commit 7b8bb89ecd
13 changed files with 32 additions and 39 deletions

View File

@ -127,7 +127,7 @@ namespace llvm {
const MCRegisterInfo &MRI,
MCContext &Ctx);
typedef MCStreamer *(*MCObjectStreamerCtorTy)(
StringRef TT, MCContext &Ctx, MCAsmBackend &TAB, raw_ostream &OS,
const Triple &T, MCContext &Ctx, MCAsmBackend &TAB, raw_ostream &OS,
MCCodeEmitter *Emitter, const MCSubtargetInfo &STI, bool RelaxAll);
typedef MCTargetStreamer *(*NullTargetStreamerCtorTy)(MCStreamer &S);
typedef MCTargetStreamer *(*AsmTargetStreamerCtorTy)(
@ -405,22 +405,22 @@ namespace llvm {
return MCCodeEmitterCtorFn(II, MRI, Ctx);
}
/// createMCObjectStreamer - Create a target specific MCStreamer.
/// Create a target specific MCStreamer.
///
/// \param TT The target triple.
/// \param T The target triple.
/// \param Ctx The target context.
/// \param TAB The target assembler backend object. Takes ownership.
/// \param OS The stream object.
/// \param Emitter The target independent assembler object.Takes ownership.
/// \param RelaxAll Relax all fixups?
MCStreamer *createMCObjectStreamer(StringRef TT, MCContext &Ctx,
MCStreamer *createMCObjectStreamer(const Triple &T, MCContext &Ctx,
MCAsmBackend &TAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI,
bool RelaxAll) const {
if (!MCObjectStreamerCtorFn)
return nullptr;
return MCObjectStreamerCtorFn(TT, Ctx, TAB, OS, Emitter, STI, RelaxAll);
return MCObjectStreamerCtorFn(T, Ctx, TAB, OS, Emitter, STI, RelaxAll);
}
MCStreamer *createAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS,

View File

@ -197,10 +197,9 @@ bool LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
if (!MCE || !MAB)
return true;
AsmStreamer.reset(
getTarget()
.createMCObjectStreamer(getTargetTriple(), *Context, *MAB, Out, MCE,
STI, Options.MCOptions.MCRelaxAll));
Triple T(getTargetTriple());
AsmStreamer.reset(getTarget().createMCObjectStreamer(
T, *Context, *MAB, Out, MCE, STI, Options.MCOptions.MCRelaxAll));
break;
}
case CGFT_Null:
@ -249,9 +248,9 @@ bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM,
if (!MCE || !MAB)
return true;
Triple T(getTargetTriple());
std::unique_ptr<MCStreamer> AsmStreamer(getTarget().createMCObjectStreamer(
getTargetTriple(), *Ctx, *MAB, Out, MCE, STI,
Options.MCOptions.MCRelaxAll));
T, *Ctx, *MAB, Out, MCE, STI, Options.MCOptions.MCRelaxAll));
// Create the AsmPrinter, which takes ownership of AsmStreamer if successful.
FunctionPass *Printer =

View File

@ -123,13 +123,11 @@ static MCInstPrinter *createAArch64MCInstPrinter(const Target &T,
return nullptr;
}
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Ctx,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Ctx,
MCAsmBackend &TAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {
Triple TheTriple(TT);
if (TheTriple.isOSDarwin())
if (T.isOSDarwin())
return createMachOStreamer(Ctx, TAB, OS, Emitter, RelaxAll,
/*LabelSections*/ true);

View File

@ -296,13 +296,11 @@ static MCCodeGenInfo *createARMMCCodeGenInfo(StringRef TT, Reloc::Model RM,
}
// This is duplicated code. Refactor this.
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Ctx,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Ctx,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {
Triple TheTriple(TT);
switch (TheTriple.getObjectFormat()) {
switch (T.getObjectFormat()) {
default: llvm_unreachable("unsupported object format");
case Triple::MachO: {
MCStreamer *S = createMachOStreamer(Ctx, MAB, OS, Emitter, false);
@ -310,11 +308,11 @@ static MCStreamer *createMCStreamer(StringRef TT, MCContext &Ctx,
return S;
}
case Triple::COFF:
assert(TheTriple.isOSWindows() && "non-Windows ARM COFF is not supported");
assert(T.isOSWindows() && "non-Windows ARM COFF is not supported");
return createARMWinCOFFStreamer(Ctx, MAB, *Emitter, OS);
case Triple::ELF:
return createARMELFStreamer(Ctx, MAB, OS, Emitter, false,
TheTriple.getArch() == Triple::thumb);
T.getArch() == Triple::thumb);
}
}

View File

@ -75,7 +75,7 @@ static MCAsmInfo *createHexagonMCAsmInfo(const MCRegisterInfo &MRI,
return MAI;
}
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Context,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
MCSubtargetInfo const &STI, bool RelaxAll) {

View File

@ -106,12 +106,12 @@ static MCInstPrinter *createMipsMCInstPrinter(const Target &T,
return new MipsInstPrinter(MAI, MII, MRI);
}
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Context,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {
MCStreamer *S;
if (!Triple(TT).isOSNaCl())
if (!T.isOSNaCl())
S = createMipsELFStreamer(Context, MAB, OS, Emitter, STI, RelaxAll);
else
S = createMipsNaClELFStreamer(Context, MAB, OS, Emitter, STI, RelaxAll);

View File

@ -224,11 +224,11 @@ public:
}
// This is duplicated code. Refactor this.
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Ctx,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Ctx,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {
if (Triple(TT).isOSDarwin()) {
if (T.isOSDarwin()) {
MCStreamer *S = createMachOStreamer(Ctx, MAB, OS, Emitter, RelaxAll);
new PPCTargetMachOStreamer(*S);
return S;

View File

@ -73,7 +73,7 @@ static MCInstPrinter *createAMDGPUMCInstPrinter(const Target &T,
return new AMDGPUInstPrinter(MAI, MII, MRI);
}
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Ctx,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Ctx,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {

View File

@ -122,7 +122,7 @@ static MCCodeGenInfo *createSparcV9MCCodeGenInfo(StringRef TT, Reloc::Model RM,
return X;
}
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Context,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {

View File

@ -181,10 +181,9 @@ static MCInstPrinter *createSystemZMCInstPrinter(const Target &T,
return new SystemZInstPrinter(MAI, MII, MRI);
}
static MCStreamer *
createSystemZMCObjectStreamer(StringRef TT, MCContext &Ctx, MCAsmBackend &MAB,
raw_ostream &OS, MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {
static MCStreamer *createSystemZMCObjectStreamer(
const Triple &T, MCContext &Ctx, MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter, const MCSubtargetInfo &STI, bool RelaxAll) {
return createELFStreamer(Ctx, MAB, OS, Emitter, RelaxAll);
}

View File

@ -344,18 +344,16 @@ static MCCodeGenInfo *createX86MCCodeGenInfo(StringRef TT, Reloc::Model RM,
return X;
}
static MCStreamer *createMCStreamer(StringRef TT, MCContext &Ctx,
static MCStreamer *createMCStreamer(const Triple &T, MCContext &Ctx,
MCAsmBackend &MAB, raw_ostream &OS,
MCCodeEmitter *Emitter,
const MCSubtargetInfo &STI, bool RelaxAll) {
Triple TheTriple(TT);
switch (TheTriple.getObjectFormat()) {
switch (T.getObjectFormat()) {
default: llvm_unreachable("unsupported object format");
case Triple::MachO:
return createMachOStreamer(Ctx, MAB, OS, Emitter, RelaxAll);
case Triple::COFF:
assert(TheTriple.isOSWindows() && "only Windows COFF is supported");
assert(T.isOSWindows() && "only Windows COFF is supported");
return createX86WinCOFFStreamer(Ctx, MAB, Emitter, OS, RelaxAll);
case Triple::ELF:
return createELFStreamer(Ctx, MAB, OS, Emitter, RelaxAll);

View File

@ -510,7 +510,7 @@ bool DwarfStreamer::init(Triple TheTriple, StringRef OutputFilename) {
if (EC)
return error(Twine(OutputFilename) + ": " + EC.message(), Context);
MS = TheTarget->createMCObjectStreamer(TripleName, *MC, *MAB, *OutFile, MCE,
MS = TheTarget->createMCObjectStreamer(TheTriple, *MC, *MAB, *OutFile, MCE,
*MSTI, false);
if (!MS)
return error("no object streamer for target " + TripleName, Context);

View File

@ -357,6 +357,7 @@ int main(int argc, char **argv) {
cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
TripleName = Triple::normalize(TripleName);
Triple TheTriple(TripleName);
setDwarfDebugFlags(argc, argv);
setDwarfDebugProducer();
@ -470,7 +471,7 @@ int main(int argc, char **argv) {
assert(FileType == OFT_ObjectFile && "Invalid file type!");
MCCodeEmitter *CE = TheTarget->createMCCodeEmitter(*MCII, *MRI, Ctx);
MCAsmBackend *MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, MCPU);
Str.reset(TheTarget->createMCObjectStreamer(TripleName, Ctx, *MAB, FOS, CE,
Str.reset(TheTarget->createMCObjectStreamer(TheTriple, Ctx, *MAB, FOS, CE,
*STI, RelaxAll));
if (NoExecStack)
Str->InitSections(true);