summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReed Kotler <rkotler@mips.com>2013-11-26 20:38:40 +0000
committerReed Kotler <rkotler@mips.com>2013-11-26 20:38:40 +0000
commit3aeb1d08579c11a5fbf09dfbb2ff19a91e32a5ef (patch)
tree911a212683923a8112d48969a613a9cd506d4c65
parentc0dd1037c8db32e726a7764cf8ac064b50114387 (diff)
downloadbcm5719-llvm-3aeb1d08579c11a5fbf09dfbb2ff19a91e32a5ef.tar.gz
bcm5719-llvm-3aeb1d08579c11a5fbf09dfbb2ff19a91e32a5ef.zip
Fix a bug related to constant islands for Mips16 and mips16/32 dual mode.
The determination of when we are doing constant pools was being made too early in the asm printer. llvm-svn: 195781
-rw-r--r--llvm/lib/Target/Mips/MipsAsmPrinter.h5
-rw-r--r--llvm/test/CodeGen/Mips/fpnotneeded.ll6
2 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.h b/llvm/lib/Target/Mips/MipsAsmPrinter.h
index 11c6acd208d..b3060ad9306 100644
--- a/llvm/lib/Target/Mips/MipsAsmPrinter.h
+++ b/llvm/lib/Target/Mips/MipsAsmPrinter.h
@@ -50,7 +50,6 @@ private:
/// pool entries so we can properly mark them as data regions.
bool InConstantPool;
- bool UsingConstantPools;
public:
@@ -62,8 +61,6 @@ public:
: AsmPrinter(TM, Streamer), MCP(0), InConstantPool(false),
MCInstLowering(*this) {
Subtarget = &TM.getSubtarget<MipsSubtarget>();
- UsingConstantPools =
- (Subtarget->inMips16Mode() && Subtarget->useConstantIslands());
}
virtual const char *getPassName() const {
@@ -73,6 +70,8 @@ public:
virtual bool runOnMachineFunction(MachineFunction &MF);
virtual void EmitConstantPool() LLVM_OVERRIDE {
+ bool UsingConstantPools =
+ (Subtarget->inMips16Mode() && Subtarget->useConstantIslands());
if (!UsingConstantPools)
AsmPrinter::EmitConstantPool();
// we emit constant pools customly!
diff --git a/llvm/test/CodeGen/Mips/fpnotneeded.ll b/llvm/test/CodeGen/Mips/fpnotneeded.ll
index b4fab641422..6a4363c5813 100644
--- a/llvm/test/CodeGen/Mips/fpnotneeded.ll
+++ b/llvm/test/CodeGen/Mips/fpnotneeded.ll
@@ -1,4 +1,6 @@
-; RUN: llc -march=mipsel -mcpu=mips32 -relocation-model=static -O3 < %s -mips-os16 | FileCheck %s -check-prefix=32
+; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -relocation-model=static -O3 < %s -mips-os16 | FileCheck %s -check-prefix=32
+
+; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -relocation-model=static -O3 -mips16-constant-islands < %s -mips-os16 | FileCheck %s -check-prefix=cisle
@i = global i32 1, align 4
@f = global float 1.000000e+00, align 4
@@ -57,6 +59,8 @@ entry:
; 32: restore {{.+}}
; 32: .end foo
+; cisle: .end foo
+
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
OpenPOWER on IntegriCloud