diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-11-23 02:16:24 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-11-23 02:16:24 +0000 |
commit | ec5c6245502dbead84c7ef49e542193b037fc7cb (patch) | |
tree | f7351ccca1a168f8ef6ef661051030ae0d4e149a /clang/test/CodeGen/windows-struct-abi.c | |
parent | fb3805576b3b2907cbd0c425656d93d4eaed729f (diff) | |
download | bcm5719-llvm-ec5c6245502dbead84c7ef49e542193b037fc7cb.tar.gz bcm5719-llvm-ec5c6245502dbead84c7ef49e542193b037fc7cb.zip |
CodeGen: tweak struct ABI handling
Cygwin and MinGW fail to conform to the underlying system's structure passing
ABI. Make the check more precise to ensure that we correctly generate code for
the itanium environment.
llvm-svn: 222626
Diffstat (limited to 'clang/test/CodeGen/windows-struct-abi.c')
-rw-r--r-- | clang/test/CodeGen/windows-struct-abi.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/CodeGen/windows-struct-abi.c b/clang/test/CodeGen/windows-struct-abi.c new file mode 100644 index 00000000000..ec4bab6b47d --- /dev/null +++ b/clang/test/CodeGen/windows-struct-abi.c @@ -0,0 +1,27 @@ +// 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 void @return_f1(%struct.f1* noalias sret %agg.result) + +void receive_f1(struct f1 a0) { } + +// CHECK: define void @receive_f1(%struct.f1* byval align 4 %a0) + +struct f2 { + float f; + float g; +}; + +struct f2 return_f2(void) { while (1); } + +// CHECK: define void @return_f2(%struct.f2* noalias sret %agg.result) + +void receive_f2(struct f2 a0) { } + +// CHECK: define void @receive_f2(%struct.f2* byval align 4 %a0) + |