1// RUN: %clang_cc1 -fblocks -triple arm64-apple-darwin %s -emit-llvm -o - | FileCheck %s 2 3struct stret { int x[100]; }; 4struct stret one = {{1}}; 5 6@interface Test @end 7 8@implementation Test 9+(struct stret) method { return one; } 10@end 11 12int main(int argc, const char **argv) 13{ 14 struct stret s; 15 s = [(id)(argc&~255) method]; 16 // CHECK: call void @objc_msgSend(ptr dead_on_unwind writable sret(%struct.stret) align 4 [[T0:%[^,]+]] 17 // CHECK: call void @llvm.memset.p0.i64(ptr align 4 [[T0]], i8 0, i64 400, i1 false) 18 19 s = [Test method]; 20 // CHECK: call void @objc_msgSend(ptr dead_on_unwind writable sret(%struct.stret) align 4 [[T1:%[^,]+]] 21 // CHECK-NOT: call void @llvm.memset.p0.i64( 22 23 [(id)(argc&~255) method]; 24 // CHECK: call void @objc_msgSend(ptr dead_on_unwind writable sret(%struct.stret) align 4 [[T1:%[^,]+]] 25 // CHECK-NOT: call void @llvm.memset.p0.i64( 26 27 [Test method]; 28 // CHECK: call void @objc_msgSend(ptr dead_on_unwind writable sret(%struct.stret) align 4 [[T1:%[^,]+]] 29 // CHECK-NOT: call void @llvm.memset.p0.i64( 30} 31