Home | History | Annotate | Download | only in Analysis
      1 // RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
      2 // expected-no-diagnostics
      3 class B {
      4 public:
      5   bool m;
      6   ~B() {} // The destructor ensures that the binary logical operator below is wrapped in the ExprWithCleanups.
      7 };
      8 B foo();
      9 int getBool();
     10 int *getPtr();
     11 int test() {
     12   int r = 0;
     13   for (int x = 0; x< 10; x++) {
     14     int *p = getPtr();
     15     // Liveness info is not computed correctly due to the following expression.
     16     // This happens due to CFG being special cased for short circuit operators.
     17     // PR18159
     18     if (p != 0 && getBool() && foo().m && getBool()) {
     19       r = *p; // no warning
     20     }
     21   }
     22   return r;
     23 }
     24