| // RUN: %clang_analyze_cc1 -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; |
| } |