Add test case showing the analyzer invalidates '__block' variables when the block is passed as an argument to an ObjC method.

llvm-svn: 95366
This commit is contained in:
Ted Kremenek 2010-02-05 06:10:46 +00:00
parent ad0ef84040
commit 94e6d98cae
1 changed files with 13 additions and 0 deletions

View File

@ -590,6 +590,19 @@ int blocks_2(int *p, int z) {
return z;
}
// Test that the value of 'x' is considered invalidated after the block
// is passed as an argument to the message expression.
typedef void (^RDar7582031CB)(void);
@interface RDar7582031
- rdar7582031:RDar7582031CB;
@end
unsigned rdar7582031(RDar7582031 *o) {
__block unsigned x;
[o rdar7582031:^{ x = 1; }];
return x; // no-warning
}
//===----------------------------------------------------------------------===//
// <rdar://problem/7462324> - Test that variables passed using __blocks
// are not treated as being uninitialized.