blob: 3b2c433a89ffdfa2dcfc1ab1518d7b35fde1ddaa [file] [log] [blame]
Daniel Dunbar4fcfde42009-11-08 01:45:36 +00001// RUN: clang-cc -triple armv7-apple-darwin9 -target-abi=apcs-gnu -emit-llvm -w -o - %s | FileCheck -check-prefix=APCS-GNU %s
Daniel Dunbar16a08082009-09-14 00:56:55 +00002// RUN: clang-cc -triple armv7-apple-darwin9 -target-abi=aapcs -emit-llvm -w -o - %s | FileCheck -check-prefix=AAPCS %s
3
4// APCS-GNU: define arm_apcscc signext i8 @f0()
5// AAPCS: define arm_aapcscc signext i8 @f0()
6char f0(void) {
7 return 0;
8}
9
10// APCS-GNU: define arm_apcscc i8 @f1()
11// AAPCS: define arm_aapcscc i8 @f1()
12struct s1 { char f0; };
13struct s1 f1(void) {}
14
15// APCS-GNU: define arm_apcscc i16 @f2()
16// AAPCS: define arm_aapcscc i16 @f2()
17struct s2 { short f0; };
18struct s2 f2(void) {}
19
20// APCS-GNU: define arm_apcscc i32 @f3()
21// AAPCS: define arm_aapcscc i32 @f3()
22struct s3 { int f0; };
23struct s3 f3(void) {}
24
25// APCS-GNU: define arm_apcscc i32 @f4()
26// AAPCS: define arm_aapcscc i32 @f4()
27struct s4 { struct s4_0 { int f0; } f0; };
28struct s4 f4(void) {}
29
30// APCS-GNU: define arm_apcscc void @f5(
31// APCS-GNU: struct.s5* noalias sret
32// AAPCS: define arm_aapcscc i32 @f5()
33struct s5 { struct { } f0; int f1; };
34struct s5 f5(void) {}
35
36// APCS-GNU: define arm_apcscc void @f6(
37// APCS-GNU: struct.s6* noalias sret
38// AAPCS: define arm_aapcscc i32 @f6()
39struct s6 { int f0[1]; };
40struct s6 f6(void) {}
41
42// APCS-GNU: define arm_apcscc void @f7()
43// AAPCS: define arm_aapcscc void @f7()
44struct s7 { struct { int : 0; } f0; };
45struct s7 f7(void) {}
46
47// APCS-GNU: define arm_apcscc void @f8(
48// APCS-GNU: struct.s8* noalias sret
49// AAPCS: define arm_aapcscc void @f8()
50struct s8 { struct { int : 0; } f0[1]; };
51struct s8 f8(void) {}
52
53// APCS-GNU: define arm_apcscc i32 @f9()
54// AAPCS: define arm_aapcscc i32 @f9()
55struct s9 { int f0; int : 0; };
56struct s9 f9(void) {}
57
58// APCS-GNU: define arm_apcscc i32 @f10()
59// AAPCS: define arm_aapcscc i32 @f10()
60struct s10 { int f0; int : 0; int : 0; };
61struct s10 f10(void) {}
62
63// APCS-GNU: define arm_apcscc void @f11(
64// APCS-GNU: struct.s10* noalias sret
65// AAPCS: define arm_aapcscc i32 @f11()
66struct s11 { int : 0; int f0; };
67struct s11 f11(void) {}
68
69// APCS-GNU: define arm_apcscc i32 @f12()
70// AAPCS: define arm_aapcscc i32 @f12()
71union u12 { char f0; short f1; int f2; };
72union u12 f12(void) {}
Daniel Dunbarb0d58192009-09-14 02:20:34 +000073
74// APCS-GNU: define arm_apcscc void @f13(
75// APCS-GNU: struct.s13* noalias sret
76
77// FIXME: This should return a float.
78// AAPCS-FIXME: define arm_aapcscc float @f13()
79struct s13 { float f0; };
80struct s13 f13(void) {}
81
82// APCS-GNU: define arm_apcscc void @f14(
83// APCS-GNU: struct.s13* noalias sret
84// AAPCS: define arm_aapcscc i32 @f14()
85union u14 { float f0; };
86union u14 f14(void) {}
Daniel Dunbar42025572009-09-14 21:54:03 +000087
88// APCS-GNU: define arm_apcscc void @f15()
89// AAPCS: define arm_aapcscc void @f15()
90void f15(struct s7 a0) {}
91
92// APCS-GNU: define arm_apcscc void @f16()
93// AAPCS: define arm_aapcscc void @f16()
94void f16(struct s8 a0) {}