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