1931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-REG
2931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-apple-darwin9 -fpcc-struct-return -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PCC
3931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-apple-darwin9 -freg-struct-return -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-REG
4931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PCC
5931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-pc-linux-gnu -fpcc-struct-return -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PCC
6931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-pc-linux-gnu -freg-struct-return -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-REG
7931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-pc-win32 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-REG
8931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-pc-win32 -fpcc-struct-return -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PCC
9931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -triple i386-pc-win32 -freg-struct-return -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-REG
10b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall
11b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCalltypedef struct { int a,b,c,d; } Big;
12b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCalltypedef struct { int i; } Small;
13b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCalltypedef struct { short s; } Short;
14b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCalltypedef struct { } ZeroSized;
15b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall
1693ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @returnBig
17b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall// CHECK: ret void
18b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCallBig returnBig(Big x) { return x; }
19b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall
2093ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-PCC-LABEL: define void @returnSmall
21b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall// CHECK-PCC: ret void
2293ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-REG-LABEL: define i32 @returnSmall
23b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall// CHECK-REG: ret i32
24b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCallSmall returnSmall(Small x) { return x; }
25b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall
2693ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-PCC-LABEL: define void @returnShort
27b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall// CHECK-PCC: ret void
2893ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-REG-LABEL: define i16 @returnShort
29b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall// CHECK-REG: ret i16
30b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCallShort returnShort(Short x) { return x; }
31b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall
3293ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @returnZero()
33b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCall// CHECK: ret void
34b8b52972c72b2ba6fe171c522e5d3d7d69503021John McCallZeroSized returnZero(ZeroSized x) { return x; }
35