ns_consume_null_check.m [plain text]
// RUN: // rdar://10444476
@interface NSObject
- (id) new;
@end
@interface MyObject : NSObject
- (char)isEqual:(id) __attribute__((ns_consumed)) object;
@end
MyObject *x;
void foo()
{
id obj = [NSObject new];
[x isEqual : obj];
}
// CHECK: [[TMP:// CHECK: [[FIVE:// CHECK-NEXT: [[SIX:// CHECK-NEXT: [[SEVEN:// CHECK-NEXT: br i1 [[SEVEN]], label [[NULLINIT:// CHECK: [[FN:// CHECK-NEXT: [[EIGHT:// CHECK-NEXT: [[CALL:// CHECK-NEXT: store i8 [[CALL]], i8* [[TMP]]
// CHECK-NEXT: br label [[CONT:// CHECK: call void @objc_release(i8* [[FIVE]]) nounwind
// CHECK-NEXT: call void @llvm.memset
// CHECK-NEXT: br label [[CONT]]