From d1b3da621bf5134d304d02177a2c6ff912b0d18e Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 25 Jul 2008 00:55:17 +0000 Subject: [PATCH] Teach ARM isLegalAddressingMode to handle unknown type without crashing. This fixes pr2589. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54004 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMISelLowering.cpp | 2 +- test/CodeGen/ARM/2008-07-24-CodeGenPrepCrash.ll | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/ARM/2008-07-24-CodeGenPrepCrash.ll diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 15c225aebe7..afc7ebc4c91 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -1598,7 +1598,7 @@ static bool isLegalAddressImmediate(int64_t V, MVT VT, /// by AM is legal for this target, for a load/store of the specified type. bool ARMTargetLowering::isLegalAddressingMode(const AddrMode &AM, const Type *Ty) const { - if (!isLegalAddressImmediate(AM.BaseOffs, getValueType(Ty), Subtarget)) + if (!isLegalAddressImmediate(AM.BaseOffs, getValueType(Ty, true), Subtarget)) return false; // Can never fold addr of global into load/store. diff --git a/test/CodeGen/ARM/2008-07-24-CodeGenPrepCrash.ll b/test/CodeGen/ARM/2008-07-24-CodeGenPrepCrash.ll new file mode 100644 index 00000000000..6ea75eb5c79 --- /dev/null +++ b/test/CodeGen/ARM/2008-07-24-CodeGenPrepCrash.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=arm +; PR2589 + +define void @main({ i32 }*) { +entry: + %sret1 = alloca { i32 } ; <{ i32 }*> [#uses=1] + load { i32 }* %sret1 ; <{ i32 }>:1 [#uses=0] + ret void +}