[llvm] r176367 - Generate an error message instead of asserting or segfaulting when we can't

Chad Rosier mcrosier at apple.com
Fri Mar 1 11:12:06 PST 2013


Author: mcrosier
Date: Fri Mar  1 13:12:05 2013
New Revision: 176367

URL: http://llvm.org/viewvc/llvm-project?rev=176367&view=rev
Log:
Generate an error message instead of asserting or segfaulting when we can't
handle indirect register inputs.
rdar://13322011

Added:
    llvm/trunk/test/CodeGen/ARM/indirect-reg-input.ll
Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=176367&r1=176366&r2=176367&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Fri Mar  1 13:12:05 2013
@@ -6168,6 +6168,7 @@ void SelectionDAGBuilder::visitInlineAsm
             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;

Added: llvm/trunk/test/CodeGen/ARM/indirect-reg-input.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/indirect-reg-input.ll?rev=176367&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/indirect-reg-input.ll (added)
+++ llvm/trunk/test/CodeGen/ARM/indirect-reg-input.ll Fri Mar  1 13:12:05 2013
@@ -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
+}





More information about the llvm-commits mailing list