summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp4
-rw-r--r--llvm/lib/Target/Mips/MipsAsmPrinter.cpp1
-rw-r--r--llvm/test/CodeGen/Mips/micromips-ase-function-attribute.ll11
-rw-r--r--llvm/test/MC/Mips/micromips-ase-directive.s10
4 files changed, 25 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 8da7dfbd4de..4db5e3c8cca 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -2273,8 +2273,10 @@ bool MipsAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
// We know we emitted an instruction on the MER_NotAMacro or MER_Success path.
// If we're in microMIPS mode then we must also set EF_MIPS_MICROMIPS.
- if (inMicroMipsMode())
+ if (inMicroMipsMode()) {
TOut.setUsesMicroMips();
+ TOut.updateABIInfo(*this);
+ }
// If this instruction has a delay slot and .set reorder is active,
// emit a NOP after it.
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
index c2869bd7ecb..fbf7b5e28b7 100644
--- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
+++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
@@ -361,6 +361,7 @@ void MipsAsmPrinter::EmitFunctionEntryLabel() {
if (Subtarget->inMicroMipsMode()) {
TS.emitDirectiveSetMicroMips();
TS.setUsesMicroMips();
+ TS.updateABIInfo(*Subtarget);
} else
TS.emitDirectiveSetNoMicroMips();
diff --git a/llvm/test/CodeGen/Mips/micromips-ase-function-attribute.ll b/llvm/test/CodeGen/Mips/micromips-ase-function-attribute.ll
new file mode 100644
index 00000000000..bbb6ff56ea9
--- /dev/null
+++ b/llvm/test/CodeGen/Mips/micromips-ase-function-attribute.ll
@@ -0,0 +1,11 @@
+; RUN: llc -mtriple=mips-unknown-linux -filetype=obj %s -o - | \
+; RUN: llvm-readobj -mips-abi-flags | \
+; RUN: FileCheck --check-prefix=ASE-MICROMIPS %s
+
+define void @_Z3foov() #0 {
+entry:
+ ret void
+}
+attributes #0 = { "micromips" }
+
+; ASE-MICROMIPS: microMIPS (0x800)
diff --git a/llvm/test/MC/Mips/micromips-ase-directive.s b/llvm/test/MC/Mips/micromips-ase-directive.s
new file mode 100644
index 00000000000..8cdcdcc0c56
--- /dev/null
+++ b/llvm/test/MC/Mips/micromips-ase-directive.s
@@ -0,0 +1,10 @@
+# RUN: llvm-mc -triple=mips-unknown-linux -filetype=obj %s -o - | \
+# RUN: llvm-readobj -mips-abi-flags | \
+# RUN: FileCheck --check-prefix=ASE-MICROMIPS %s
+
+ .set micromips
+ .ent _Z3foov
+_Z3foov:
+ addiu $sp, $sp, -8
+
+# ASE-MICROMIPS: microMIPS (0x800)
OpenPOWER on IntegriCloud