diff options
author | Anders Carlsson <andersca@mac.com> | 2009-12-24 20:21:41 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-12-24 20:21:41 +0000 |
commit | b2d47e0eaaddc1bcc631b7928c4bf7dc82d06810 (patch) | |
tree | fc087ee6731d21acf90a50af234a440fef0fb705 | |
parent | 8e8eaa14f7e1cc5376fb53645aed83212cf9cec4 (diff) | |
download | bcm5719-llvm-b2d47e0eaaddc1bcc631b7928c4bf7dc82d06810.tar.gz bcm5719-llvm-b2d47e0eaaddc1bcc631b7928c4bf7dc82d06810.zip |
Add a test for x86-64 struct returns under gc.
llvm-svn: 92140
-rw-r--r-- | clang/test/CodeGenObjC/x86-64-struct-return-gc.m | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjC/x86-64-struct-return-gc.m b/clang/test/CodeGenObjC/x86-64-struct-return-gc.m new file mode 100644 index 00000000000..32a321c0b7d --- /dev/null +++ b/clang/test/CodeGenObjC/x86-64-struct-return-gc.m @@ -0,0 +1,31 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck %s +struct Coerce { + id a; +}; + +struct Coerce coerce_func(void); + +// CHECK: define void @Coerce_test() +void Coerce_test(void) { + struct Coerce c; + + // CHECK: call i64 @coerce_func + // CHECK: call i8* @objc_memmove_collectable( + c = coerce_func(); +} + +struct Indirect { + id a; + int b[10]; +}; + +struct Indirect indirect_func(void); + +// CHECK: define void @Indirect_test() +void Indirect_test(void) { + struct Indirect i; + + // CHECK: call void @indirect_func(%struct.Indirect* noalias sret + // CHECK: call i8* @objc_memmove_collectable( + i = indirect_func(); +} |