// 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; }