// RUN: %clang_cc1 -triple i686-windows-itanium -emit-llvm -o - %s | FileCheck %s

struct f1 {
  float f;
};

struct f1 return_f1(void) { while (1); }

// CHECK: define dso_local i32 @return_f1()

void receive_f1(struct f1 a0) { }

// CHECK: define dso_local void @receive_f1(float %a0.0)

struct f2 {
  float f;
  float g;
};

struct f2 return_f2(void) { while (1); }

// CHECK: define dso_local i64 @return_f2()

void receive_f2(struct f2 a0) { }

// CHECK: define dso_local void @receive_f2(float %a0.0, float %a0.1)

struct f4 {
  float f;
  float g;
  float h;
  float i;
};

struct f4 return_f4(void) { while (1); }

// CHECK: define dso_local void @return_f4(%struct.f4* noalias sret %agg.result)

void receive_f4(struct f4 a0) { }

// CHECK: define dso_local void @receive_f4(float %a0.0, float %a0.1, float %a0.2, float %a0.3)

