forked from OSchip/llvm-project
ARM: Fix crash in ARM backend inside of ARMConstantIslandPass
The ARM backend did not expect LDRBi12 to hold a constant pool operand. Allow for LLVM to deal with the instruction similar to how it deals with LDRi12. This fixes PR16215. llvm-svn: 183238
This commit is contained in:
parent
f69ce86048
commit
452f1f97bd
|
@ -753,6 +753,7 @@ initializeFunctionInfo(const std::vector<MachineInstr*> &CPEMIs) {
|
|||
Scale = 4;
|
||||
break;
|
||||
|
||||
case ARM::LDRBi12:
|
||||
case ARM::LDRi12:
|
||||
case ARM::LDRcp:
|
||||
case ARM::t2LDRpci:
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
; RUN: llc < %s -mtriple=armv4t-unknown-linux-gnueabi -verify-machineinstrs | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64"
|
||||
target triple = "armv4t-unknown-linux-gnueabi"
|
||||
|
||||
@a = global i32 0, align 4
|
||||
|
||||
define i32 @foo() {
|
||||
entry:
|
||||
ret i32 and (i32 ptrtoint (i32* @a to i32), i32 255)
|
||||
}
|
||||
|
||||
; CHECK: foo:
|
||||
; CHECK: ldrb r0, .LCPI0_0
|
Loading…
Reference in New Issue