diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2019-04-23 23:52:02 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2019-04-23 23:52:02 +0000 |
commit | 53796d9439018b97a0e6f35af0ba83843a7270e7 (patch) | |
tree | e61a67820c2f31e554c3b4708f3058ad1823a30c /clang/test/FixIt/fixit-recursive-block.c | |
parent | eeab4518e1d718c2aa09fbe116cd060dac306d56 (diff) | |
download | bcm5719-llvm-53796d9439018b97a0e6f35af0ba83843a7270e7.tar.gz bcm5719-llvm-53796d9439018b97a0e6f35af0ba83843a7270e7.zip |
Improve -Wuninitialized warning under ARC for block variables that are
recursively captured.
Under ARC, a block variable is zero-initialized when it is recursively
captured by the block literal initializer.
rdar://problem/11022762
llvm-svn: 359049
Diffstat (limited to 'clang/test/FixIt/fixit-recursive-block.c')
-rw-r--r-- | clang/test/FixIt/fixit-recursive-block.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/test/FixIt/fixit-recursive-block.c b/clang/test/FixIt/fixit-recursive-block.c index 3793f825f6e..fec5b8028f9 100644 --- a/clang/test/FixIt/fixit-recursive-block.c +++ b/clang/test/FixIt/fixit-recursive-block.c @@ -1,12 +1,18 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -Wuninitialized -fblocks -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -Wuninitialized -fblocks -verify %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -Wuninitialized -fblocks -x objective-c -fobjc-arc -DARC -verify %s // rdar://10817031 int main() { - void (^arc_fail)() = ^() { // expected-warning {{block pointer variable 'arc_fail' is uninitialized when captured by block}} \ - // expected-note {{did you mean to use __block 'arc_fail'}} + void (^arc_fail)() = ^() { +#ifdef ARC +// expected-warning@-2 {{block pointer variable 'arc_fail' is null when captured by block}} +#else +// expected-warning@-4 {{block pointer variable 'arc_fail' is uninitialized when captured by block}} +#endif +// expected-note@-6 {{did you mean to use __block 'arc_fail'}} arc_fail(); // BOOM }; } -// CHECK: {7:12-7:12}:"__block " +// CHECK: {8:12-8:12}:"__block " |