diff options
-rw-r--r-- | test/CodeGenObjC/x86-64-struct-return-gc.m | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/CodeGenObjC/x86-64-struct-return-gc.m b/test/CodeGenObjC/x86-64-struct-return-gc.m new file mode 100644 index 0000000000..32a321c0b7 --- /dev/null +++ b/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(); +} |