Lines Matching refs:tail
4 ; Perform tail call optimization for global address.
8 ; CHECK: tail callee_tail
10 %r = tail call i32 @callee_tail(i32 %i)
14 ; Perform tail call optimization for external symbol.
21 ; CHECK: tail memcpy
22 …tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @dest, i…
26 ; Perform tail call optimization for external symbol.
32 ; CHECK: tail memcpy
33 …tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @dest_pg…
37 ; Perform indirect tail call optimization (for function pointer call).
44 ; CHECK-NOT: tail callee_indirect1
45 ; CHECK-NOT: tail callee_indirect2
57 tail call void %callee()
75 %9 = tail call i32 %0(i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7)
79 ; Do not tail call optimize functions with varargs passed by stack.
83 ; CHECK-NOT: tail callee_varargs
86 …%call = tail call i32 (i32, ...) @callee_varargs(i32 %a, i32 %b, i32 %b, i32 %a, i32 %a, i32 %b, i…
90 ; Do not tail call optimize if stack is used to pass parameters.
94 ; CHECK-NOT: tail callee_args
97 …%r = tail call i32 @callee_args(i32 %a, i32 %b, i32 %c, i32 %dd, i32 %e, i32 %ff, i32 %g, i32 %h, …
101 ; Do not tail call optimize if parameters need to be passed indirectly.
105 ; CHECK-NOT: tail callee_indirect_args
108 %call = tail call i32 @callee_indirect_args(fp128 0xL00000000000000003FFF000000000000)
112 ; Externally-defined functions with weak linkage should not be tail-called.
113 ; The behaviour of branch instructions in this situation (as used for tail
115 ; the tail call with a return.
119 ; CHECK-NOT: tail callee_weak
122 tail call void @callee_weak()
132 ; CHECK-NOT: tail callee_irq
135 tail call void @callee_irq()
141 ; we want to reuse during a tail call. Do not tail call optimize functions with
146 ; CHECK-NOT: tail callee_byval
150 %r = tail call i32 @callee_byval(i32** byval(i32*) %a)
154 ; Do not tail call optimize if callee uses structret semantics.
161 ; CHECK-NOT: tail callee_struct
164 tail call void @callee_struct(%struct.A* sret(%struct.A) @a)
168 ; Do not tail call optimize if caller uses structret semantics.
172 ; CHECK-NOT: tail callee_nostruct
175 tail call void @callee_nostruct()
179 ; Do not tail call optimize if disabled.
180 define i32 @disable_tail_calls(i32 %i) nounwind "disable-tail-calls"="true" {
182 ; CHECK-NOT: tail callee_nostruct
185 %rv = tail call i32 @callee_tail(i32 %i)
189 ; Duplicate returns to enable tail call optimizations.
196 ; CHECK: tail test2
197 ; CHECK: tail test
198 ; CHECK: tail test1
199 ; CHECK: tail test3
205 %call = tail call i32 @test()
213 %call3 = tail call i32 @test1()
221 %call7 = tail call i32 @test2()
225 %call9 = tail call i32 @test3()