From 1c3e47c07a63039dac36323f632b959ab25e1b53 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 14 Jan 2014 18:57:12 +0000 Subject: [PATCH] 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 --- .../Mips/MCTargetDesc/MipsTargetStreamer.cpp | 24 +++++++++++++++++++ lib/Target/Mips/MipsAsmPrinter.cpp | 20 ++++++++-------- lib/Target/Mips/MipsTargetStreamer.h | 9 +++++++ test/CodeGen/Mips/fpneeded.ll | 16 ++++++------- test/CodeGen/Mips/fpnotneeded.ll | 10 ++++---- test/CodeGen/Mips/helloworld.ll | 2 +- test/CodeGen/Mips/mips16_32_1.ll | 2 +- test/CodeGen/Mips/mips16_32_10.ll | 6 ++--- test/CodeGen/Mips/mips16_32_3.ll | 12 +++++----- test/CodeGen/Mips/mips16_32_4.ll | 12 +++++----- test/CodeGen/Mips/mips16_32_5.ll | 12 +++++----- test/CodeGen/Mips/mips16_32_6.ll | 12 +++++----- test/CodeGen/Mips/mips16_32_7.ll | 12 +++++----- test/CodeGen/Mips/mips16_32_8.ll | 6 ++--- test/CodeGen/Mips/mips16_32_9.ll | 6 ++--- test/CodeGen/Mips/null.ll | 2 +- 16 files changed, 98 insertions(+), 65 deletions(-) diff --git a/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp b/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp index 48af1a71ca3..738fa2b204d 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 2bd6df7fd3f..2f49e74ab82 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 4d1dd0090da..4c0446fc3ce 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(); }; diff --git a/test/CodeGen/Mips/fpneeded.ll b/test/CodeGen/Mips/fpneeded.ll index dcdebb92e40..fdd8e8f707e 100644 --- a/test/CodeGen/Mips/fpneeded.ll +++ b/test/CodeGen/Mips/fpneeded.ll @@ -10,7 +10,7 @@ entry: ret float 1.000000e+00 } -; 32: .set nomips16 # @fv +; 32: .set nomips16 ; 32: .ent fv ; 32: .set noreorder ; 32: .set nomacro @@ -26,7 +26,7 @@ entry: ret double 2.000000e+00 } -; 32: .set nomips16 # @dv +; 32: .set nomips16 ; 32: .ent dv ; 32: .set noreorder ; 32: .set nomacro @@ -44,7 +44,7 @@ entry: ret void } -; 32: .set nomips16 # @vf +; 32: .set nomips16 ; 32: .ent vf ; 32: .set noreorder ; 32: .set nomacro @@ -62,7 +62,7 @@ entry: ret void } -; 32: .set nomips16 # @vd +; 32: .set nomips16 ; 32: .ent vd ; 32: .set noreorder ; 32: .set nomacro @@ -83,7 +83,7 @@ entry: ret void } -; 32: .set nomips16 # @foo1 +; 32: .set nomips16 ; 32: .ent foo1 ; 32: .set noreorder ; 32: .set nomacro @@ -102,7 +102,7 @@ entry: } -; 32: .set nomips16 # @foo2 +; 32: .set nomips16 ; 32: .ent foo2 ; 32: .set noreorder ; 32: .set nomacro @@ -120,7 +120,7 @@ entry: ret void } -; 32: .set nomips16 # @foo3 +; 32: .set nomips16 ; 32: .ent foo3 ; 32: .set noreorder ; 32: .set nomacro @@ -138,7 +138,7 @@ entry: ret void } -; 32: .set mips16 # @vv +; 32: .set mips16 ; 32: .ent vv ; 32: save {{.+}} diff --git a/test/CodeGen/Mips/fpnotneeded.ll b/test/CodeGen/Mips/fpnotneeded.ll index 6a4363c5813..e12d7baacdb 100644 --- a/test/CodeGen/Mips/fpnotneeded.ll +++ b/test/CodeGen/Mips/fpnotneeded.ll @@ -10,7 +10,7 @@ entry: ret void } -; 32: .set mips16 # @vv +; 32: .set mips16 ; 32: .ent vv ; 32: save {{.+}} @@ -23,7 +23,7 @@ entry: ret i32 %0 } -; 32: .set mips16 # @iv +; 32: .set mips16 ; 32: .ent iv ; 32: save {{.+}} @@ -39,7 +39,7 @@ entry: ret void } -; 32: .set mips16 # @vif +; 32: .set mips16 ; 32: .ent vif ; 32: save {{.+}} @@ -52,7 +52,7 @@ entry: ret void } -; 32: .set mips16 # @foo +; 32: .set mips16 ; 32: .ent foo ; 32: save {{.+}} @@ -69,7 +69,7 @@ entry: ret float 1.000000e+00 } -; 32: .set nomips16 # @fv +; 32: .set nomips16 ; 32: .ent fv ; 32: .set noreorder ; 32: .set nomacro diff --git a/test/CodeGen/Mips/helloworld.ll b/test/CodeGen/Mips/helloworld.ll index 709c12e1c67..36f4ad6b55c 100644 --- a/test/CodeGen/Mips/helloworld.ll +++ b/test/CodeGen/Mips/helloworld.ll @@ -15,7 +15,7 @@ entry: %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str, i32 0, i32 0)) ret i32 0 -; SR: .set mips16 # @main +; SR: .set mips16 ; SR32: .set nomips16 ; SR32: .ent main diff --git a/test/CodeGen/Mips/mips16_32_1.ll b/test/CodeGen/Mips/mips16_32_1.ll index a72cfc84875..f6096b402f2 100644 --- a/test/CodeGen/Mips/mips16_32_1.ll +++ b/test/CodeGen/Mips/mips16_32_1.ll @@ -6,7 +6,7 @@ entry: ret void } -; CHECK: .set mips16 # @foo +; CHECK: .set mips16 ; CHECK: .ent foo ; CHECK: jrc $ra ; CHECK: .end foo diff --git a/test/CodeGen/Mips/mips16_32_10.ll b/test/CodeGen/Mips/mips16_32_10.ll index 686faa718e0..ff9831ed762 100644 --- a/test/CodeGen/Mips/mips16_32_10.ll +++ b/test/CodeGen/Mips/mips16_32_10.ll @@ -4,7 +4,7 @@ define void @foo() #0 { entry: ret void } -; 16: .set nomips16 # @foo +; 16: .set nomips16 ; 16: .ent foo ; 16: .set noreorder ; 16: .set nomacro @@ -21,7 +21,7 @@ entry: ret void } -; 16: .set mips16 # @nofoo +; 16: .set mips16 ; 16: .ent nofoo ; 16: jrc $ra @@ -32,7 +32,7 @@ entry: ret i32 0 } -; 16: .set nomips16 # @main +; 16: .set nomips16 ; 16: .ent main ; 16: .set noreorder ; 16: .set nomacro diff --git a/test/CodeGen/Mips/mips16_32_3.ll b/test/CodeGen/Mips/mips16_32_3.ll index 4ad427f0df7..c5a29a0b8fd 100644 --- a/test/CodeGen/Mips/mips16_32_3.ll +++ b/test/CodeGen/Mips/mips16_32_3.ll @@ -6,11 +6,11 @@ entry: ret void } -; 16: .set mips16 # @foo +; 16: .set mips16 ; 16: .ent foo ; 16: jrc $ra ; 16: .end foo -; 32: .set mips16 # @foo +; 32: .set mips16 ; 32: .ent foo ; 32: jrc $ra ; 32: .end foo @@ -19,7 +19,7 @@ entry: ret void } -; 16: .set nomips16 # @nofoo +; 16: .set nomips16 ; 16: .ent nofoo ; 16: .set noreorder ; 16: .set nomacro @@ -30,7 +30,7 @@ entry: ; 16: .set macro ; 16: .set reorder ; 16: .end nofoo -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -46,11 +46,11 @@ entry: ret i32 0 } -; 16: .set mips16 # @main +; 16: .set mips16 ; 16: .ent main ; 16: jrc $ra ; 16: .end main -; 32: .set nomips16 # @main +; 32: .set nomips16 ; 32: .ent main ; 32: .set noreorder ; 32: .set nomacro diff --git a/test/CodeGen/Mips/mips16_32_4.ll b/test/CodeGen/Mips/mips16_32_4.ll index e8100e8237a..1238363d907 100644 --- a/test/CodeGen/Mips/mips16_32_4.ll +++ b/test/CodeGen/Mips/mips16_32_4.ll @@ -6,11 +6,11 @@ entry: ret void } -; 16: .set mips16 # @foo +; 16: .set mips16 ; 16: .ent foo ; 16: jrc $ra ; 16: .end foo -; 32: .set mips16 # @foo +; 32: .set mips16 ; 32: .ent foo ; 32: jrc $ra ; 32: .end foo @@ -19,7 +19,7 @@ entry: ret void } -; 16: .set nomips16 # @nofoo +; 16: .set nomips16 ; 16: .ent nofoo ; 16: .set noreorder ; 16: .set nomacro @@ -30,7 +30,7 @@ entry: ; 16: .set macro ; 16: .set reorder ; 16: .end nofoo -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -46,11 +46,11 @@ entry: ret i32 0 } -; 16: .set mips16 # @main +; 16: .set mips16 ; 16: .ent main ; 16: jrc $ra ; 16: .end main -; 32: .set mips16 # @main +; 32: .set mips16 ; 32: .ent main ; 32: jrc $ra ; 32: .end main diff --git a/test/CodeGen/Mips/mips16_32_5.ll b/test/CodeGen/Mips/mips16_32_5.ll index 5bdeede5c66..5d4c8a1af56 100644 --- a/test/CodeGen/Mips/mips16_32_5.ll +++ b/test/CodeGen/Mips/mips16_32_5.ll @@ -6,11 +6,11 @@ entry: ret void } -; 16: .set mips16 # @foo +; 16: .set mips16 ; 16: .ent foo ; 16: jrc $ra ; 16: .end foo -; 32: .set mips16 # @foo +; 32: .set mips16 ; 32: .ent foo ; 32: jrc $ra ; 32: .end foo @@ -19,7 +19,7 @@ entry: ret void } -; 16: .set nomips16 # @nofoo +; 16: .set nomips16 ; 16: .ent nofoo ; 16: .set noreorder ; 16: .set nomacro @@ -30,7 +30,7 @@ entry: ; 16: .set macro ; 16: .set reorder ; 16: .end nofoo -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -46,7 +46,7 @@ entry: ret i32 0 } -; 16: .set nomips16 # @main +; 16: .set nomips16 ; 16: .ent main ; 16: .set noreorder ; 16: .set nomacro @@ -58,7 +58,7 @@ entry: ; 16: .set reorder ; 16: .end main -; 32: .set nomips16 # @main +; 32: .set nomips16 ; 32: .ent main ; 32: .set noreorder ; 32: .set nomacro diff --git a/test/CodeGen/Mips/mips16_32_6.ll b/test/CodeGen/Mips/mips16_32_6.ll index 45f71f01ec6..63323b608bc 100644 --- a/test/CodeGen/Mips/mips16_32_6.ll +++ b/test/CodeGen/Mips/mips16_32_6.ll @@ -6,11 +6,11 @@ entry: ret void } -; 16: .set mips16 # @foo +; 16: .set mips16 ; 16: .ent foo ; 16: jrc $ra ; 16: .end foo -; 32: .set nomips16 # @foo +; 32: .set nomips16 ; 32: .ent foo ; 32: .set noreorder ; 32: .set nomacro @@ -26,7 +26,7 @@ entry: ret void } -; 16: .set nomips16 # @nofoo +; 16: .set nomips16 ; 16: .ent nofoo ; 16: .set noreorder ; 16: .set nomacro @@ -37,7 +37,7 @@ entry: ; 16: .set macro ; 16: .set reorder ; 16: .end nofoo -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -53,7 +53,7 @@ entry: ret i32 0 } -; 16: .set nomips16 # @main +; 16: .set nomips16 ; 16: .ent main ; 16: .set noreorder ; 16: .set nomacro @@ -65,7 +65,7 @@ entry: ; 16: .set reorder ; 16: .end main -; 32: .set nomips16 # @main +; 32: .set nomips16 ; 32: .ent main ; 32: .set noreorder ; 32: .set nomacro diff --git a/test/CodeGen/Mips/mips16_32_7.ll b/test/CodeGen/Mips/mips16_32_7.ll index e171b367c47..480a23c8b25 100644 --- a/test/CodeGen/Mips/mips16_32_7.ll +++ b/test/CodeGen/Mips/mips16_32_7.ll @@ -6,11 +6,11 @@ entry: ret void } -; 16: .set mips16 # @foo +; 16: .set mips16 ; 16: .ent foo ; 16: jrc $ra ; 16: .end foo -; 32: .set nomips16 # @foo +; 32: .set nomips16 ; 32: .ent foo ; 32: .set noreorder ; 32: .set nomacro @@ -26,7 +26,7 @@ entry: ret void } -; 16: .set nomips16 # @nofoo +; 16: .set nomips16 ; 16: .ent nofoo ; 16: .set noreorder ; 16: .set nomacro @@ -37,7 +37,7 @@ entry: ; 16: .set macro ; 16: .set reorder ; 16: .end nofoo -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -53,12 +53,12 @@ entry: ret i32 0 } -; 16: .set mips16 # @main +; 16: .set mips16 ; 16: .ent main ; 16: jrc $ra ; 16: .end main -; 32: .set mips16 # @main +; 32: .set mips16 ; 32: .ent main ; 32: jrc $ra ; 32: .end main diff --git a/test/CodeGen/Mips/mips16_32_8.ll b/test/CodeGen/Mips/mips16_32_8.ll index 3c8cc5a4e28..2f5bc219cf3 100644 --- a/test/CodeGen/Mips/mips16_32_8.ll +++ b/test/CodeGen/Mips/mips16_32_8.ll @@ -14,7 +14,7 @@ entry: ret void } -; 32: .set mips16 # @foo +; 32: .set mips16 ; 32: .ent foo ; 32: jrc $ra ; 32: .end foo @@ -32,7 +32,7 @@ entry: ret void } -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -56,7 +56,7 @@ entry: ret i32 0 } -; 32: .set nomips16 # @main +; 32: .set nomips16 ; 32: .ent main ; 32: .set noreorder ; 32: .set nomacro diff --git a/test/CodeGen/Mips/mips16_32_9.ll b/test/CodeGen/Mips/mips16_32_9.ll index 585a4e8408b..8543147bed0 100644 --- a/test/CodeGen/Mips/mips16_32_9.ll +++ b/test/CodeGen/Mips/mips16_32_9.ll @@ -5,7 +5,7 @@ entry: ret void } -; 32: .set mips16 # @foo +; 32: .set mips16 ; 32: .ent foo ; 32: jrc $ra ; 32: .end foo @@ -14,7 +14,7 @@ entry: ret void } -; 32: .set nomips16 # @nofoo +; 32: .set nomips16 ; 32: .ent nofoo ; 32: .set noreorder ; 32: .set nomacro @@ -30,7 +30,7 @@ entry: ret i32 0 } -; 32: .set mips16 # @main +; 32: .set mips16 ; 32: .ent main ; 32: jrc $ra ; 32: .end main diff --git a/test/CodeGen/Mips/null.ll b/test/CodeGen/Mips/null.ll index 00c66a9928f..bc78a27f199 100644 --- a/test/CodeGen/Mips/null.ll +++ b/test/CodeGen/Mips/null.ll @@ -5,7 +5,7 @@ define i32 @main() nounwind { entry: ret i32 0 -; 16: .set mips16 # @main +; 16: .set mips16 ; 16: jrc $ra