From 06b47695fb30a418e8e0b02485f003021e9a1687 Mon Sep 17 00:00:00 2001 From: Reed Kotler Date: Tue, 26 Nov 2013 20:38:40 +0000 Subject: [PATCH] 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 --- lib/Target/Mips/MipsAsmPrinter.h | 5 ++--- test/CodeGen/Mips/fpnotneeded.ll | 6 +++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/Target/Mips/MipsAsmPrinter.h b/lib/Target/Mips/MipsAsmPrinter.h index 11c6acd208d..b3060ad9306 100644 --- a/lib/Target/Mips/MipsAsmPrinter.h +++ b/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(); - 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/test/CodeGen/Mips/fpnotneeded.ll b/test/CodeGen/Mips/fpnotneeded.ll index b4fab641422..6a4363c5813 100644 --- a/test/CodeGen/Mips/fpnotneeded.ll +++ b/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" }