mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Pass in a "const Triple &T" instead of a raw StringRef.
llvm-svn: 232429
This commit is contained in:
parent
9b8b42c6d0
commit
f2d8674c1f
@ -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,
|
||||
|
@ -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 =
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user