From: Chad Rosier Date: Fri, 1 Mar 2013 19:12:05 +0000 (+0000) Subject: Generate an error message instead of asserting or segfaulting when we can't X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7590022f4079dcd956b99e2f10a028f2158ece53;p=oota-llvm.git Generate an error message instead of asserting or segfaulting when we can't handle indirect register inputs. rdar://13322011 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176367 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 958bd3e701b..9a0bd235d7e 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -6168,6 +6168,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) { Ctx.emitError(CS.getInstruction(), "inline asm not supported yet:" " don't know how to handle tied " "indirect register inputs"); + report_fatal_error("Cannot handle indirect register inputs!"); } RegsForValue MatchedRegs; diff --git a/test/CodeGen/ARM/indirect-reg-input.ll b/test/CodeGen/ARM/indirect-reg-input.ll new file mode 100644 index 00000000000..86728fa6193 --- /dev/null +++ b/test/CodeGen/ARM/indirect-reg-input.ll @@ -0,0 +1,14 @@ +; RUN: llc < %s -march=arm -mcpu=cortex-a8 2>&1 | FileCheck %s + +; Check for error message: +; CHECK: error: inline asm not supported yet: don't know how to handle tied indirect register inputs + +%struct.my_stack = type { %struct.myjmp_buf } +%struct.myjmp_buf = type { [6 x i32] } + +define void @switch_to_stack(%struct.my_stack* %stack) nounwind { +entry: + %regs = getelementptr inbounds %struct.my_stack* %stack, i32 0, i32 0 + tail call void asm "\0A", "=*r,*0"(%struct.myjmp_buf* %regs, %struct.myjmp_buf* %regs) + ret void +}