9aafb36c7573348db64ad91c119f9151ef50fd00
[oota-llvm.git] / test / Feature / callingconventions.ll
1 ; RUN: llvm-as < %s | llvm-dis > %t1.ll
2 ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3 ; RUN: diff %t1.ll %t2.ll
4
5 define fastcc void @foo() {
6         ret void
7 }
8
9 define coldcc void @bar() {
10         call fastcc void @foo( )
11         ret void
12 }
13
14 define void @structret({ i8 }* sret  %P) {
15         call void @structret( { i8 }* sret  %P )
16         ret void
17 }
18
19 define void @foo2() {
20         ret void
21 }
22
23 define coldcc void @bar2() {
24         call fastcc void @foo( )
25         ret void
26 }
27
28 define cc42 void @bar3() personality i32 (...)* @__gxx_personality_v0 {
29   invoke fastcc void @foo( )
30     to label %Ok unwind label %U
31
32 Ok:
33   ret void
34
35 U:
36   %exn = landingpad {i8*, i32}
37             cleanup
38   resume { i8*, i32 } %exn
39 }
40
41 define void @bar4() personality i32 (...)* @__gxx_personality_v0 {
42   call cc42 void @bar( )
43   invoke cc42 void @bar3( )
44     to label %Ok unwind label %U
45
46 Ok:
47   ret void
48
49 U:
50   %exn = landingpad {i8*, i32}
51             cleanup
52   resume { i8*, i32 } %exn
53 }
54
55 declare ghccc void @ghc_callee()
56
57 define void @ghc_caller() {
58   call ghccc void @ghc_callee()
59   ret void
60 }
61
62 declare i32 @__gxx_personality_v0(...)