diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-03-19 01:50:16 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-03-19 01:50:16 +0000 |
commit | cd584a809de8824eea9bcd7f5df59f854413cc76 (patch) | |
tree | c250018fdaa232fe9f5a54f1d731c0f676fd6d3f /llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp | |
parent | 58e2492f9313953f2e8eb395bb9937b83eec1fbf (diff) | |
download | bcm5719-llvm-cd584a809de8824eea9bcd7f5df59f854413cc76.tar.gz bcm5719-llvm-cd584a809de8824eea9bcd7f5df59f854413cc76.zip |
Split the object streamer callback in one per file format.
There are two main advantages to doing this
* Targets that only need to handle one of the formats specially don't have
to worry about the others. For example, x86 now only registers a
constructor for the COFF streamer.
* Changes to the arguments passed to one format constructor will not impact
the other formats.
llvm-svn: 232699
Diffstat (limited to 'llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp')
-rw-r--r-- | llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp index 441b5311f35..6f3f37bc2fc 100644 --- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp +++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp @@ -108,14 +108,12 @@ static MCInstPrinter *createMipsMCInstPrinter(const Target &T, static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context, MCAsmBackend &MAB, raw_ostream &OS, - MCCodeEmitter *Emitter, - const MCSubtargetInfo &STI, bool RelaxAll) { + MCCodeEmitter *Emitter, bool RelaxAll) { MCStreamer *S; if (!T.isOSNaCl()) - S = createMipsELFStreamer(Context, MAB, OS, Emitter, STI, RelaxAll); + S = createMipsELFStreamer(Context, MAB, OS, Emitter, RelaxAll); else - S = createMipsNaClELFStreamer(Context, MAB, OS, Emitter, STI, RelaxAll); - new MipsTargetELFStreamer(*S, STI); + S = createMipsNaClELFStreamer(Context, MAB, OS, Emitter, RelaxAll); return S; } @@ -130,6 +128,11 @@ static MCTargetStreamer *createMipsNullTargetStreamer(MCStreamer &S) { return new MipsTargetStreamer(S); } +static MCTargetStreamer * +createMipsObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI) { + return new MipsTargetELFStreamer(S, STI); +} + extern "C" void LLVMInitializeMipsTargetMC() { for (Target *T : {&TheMipsTarget, &TheMipselTarget, &TheMips64Target, &TheMips64elTarget}) { @@ -145,8 +148,8 @@ extern "C" void LLVMInitializeMipsTargetMC() { // Register the MC register info. TargetRegistry::RegisterMCRegInfo(*T, createMipsMCRegisterInfo); - // Register the object streamer. - TargetRegistry::RegisterMCObjectStreamer(*T, createMCStreamer); + // Register the elf streamer. + TargetRegistry::RegisterELFStreamer(*T, createMCStreamer); // Register the asm target streamer. TargetRegistry::RegisterAsmTargetStreamer(*T, createMipsAsmTargetStreamer); @@ -159,6 +162,9 @@ extern "C" void LLVMInitializeMipsTargetMC() { // Register the MCInstPrinter. TargetRegistry::RegisterMCInstPrinter(*T, createMipsMCInstPrinter); + + TargetRegistry::RegisterObjectTargetStreamer( + *T, createMipsObjectTargetStreamer); } // Register the MC Code Emitter |