diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-14 18:57:12 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-14 18:57:12 +0000 |
commit | 1c3e47c07a63039dac36323f632b959ab25e1b53 (patch) | |
tree | 979f262c40ad600ad60300060aed3ae096ef044c /lib | |
parent | 3e4542b2ca3426e5f5b812e008f6c71cf9ad295b (diff) | |
download | llvm-1c3e47c07a63039dac36323f632b959ab25e1b53.tar.gz llvm-1c3e47c07a63039dac36323f632b959ab25e1b53.tar.bz2 llvm-1c3e47c07a63039dac36323f632b959ab25e1b53.tar.xz |
Fix a low hanging use of hasRawTextSupport.
This also fixes the placement of the function label comment. It was being
placed next to the mips16 directive instead of next to the label.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199245 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp | 24 | ||||
-rw-r--r-- | lib/Target/Mips/MipsAsmPrinter.cpp | 20 | ||||
-rw-r--r-- | lib/Target/Mips/MipsTargetStreamer.h | 9 |
3 files changed, 43 insertions, 10 deletions
diff --git a/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp b/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp index 48af1a71ca..738fa2b204 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp +++ b/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp @@ -47,6 +47,18 @@ void MipsTargetAsmStreamer::emitDirectiveSetNoMicroMips() { OS << "\t.set\tnomicromips\n"; } +void MipsTargetAsmStreamer::emitDirectiveSetMips16() { + OS << "\t.set\tmips16\n"; +} + +void MipsTargetAsmStreamer::emitDirectiveSetNoMips16() { + OS << "\t.set\tnomips16\n"; +} + +void MipsTargetAsmStreamer::emitDirectiveEnt(const MCSymbol &Symbol) { + OS << "\t.ent\t" << Symbol.getName() << '\n'; +} + void MipsTargetAsmStreamer::emitDirectiveAbiCalls() { OS << "\t.abicalls\n"; } void MipsTargetAsmStreamer::emitDirectiveOptionPic0() { OS << "\t.option\tpic0\n"; @@ -81,6 +93,18 @@ void MipsTargetELFStreamer::emitDirectiveSetNoMicroMips() { MicroMipsEnabled = false; } +void MipsTargetELFStreamer::emitDirectiveSetMips16() { + // FIXME: implement. +} + +void MipsTargetELFStreamer::emitDirectiveSetNoMips16() { + // FIXME: implement. +} + +void MipsTargetELFStreamer::emitDirectiveEnt(const MCSymbol &Symbol) { + // FIXME: implement. +} + void MipsTargetELFStreamer::emitDirectiveAbiCalls() { MCAssembler &MCA = getStreamer().getAssembler(); unsigned Flags = MCA.getELFHeaderEFlags(); diff --git a/lib/Target/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp index 2bd6df7fd3..2f49e74ab8 100644 --- a/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/lib/Target/Mips/MipsAsmPrinter.cpp @@ -265,19 +265,19 @@ const char *MipsAsmPrinter::getCurrentABIString() const { } void MipsAsmPrinter::EmitFunctionEntryLabel() { + MipsTargetStreamer &TS = getTargetStreamer(); if (Subtarget->inMicroMipsMode()) - getTargetStreamer().emitDirectiveSetMicroMips(); + TS.emitDirectiveSetMicroMips(); + // leave out until FSF available gas has micromips changes + // else + // TS.emitDirectiveSetNoMicroMips(); - if (OutStreamer.hasRawTextSupport()) { - if (Subtarget->inMips16Mode()) - OutStreamer.EmitRawText(StringRef("\t.set\tmips16")); - else - OutStreamer.EmitRawText(StringRef("\t.set\tnomips16")); - // leave out until FSF available gas has micromips changes - // OutStreamer.EmitRawText(StringRef("\t.set\tnomicromips")); - OutStreamer.EmitRawText("\t.ent\t" + Twine(CurrentFnSym->getName())); - } + if (Subtarget->inMips16Mode()) + TS.emitDirectiveSetMips16(); + else + TS.emitDirectiveSetNoMips16(); + TS.emitDirectiveEnt(*CurrentFnSym); OutStreamer.EmitLabel(CurrentFnSym); } diff --git a/lib/Target/Mips/MipsTargetStreamer.h b/lib/Target/Mips/MipsTargetStreamer.h index 4d1dd0090d..4c0446fc3c 100644 --- a/lib/Target/Mips/MipsTargetStreamer.h +++ b/lib/Target/Mips/MipsTargetStreamer.h @@ -21,6 +21,9 @@ public: virtual void emitMipsHackELFFlags(unsigned Flags) = 0; virtual void emitDirectiveSetMicroMips() = 0; virtual void emitDirectiveSetNoMicroMips() = 0; + virtual void emitDirectiveSetMips16() = 0; + virtual void emitDirectiveSetNoMips16() = 0; + virtual void emitDirectiveEnt(const MCSymbol &Symbol) = 0; virtual void emitDirectiveAbiCalls() = 0; virtual void emitDirectiveOptionPic0() = 0; }; @@ -34,6 +37,9 @@ public: virtual void emitMipsHackELFFlags(unsigned Flags); virtual void emitDirectiveSetMicroMips(); virtual void emitDirectiveSetNoMicroMips(); + virtual void emitDirectiveSetMips16(); + virtual void emitDirectiveSetNoMips16(); + virtual void emitDirectiveEnt(const MCSymbol &Symbol); virtual void emitDirectiveAbiCalls(); virtual void emitDirectiveOptionPic0(); }; @@ -52,6 +58,9 @@ public: virtual void emitMipsHackELFFlags(unsigned Flags); virtual void emitDirectiveSetMicroMips(); virtual void emitDirectiveSetNoMicroMips(); + virtual void emitDirectiveSetMips16(); + virtual void emitDirectiveSetNoMips16(); + virtual void emitDirectiveEnt(const MCSymbol &Symbol); virtual void emitDirectiveAbiCalls(); virtual void emitDirectiveOptionPic0(); }; |