blob: 42d630b4ac1d82476e6cfd9dbfcb8890c95483ed [file] [log] [blame]
Paul Robinsonafd2dde2016-06-16 00:42:36 +00001// RUN: %clang_cc1 -triple arm-apple-ios -emit-llvm -debug-info-kind=limited -fblocks %s -o - | FileCheck %s
2// Objective-C code cargo-culted from debug-info-lifetime-crash.m.
3@protocol NSObject
4- (id)copy;
5@end
6@class W;
7@interface View1
8@end
9@implementation Controller {
10 void (^Block)(void);
11}
12- (void)View:(View1 *)View foo:(W *)W
13{
14 // The reference from inside the block implicitly creates another
15 // local variable for the referenced member. That is what gets
16 // suppressed by the attribute. It still gets debug info as a
17 // member, though.
18 // CHECK-NOT: !DILocalVariable(name: "weakSelf"
19 // CHECK: !DIDerivedType({{.*}} name: "weakSelf"
20 // CHECK-NOT: !DILocalVariable(name: "weakSelf"
21 __attribute__((nodebug)) __typeof(self) weakSelf = self;
22 Block = [^{
23 __typeof(self) strongSelf = weakSelf;
24 } copy];
25}
26@end