diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2015-02-19 00:45:02 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-02-19 00:45:02 +0000 |
| commit | 20c7259ce9189484831519f0b7a02d56406c8613 (patch) | |
| tree | 6ea5211d45c4465485a22327895145040317c5c6 /llvm/lib/Target/ARM | |
| parent | e5ad66f8a9ba5157660e717e603cda66894b512c (diff) | |
| download | bcm5719-llvm-20c7259ce9189484831519f0b7a02d56406c8613.tar.gz bcm5719-llvm-20c7259ce9189484831519f0b7a02d56406c8613.zip | |
Introduce Target::createNullTargetStreamer and use it from IRObjectFile.
A null MCTargetStreamer allows IRObjectFile to ignore target-specific
directives. Previously we were crashing.
Differential Revision: http://reviews.llvm.org/D7711
llvm-svn: 229797
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h | 3 |
3 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index d698feabec8..7a302374378 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -1360,6 +1360,10 @@ MCStreamer *createARMNullStreamer(MCContext &Ctx) { return S; } +MCTargetStreamer *createARMNullTargetStreamer(MCStreamer &S) { + return new ARMTargetStreamer(S); +} + MCELFStreamer *createARMELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_ostream &OS, MCCodeEmitter *Emitter, bool RelaxAll, bool IsThumb) { diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp index a6310e5093b..ad96717da8c 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp @@ -461,6 +461,16 @@ extern "C" void LLVMInitializeARMTargetMC() { TargetRegistry::RegisterNullStreamer(TheThumbLETarget, createARMNullStreamer); TargetRegistry::RegisterNullStreamer(TheThumbBETarget, createARMNullStreamer); + // Register the null TargetStreamer. + TargetRegistry::RegisterNullTargetStreamer(TheARMLETarget, + createARMNullTargetStreamer); + TargetRegistry::RegisterNullTargetStreamer(TheARMBETarget, + createARMNullTargetStreamer); + TargetRegistry::RegisterNullTargetStreamer(TheThumbLETarget, + createARMNullTargetStreamer); + TargetRegistry::RegisterNullTargetStreamer(TheThumbBETarget, + createARMNullTargetStreamer); + // Register the MCInstPrinter. TargetRegistry::RegisterMCInstPrinter(TheARMLETarget, createARMMCInstPrinter); TargetRegistry::RegisterMCInstPrinter(TheARMBETarget, createARMMCInstPrinter); diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h index a6c20d5f94d..e534b131bac 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h @@ -29,6 +29,7 @@ class MCRegisterInfo; class MCSubtargetInfo; class MCStreamer; class MCRelocationInfo; +class MCTargetStreamer; class StringRef; class Target; class raw_ostream; @@ -53,6 +54,8 @@ MCStreamer *createMCAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS, MCStreamer *createARMNullStreamer(MCContext &Ctx); +MCTargetStreamer *createARMNullTargetStreamer(MCStreamer &S); + MCCodeEmitter *createARMLEMCCodeEmitter(const MCInstrInfo &MCII, const MCRegisterInfo &MRI, const MCSubtargetInfo &STI, |

