10e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// RUN: %clang_cc1 -triple i686-windows-itanium -emit-llvm -o - %s | FileCheck %s
20e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
30e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f1 {
40e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float f;
50e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
60e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
70e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f1 return_f1(void) { while (1); }
80e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
90e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: define i32 @return_f1()
100e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
110e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid receive_f1(struct f1 a0) { }
120e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
130e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: define void @receive_f1(%struct.f1* byval align 4 %a0)
140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
150e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f2 {
160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float f;
170e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float g;
180e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
190e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
200e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f2 return_f2(void) { while (1); }
210e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: define i64 @return_f2()
230e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
240e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid receive_f2(struct f2 a0) { }
250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
260e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: define void @receive_f2(%struct.f2* byval align 4 %a0)
270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
280e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f4 {
290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float f;
300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float g;
310e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float h;
320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  float i;
330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines};
340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
350e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstruct f4 return_f4(void) { while (1); }
360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
370e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: define void @return_f4(%struct.f4* noalias sret %agg.result)
380e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
390e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesvoid receive_f4(struct f4 a0) { }
400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
410e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// CHECK: define void @receive_f4(%struct.f4* byval align 4 %a0)
420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
43