xref: /aosp_15_r20/external/clang/test/CodeGen/windows-struct-abi.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple i686-windows-itanium -emit-llvm -o - %s | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li struct f1 {
4*67e74705SXin Li   float f;
5*67e74705SXin Li };
6*67e74705SXin Li 
return_f1(void)7*67e74705SXin Li struct f1 return_f1(void) { while (1); }
8*67e74705SXin Li 
9*67e74705SXin Li // CHECK: define i32 @return_f1()
10*67e74705SXin Li 
receive_f1(struct f1 a0)11*67e74705SXin Li void receive_f1(struct f1 a0) { }
12*67e74705SXin Li 
13*67e74705SXin Li // CHECK: define void @receive_f1(float %a0.0)
14*67e74705SXin Li 
15*67e74705SXin Li struct f2 {
16*67e74705SXin Li   float f;
17*67e74705SXin Li   float g;
18*67e74705SXin Li };
19*67e74705SXin Li 
return_f2(void)20*67e74705SXin Li struct f2 return_f2(void) { while (1); }
21*67e74705SXin Li 
22*67e74705SXin Li // CHECK: define i64 @return_f2()
23*67e74705SXin Li 
receive_f2(struct f2 a0)24*67e74705SXin Li void receive_f2(struct f2 a0) { }
25*67e74705SXin Li 
26*67e74705SXin Li // CHECK: define void @receive_f2(float %a0.0, float %a0.1)
27*67e74705SXin Li 
28*67e74705SXin Li struct f4 {
29*67e74705SXin Li   float f;
30*67e74705SXin Li   float g;
31*67e74705SXin Li   float h;
32*67e74705SXin Li   float i;
33*67e74705SXin Li };
34*67e74705SXin Li 
return_f4(void)35*67e74705SXin Li struct f4 return_f4(void) { while (1); }
36*67e74705SXin Li 
37*67e74705SXin Li // CHECK: define void @return_f4(%struct.f4* noalias sret %agg.result)
38*67e74705SXin Li 
receive_f4(struct f4 a0)39*67e74705SXin Li void receive_f4(struct f4 a0) { }
40*67e74705SXin Li 
41*67e74705SXin Li // CHECK: define void @receive_f4(float %a0.0, float %a0.1, float %a0.2, float %a0.3)
42*67e74705SXin Li 
43