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