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