mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
ARM: FastISel verifier error cleanup.
Constant pool and global value reference instructions need more restricted register classes than plain GPR. rdar://12594152 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189270 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bb4066123d
commit
e3dad19e0d
@ -653,6 +653,7 @@ unsigned ARMFastISel::ARMMaterializeInt(const Constant *C, MVT VT) {
|
|||||||
.addConstantPoolIndex(Idx));
|
.addConstantPoolIndex(Idx));
|
||||||
else
|
else
|
||||||
// The extra immediate is for addrmode2.
|
// The extra immediate is for addrmode2.
|
||||||
|
DestReg = constrainOperandRegClass(TII.get(ARM::LDRcp), DestReg, 0);
|
||||||
AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL,
|
AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL,
|
||||||
TII.get(ARM::LDRcp), DestReg)
|
TII.get(ARM::LDRcp), DestReg)
|
||||||
.addConstantPoolIndex(Idx)
|
.addConstantPoolIndex(Idx)
|
||||||
@ -728,6 +729,7 @@ unsigned ARMFastISel::ARMMaterializeGV(const GlobalValue *GV, MVT VT) {
|
|||||||
AddOptionalDefs(MIB);
|
AddOptionalDefs(MIB);
|
||||||
} else {
|
} else {
|
||||||
// The extra immediate is for addrmode2.
|
// The extra immediate is for addrmode2.
|
||||||
|
DestReg = constrainOperandRegClass(TII.get(ARM::LDRcp), DestReg, 0);
|
||||||
MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(ARM::LDRcp),
|
MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(ARM::LDRcp),
|
||||||
DestReg)
|
DestReg)
|
||||||
.addConstantPoolIndex(Idx)
|
.addConstantPoolIndex(Idx)
|
||||||
@ -3027,12 +3029,14 @@ unsigned ARMFastISel::ARMLowerPICELF(const GlobalValue *GV,
|
|||||||
unsigned DestReg1 = createResultReg(TLI.getRegClassFor(VT));
|
unsigned DestReg1 = createResultReg(TLI.getRegClassFor(VT));
|
||||||
// Load value.
|
// Load value.
|
||||||
if (isThumb2) {
|
if (isThumb2) {
|
||||||
|
DestReg1 = constrainOperandRegClass(TII.get(ARM::t2LDRpci), DestReg1, 0);
|
||||||
AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL,
|
AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL,
|
||||||
TII.get(ARM::t2LDRpci), DestReg1)
|
TII.get(ARM::t2LDRpci), DestReg1)
|
||||||
.addConstantPoolIndex(Idx));
|
.addConstantPoolIndex(Idx));
|
||||||
Opc = UseGOTOFF ? ARM::t2ADDrr : ARM::t2LDRs;
|
Opc = UseGOTOFF ? ARM::t2ADDrr : ARM::t2LDRs;
|
||||||
} else {
|
} else {
|
||||||
// The extra immediate is for addrmode2.
|
// The extra immediate is for addrmode2.
|
||||||
|
DestReg1 = constrainOperandRegClass(TII.get(ARM::LDRcp), DestReg1, 0);
|
||||||
AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt,
|
AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt,
|
||||||
DL, TII.get(ARM::LDRcp), DestReg1)
|
DL, TII.get(ARM::LDRcp), DestReg1)
|
||||||
.addConstantPoolIndex(Idx).addImm(0));
|
.addConstantPoolIndex(Idx).addImm(0));
|
||||||
@ -3046,6 +3050,9 @@ unsigned ARMFastISel::ARMLowerPICELF(const GlobalValue *GV,
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned DestReg2 = createResultReg(TLI.getRegClassFor(VT));
|
unsigned DestReg2 = createResultReg(TLI.getRegClassFor(VT));
|
||||||
|
DestReg2 = constrainOperandRegClass(TII.get(Opc), DestReg2, 0);
|
||||||
|
DestReg1 = constrainOperandRegClass(TII.get(Opc), DestReg1, 1);
|
||||||
|
GlobalBaseReg = constrainOperandRegClass(TII.get(Opc), GlobalBaseReg, 2);
|
||||||
MachineInstrBuilder MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt,
|
MachineInstrBuilder MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt,
|
||||||
DL, TII.get(Opc), DestReg2)
|
DL, TII.get(Opc), DestReg2)
|
||||||
.addReg(DestReg1)
|
.addReg(DestReg1)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=arm-apple-ios | FileCheck %s --check-prefix=ARM
|
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=arm-apple-ios | FileCheck %s --check-prefix=ARM
|
||||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARMv7
|
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARMv7
|
||||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=thumbv7-none-linux-gnueabi | FileCheck %s --check-prefix=THUMB-ELF
|
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=thumbv7-none-linux-gnueabi | FileCheck %s --check-prefix=THUMB-ELF
|
||||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=pic -mtriple=armv7-none-linux-gnueabi | FileCheck %s --check-prefix=ARMv7-ELF
|
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=armv7-none-linux-gnueabi | FileCheck %s --check-prefix=ARMv7-ELF
|
||||||
|
|
||||||
@g = global i32 0, align 4
|
@g = global i32 0, align 4
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user