// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s // expected-no-diagnostics class B { public: bool m; ~B() {} // The destructor ensures that the binary logical operator below is wrapped in the ExprWithCleanups. }; B foo(); int getBool(); int *getPtr(); int test() { int r = 0; 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. // PR18159 if (p != 0 && getBool() && foo().m && getBool()) { r = *p; // no warning } } return r; }