// RUN: %clang_cc1 -triple arm-apple-ios -emit-llvm -debug-info-kind=limited -fblocks %s -o - | FileCheck %s // Objective-C code cargo-culted from debug-info-lifetime-crash.m. @protocol NSObject - (id)copy; @end @class W; @interface View1 @end @implementation Controller { void (^Block)(void); } - (void)View:(View1 *)View foo:(W *)W { // The reference from inside the block implicitly creates another // local variable for the referenced member. That is what gets // suppressed by the attribute. It still gets debug info as a // member, though. // CHECK-NOT: !DILocalVariable(name: "weakSelf" // CHECK: !DIDerivedType({{.*}} name: "weakSelf" // CHECK-NOT: !DILocalVariable(name: "weakSelf" __attribute__((nodebug)) __typeof(self) weakSelf = self; Block = [^{ __typeof(self) strongSelf = weakSelf; } copy]; } @end