1 // 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 27