Fix a bug related to constant islands for Mips16 and mips16/32 dual mode.
authorReed Kotler <rkotler@mips.com>
Tue, 26 Nov 2013 20:38:40 +0000 (20:38 +0000)
committerReed Kotler <rkotler@mips.com>
Tue, 26 Nov 2013 20:38:40 +0000 (20:38 +0000)
The determination of when we are doing constant pools was being made too
early in the asm printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195781 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsAsmPrinter.h
test/CodeGen/Mips/fpnotneeded.ll

index 11c6acd208d1dd2e53ef767af4d106f7359c0706..b3060ad93067ad941a22efb3f02a2848b2af8d76 100644 (file)
@@ -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!
index b4fab6414223e980c31521e3ed675bb501c34a5e..6a4363c58136f870f94831cfef23acebfef1f893 100644 (file)
@@ -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" }