mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195781 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d0d8d6462a
commit
c0dfa22e19
@ -50,7 +50,6 @@ private:
|
|||||||
/// pool entries so we can properly mark them as data regions.
|
/// pool entries so we can properly mark them as data regions.
|
||||||
bool InConstantPool;
|
bool InConstantPool;
|
||||||
|
|
||||||
bool UsingConstantPools;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -62,8 +61,6 @@ public:
|
|||||||
: AsmPrinter(TM, Streamer), MCP(0), InConstantPool(false),
|
: AsmPrinter(TM, Streamer), MCP(0), InConstantPool(false),
|
||||||
MCInstLowering(*this) {
|
MCInstLowering(*this) {
|
||||||
Subtarget = &TM.getSubtarget<MipsSubtarget>();
|
Subtarget = &TM.getSubtarget<MipsSubtarget>();
|
||||||
UsingConstantPools =
|
|
||||||
(Subtarget->inMips16Mode() && Subtarget->useConstantIslands());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const char *getPassName() const {
|
virtual const char *getPassName() const {
|
||||||
@ -73,6 +70,8 @@ public:
|
|||||||
virtual bool runOnMachineFunction(MachineFunction &MF);
|
virtual bool runOnMachineFunction(MachineFunction &MF);
|
||||||
|
|
||||||
virtual void EmitConstantPool() LLVM_OVERRIDE {
|
virtual void EmitConstantPool() LLVM_OVERRIDE {
|
||||||
|
bool UsingConstantPools =
|
||||||
|
(Subtarget->inMips16Mode() && Subtarget->useConstantIslands());
|
||||||
if (!UsingConstantPools)
|
if (!UsingConstantPools)
|
||||||
AsmPrinter::EmitConstantPool();
|
AsmPrinter::EmitConstantPool();
|
||||||
// we emit constant pools customly!
|
// we emit constant pools customly!
|
||||||
|
@ -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
|
@i = global i32 1, align 4
|
||||||
@f = global float 1.000000e+00, align 4
|
@f = global float 1.000000e+00, align 4
|
||||||
@ -57,6 +59,8 @@ entry:
|
|||||||
; 32: restore {{.+}}
|
; 32: restore {{.+}}
|
||||||
; 32: .end foo
|
; 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" }
|
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" }
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user