From b4afb137efbc38462707bab9f5e8bc5c2d07cd2d Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 20 Nov 2009 02:51:26 +0000 Subject: Fix fast-isel to avoid selecting the return instruction if a tail call has been encountered. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89444 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/X86/tailcall-fastisel.ll | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 test/CodeGen/X86/tailcall-fastisel.ll (limited to 'test/CodeGen') diff --git a/test/CodeGen/X86/tailcall-fastisel.ll b/test/CodeGen/X86/tailcall-fastisel.ll new file mode 100644 index 0000000000..d54fb4115b --- /dev/null +++ b/test/CodeGen/X86/tailcall-fastisel.ll @@ -0,0 +1,13 @@ +; RUN: llc < %s -march=x86-64 -tailcallopt -fast-isel | grep TAILCALL + +; Fast-isel shouldn't attempt to handle this tail call, and it should +; cleanly terminate instruction selection in the block after it's +; done to avoid emitting invalid MachineInstrs. + +%0 = type { i64, i32, i8* } + +define fastcc i8* @"visit_array_aux<`Reference>"(%0 %arg, i32 %arg1) nounwind { +fail: ; preds = %entry + %tmp20 = tail call fastcc i8* @"visit_array_aux<`Reference>"(%0 %arg, i32 undef) ; [#uses=1] + ret i8* %tmp20 +} -- cgit v1.2.3-70-g09d2