diff options
Diffstat (limited to 'test/Analysis/live-variables.m')
-rw-r--r-- | test/Analysis/live-variables.m | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/Analysis/live-variables.m b/test/Analysis/live-variables.m new file mode 100644 index 0000000..eefd292 --- /dev/null +++ b/test/Analysis/live-variables.m @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core -fobjc-arc -verify %s +// expected-no-diagnostics +@interface NSObject +@end +@interface NSString : NSObject +- (id)lastPathComponent; +@end +int getBool(); +int *getPtr(); +int foo() { + int r = 0; + NSString *filename = @"filename"; + for (int x = 0; x< 10; x++) { + int *p = getPtr(); + // Liveness info is not computed correctly due to the following expression. + // This happens due to CFG being special cased for short circuit operators. + // Note, due to ObjC method call, the outermost logical operator is wrapped in ExprWithCleanups. + // PR18159 + if ((p != 0) && (getBool()) && ([filename lastPathComponent]) && (getBool())) { + r = *p; // no-warning + } + } + return r; +}
\ No newline at end of file |