blob: 8097e49ad3f7b885a757db3d47603b7b58ab8711 [file] [log] [blame]
Venkatraman Govindaraju3b71b0a2011-01-12 03:18:21 +00001; RUN: llc -march=sparc -O0 <%s
Venkatraman Govindaraju88124852013-10-09 12:50:39 +00002; RUN: llc -march=sparc <%s | FileCheck %s --check-prefix=V8
3; RUN: llc -march=sparcv9 <%s | FileCheck %s --check-prefix=V9
4
5; V8-LABEL: test
6; V8: save %sp
7; V8: call foo
8; V8-NEXT: nop
9; V8: call bar
10; V8-NEXT: nop
Venkatraman Govindarajuad40dfc2014-01-10 02:55:27 +000011; V8: ret
Venkatraman Govindaraju88124852013-10-09 12:50:39 +000012; V8-NEXT: restore
13
14; V9-LABEL: test
15; V9: save %sp
16; V9: call foo
17; V9-NEXT: nop
18; V9: call bar
19; V9-NEXT: nop
Venkatraman Govindarajuad40dfc2014-01-10 02:55:27 +000020; V9: ret
Venkatraman Govindaraju88124852013-10-09 12:50:39 +000021; V9-NEXT: restore
Venkatraman Govindaraju3b71b0a2011-01-12 03:18:21 +000022
23define void @test() nounwind {
24entry:
David Blaikie23af6482015-04-16 23:24:18 +000025 %0 = tail call i32 (...) @foo() nounwind
26 tail call void (...) @bar() nounwind
Venkatraman Govindaraju3b71b0a2011-01-12 03:18:21 +000027 ret void
28}
29
30declare i32 @foo(...)
31
32declare void @bar(...)
33
Venkatraman Govindaraju88124852013-10-09 12:50:39 +000034
35; V8-LABEL: test_tail_call_with_return
36; V8: save %sp
37; V8: call foo
38; V8-NEXT: nop
Venkatraman Govindarajuad40dfc2014-01-10 02:55:27 +000039; V8: ret
Venkatraman Govindaraju88124852013-10-09 12:50:39 +000040; V8-NEXT: restore %g0, %o0, %o0
41
42; V9-LABEL: test_tail_call_with_return
43; V9: save %sp
44; V9: call foo
45; V9-NEXT: nop
Venkatraman Govindarajuad40dfc2014-01-10 02:55:27 +000046; V9: ret
Venkatraman Govindaraju88124852013-10-09 12:50:39 +000047; V9-NEXT: restore %g0, %o0, %o0
48
49define i32 @test_tail_call_with_return() nounwind {
50entry:
David Blaikie23af6482015-04-16 23:24:18 +000051 %0 = tail call i32 (...) @foo() nounwind
Venkatraman Govindaraju88124852013-10-09 12:50:39 +000052 ret i32 %0
53}