31 lines · plain
1// RUN: %clang_cc1 -fblocks -triple arm64-apple-darwin %s -emit-llvm -o - | FileCheck %s2 3struct stret { int x[100]; };4struct stret one = {{1}};5 6@interface Test @end7 8@implementation Test9+(struct stret) method { return one; }10@end11 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