forked from OSchip/llvm-project
[Mips] Add a target streamer when creating a null streamer.
Should fix DebugInfo/global.ll on the mips bot. llvm-svn: 211527
This commit is contained in:
parent
802dc40228
commit
60890b8910
|
@ -133,6 +133,12 @@ createMCAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS,
|
|||
return S;
|
||||
}
|
||||
|
||||
static MCStreamer *createMipsNullStreamer(MCContext &Ctx) {
|
||||
MCStreamer *S = llvm::createNullStreamer(Ctx);
|
||||
new MipsTargetStreamer(*S);
|
||||
return S;
|
||||
}
|
||||
|
||||
extern "C" void LLVMInitializeMipsTargetMC() {
|
||||
// Register the MC asm info.
|
||||
RegisterMCAsmInfoFn X(TheMipsTarget, createMipsMCAsmInfo);
|
||||
|
@ -187,6 +193,12 @@ extern "C" void LLVMInitializeMipsTargetMC() {
|
|||
TargetRegistry::RegisterAsmStreamer(TheMips64Target, createMCAsmStreamer);
|
||||
TargetRegistry::RegisterAsmStreamer(TheMips64elTarget, createMCAsmStreamer);
|
||||
|
||||
TargetRegistry::RegisterNullStreamer(TheMipsTarget, createMipsNullStreamer);
|
||||
TargetRegistry::RegisterNullStreamer(TheMipselTarget, createMipsNullStreamer);
|
||||
TargetRegistry::RegisterNullStreamer(TheMips64Target, createMipsNullStreamer);
|
||||
TargetRegistry::RegisterNullStreamer(TheMips64elTarget,
|
||||
createMipsNullStreamer);
|
||||
|
||||
// Register the asm backend.
|
||||
TargetRegistry::RegisterMCAsmBackend(TheMipsTarget,
|
||||
createMipsAsmBackendEB32);
|
||||
|
|
|
@ -27,10 +27,37 @@
|
|||
|
||||
using namespace llvm;
|
||||
|
||||
// Pin vtable to this file.
|
||||
void MipsTargetStreamer::anchor() {}
|
||||
|
||||
MipsTargetStreamer::MipsTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
|
||||
void MipsTargetStreamer::emitDirectiveSetMicroMips() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetNoMicroMips() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetMips16() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetNoMips16() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetReorder() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetNoReorder() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetMacro() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetNoMacro() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetAt() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetNoAt() {}
|
||||
void MipsTargetStreamer::emitDirectiveEnd(StringRef Name) {}
|
||||
void MipsTargetStreamer::emitDirectiveEnt(const MCSymbol &Symbol) {}
|
||||
void MipsTargetStreamer::emitDirectiveAbiCalls() {}
|
||||
void MipsTargetStreamer::emitDirectiveNaN2008() {}
|
||||
void MipsTargetStreamer::emitDirectiveNaNLegacy() {}
|
||||
void MipsTargetStreamer::emitDirectiveOptionPic0() {}
|
||||
void MipsTargetStreamer::emitDirectiveOptionPic2() {}
|
||||
void MipsTargetStreamer::emitFrame(unsigned StackReg, unsigned StackSize,
|
||||
unsigned ReturnReg) {}
|
||||
void MipsTargetStreamer::emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) {}
|
||||
void MipsTargetStreamer::emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) {
|
||||
}
|
||||
void MipsTargetStreamer::emitDirectiveSetMips32R2() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetMips64() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetMips64R2() {}
|
||||
void MipsTargetStreamer::emitDirectiveSetDsp() {}
|
||||
void MipsTargetStreamer::emitDirectiveCpload(unsigned RegNo) {}
|
||||
void MipsTargetStreamer::emitDirectiveCpsetup(unsigned RegNo, int RegOrOffset,
|
||||
const MCSymbol &Sym, bool IsReg) {
|
||||
}
|
||||
|
||||
MipsTargetAsmStreamer::MipsTargetAsmStreamer(MCStreamer &S,
|
||||
formatted_raw_ostream &OS)
|
||||
|
|
|
@ -15,43 +15,41 @@
|
|||
|
||||
namespace llvm {
|
||||
class MipsTargetStreamer : public MCTargetStreamer {
|
||||
virtual void anchor();
|
||||
|
||||
public:
|
||||
MipsTargetStreamer(MCStreamer &S);
|
||||
virtual void emitDirectiveSetMicroMips() = 0;
|
||||
virtual void emitDirectiveSetNoMicroMips() = 0;
|
||||
virtual void emitDirectiveSetMips16() = 0;
|
||||
virtual void emitDirectiveSetNoMips16() = 0;
|
||||
virtual void emitDirectiveSetMicroMips();
|
||||
virtual void emitDirectiveSetNoMicroMips();
|
||||
virtual void emitDirectiveSetMips16();
|
||||
virtual void emitDirectiveSetNoMips16();
|
||||
|
||||
virtual void emitDirectiveSetReorder() = 0;
|
||||
virtual void emitDirectiveSetNoReorder() = 0;
|
||||
virtual void emitDirectiveSetMacro() = 0;
|
||||
virtual void emitDirectiveSetNoMacro() = 0;
|
||||
virtual void emitDirectiveSetAt() = 0;
|
||||
virtual void emitDirectiveSetNoAt() = 0;
|
||||
virtual void emitDirectiveEnd(StringRef Name) = 0;
|
||||
virtual void emitDirectiveSetReorder();
|
||||
virtual void emitDirectiveSetNoReorder();
|
||||
virtual void emitDirectiveSetMacro();
|
||||
virtual void emitDirectiveSetNoMacro();
|
||||
virtual void emitDirectiveSetAt();
|
||||
virtual void emitDirectiveSetNoAt();
|
||||
virtual void emitDirectiveEnd(StringRef Name);
|
||||
|
||||
virtual void emitDirectiveEnt(const MCSymbol &Symbol) = 0;
|
||||
virtual void emitDirectiveAbiCalls() = 0;
|
||||
virtual void emitDirectiveNaN2008() = 0;
|
||||
virtual void emitDirectiveNaNLegacy() = 0;
|
||||
virtual void emitDirectiveOptionPic0() = 0;
|
||||
virtual void emitDirectiveOptionPic2() = 0;
|
||||
virtual void emitDirectiveEnt(const MCSymbol &Symbol);
|
||||
virtual void emitDirectiveAbiCalls();
|
||||
virtual void emitDirectiveNaN2008();
|
||||
virtual void emitDirectiveNaNLegacy();
|
||||
virtual void emitDirectiveOptionPic0();
|
||||
virtual void emitDirectiveOptionPic2();
|
||||
virtual void emitFrame(unsigned StackReg, unsigned StackSize,
|
||||
unsigned ReturnReg) = 0;
|
||||
virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) = 0;
|
||||
virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) = 0;
|
||||
unsigned ReturnReg);
|
||||
virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff);
|
||||
virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff);
|
||||
|
||||
virtual void emitDirectiveSetMips32R2() = 0;
|
||||
virtual void emitDirectiveSetMips64() = 0;
|
||||
virtual void emitDirectiveSetMips64R2() = 0;
|
||||
virtual void emitDirectiveSetDsp() = 0;
|
||||
virtual void emitDirectiveSetMips32R2();
|
||||
virtual void emitDirectiveSetMips64();
|
||||
virtual void emitDirectiveSetMips64R2();
|
||||
virtual void emitDirectiveSetDsp();
|
||||
|
||||
// PIC support
|
||||
virtual void emitDirectiveCpload(unsigned RegNo) = 0;
|
||||
virtual void emitDirectiveCpload(unsigned RegNo);
|
||||
virtual void emitDirectiveCpsetup(unsigned RegNo, int RegOrOffset,
|
||||
const MCSymbol &Sym, bool IsReg) = 0;
|
||||
const MCSymbol &Sym, bool IsReg);
|
||||
};
|
||||
|
||||
// This part is for ascii assembly output
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
; Test the null streamer with a terget streamer.
|
||||
; RUN: llc -O0 -filetype=null -mtriple=mips-linux < %s
|
||||
|
||||
define i32 @main() {
|
||||
entry:
|
||||
ret i32 0
|
||||
}
|
Loading…
Reference in New Issue