xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/x86_32-arguments-win32.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -w -triple i386-pc-win32 -emit-llvm -o - %s | FileCheck %s
2*f4a2713aSLionel Sambuc 
3*f4a2713aSLionel Sambuc // CHECK-LABEL: define i64 @f1_1()
4*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @f1_2(%struct.s1* byval align 4 %a0)
5*f4a2713aSLionel Sambuc struct s1 {
6*f4a2713aSLionel Sambuc   int a;
7*f4a2713aSLionel Sambuc   int b;
8*f4a2713aSLionel Sambuc };
f1_1(void)9*f4a2713aSLionel Sambuc struct s1 f1_1(void) { while (1) {} }
f1_2(struct s1 a0)10*f4a2713aSLionel Sambuc void f1_2(struct s1 a0) {}
11*f4a2713aSLionel Sambuc 
12*f4a2713aSLionel Sambuc // CHECK-LABEL: define i32 @f2_1()
13*f4a2713aSLionel Sambuc struct s2 {
14*f4a2713aSLionel Sambuc   short a;
15*f4a2713aSLionel Sambuc   short b;
16*f4a2713aSLionel Sambuc };
f2_1(void)17*f4a2713aSLionel Sambuc struct s2 f2_1(void) { while (1) {} }
18*f4a2713aSLionel Sambuc 
19*f4a2713aSLionel Sambuc // CHECK-LABEL: define i16 @f3_1()
20*f4a2713aSLionel Sambuc struct s3 {
21*f4a2713aSLionel Sambuc   char a;
22*f4a2713aSLionel Sambuc   char b;
23*f4a2713aSLionel Sambuc };
f3_1(void)24*f4a2713aSLionel Sambuc struct s3 f3_1(void) { while (1) {} }
25*f4a2713aSLionel Sambuc 
26*f4a2713aSLionel Sambuc // CHECK-LABEL: define i8 @f4_1()
27*f4a2713aSLionel Sambuc struct s4 {
28*f4a2713aSLionel Sambuc   char a:4;
29*f4a2713aSLionel Sambuc   char b:4;
30*f4a2713aSLionel Sambuc };
f4_1(void)31*f4a2713aSLionel Sambuc struct s4 f4_1(void) { while (1) {} }
32*f4a2713aSLionel Sambuc 
33*f4a2713aSLionel Sambuc // CHECK-LABEL: define i64 @f5_1()
34*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @f5_2(%struct.s5* byval align 4)
35*f4a2713aSLionel Sambuc struct s5 {
36*f4a2713aSLionel Sambuc   double a;
37*f4a2713aSLionel Sambuc };
f5_1(void)38*f4a2713aSLionel Sambuc struct s5 f5_1(void) { while (1) {} }
f5_2(struct s5 a0)39*f4a2713aSLionel Sambuc void f5_2(struct s5 a0) {}
40*f4a2713aSLionel Sambuc 
41*f4a2713aSLionel Sambuc // CHECK-LABEL: define i32 @f6_1()
42*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @f6_2(%struct.s6* byval align 4 %a0)
43*f4a2713aSLionel Sambuc struct s6 {
44*f4a2713aSLionel Sambuc   float a;
45*f4a2713aSLionel Sambuc };
f6_1(void)46*f4a2713aSLionel Sambuc struct s6 f6_1(void) { while (1) {} }
f6_2(struct s6 a0)47*f4a2713aSLionel Sambuc void f6_2(struct s6 a0) {}
48*f4a2713aSLionel Sambuc 
49