blob: 42f8cdd384130e4fec8e56c1a8fd9a85cc082090 [file] [log] [blame]
Dan Gohman8bcba012009-12-18 01:05:06 +00001; RUN: llc < %s -march=x86 -tailcallopt | grep TAILCALL | count 5
Arnold Schwaighofere2d6bbb2007-10-11 19:40:01 +00002
Dan Gohman8bcba012009-12-18 01:05:06 +00003declare fastcc i32 @tailcallee(i32 %a1, i32 %a2, i32 %a3, i32 %a4)
4
5define fastcc i32 @tailcaller(i32 %in1, i32 %in2) nounwind {
Arnold Schwaighofere2d6bbb2007-10-11 19:40:01 +00006entry:
Dan Gohman8bcba012009-12-18 01:05:06 +00007 %tmp11 = tail call fastcc i32 @tailcallee(i32 %in1, i32 %in2, i32 %in1, i32 %in2)
Arnold Schwaighofere2d6bbb2007-10-11 19:40:01 +00008 ret i32 %tmp11
9}
Dan Gohman3510e112009-11-13 18:49:38 +000010
11declare fastcc i8* @alias_callee()
12
13define fastcc noalias i8* @noalias_caller() nounwind {
14 %p = tail call fastcc i8* @alias_callee()
15 ret i8* %p
16}
17
18declare fastcc noalias i8* @noalias_callee()
19
20define fastcc i8* @alias_caller() nounwind {
21 %p = tail call fastcc noalias i8* @noalias_callee()
22 ret i8* %p
23}
Dan Gohmanc0c96112009-11-14 02:06:30 +000024
25declare fastcc i32 @i32_callee()
26
27define fastcc i32 @ret_undef() nounwind {
28 %p = tail call fastcc i32 @i32_callee()
29 ret i32 undef
30}
Dan Gohman8bcba012009-12-18 01:05:06 +000031
32declare fastcc void @does_not_return()
33
34define fastcc i32 @noret() nounwind {
35 tail call fastcc void @does_not_return()
36 unreachable
37}