aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CodeGenObjC/debug-info-nodebug.m
diff options
context:
space:
mode:
authorPaul Robinson <paul.robinson@sony.com>2016-06-16 00:42:36 +0000
committerPaul Robinson <paul.robinson@sony.com>2016-06-16 00:42:36 +0000
commitafd2dde2fdf23658cd0cbe55175953e735fcb62a (patch)
treeed9901b2430749e12ded8fce7ab96fd98298f2e7 /clang/test/CodeGenObjC/debug-info-nodebug.m
parentd01720d46d9456fce63f58497f56e106d2311efc (diff)
downloadllvm-afd2dde2fdf23658cd0cbe55175953e735fcb62a.zip
llvm-afd2dde2fdf23658cd0cbe55175953e735fcb62a.tar.gz
llvm-afd2dde2fdf23658cd0cbe55175953e735fcb62a.tar.bz2
Allow 'nodebug' on local variables.
Parameters and non-static members of aggregates are still excluded, and probably should remain that way. Differential Revision: http://reviews.llvm.org/D19754 llvm-svn: 272859
Diffstat (limited to 'clang/test/CodeGenObjC/debug-info-nodebug.m')
-rw-r--r--clang/test/CodeGenObjC/debug-info-nodebug.m26
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjC/debug-info-nodebug.m b/clang/test/CodeGenObjC/debug-info-nodebug.m
new file mode 100644
index 0000000..42d630b
--- /dev/null
+++ b/clang/test/CodeGenObjC/debug-info-nodebug.m
@@ -0,0 +1,26 @@
+// 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