temp-obj-dtors-option.cpp 614 Bytes
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-temp-dtor-inlining=false -verify -analyzer-config eagerly-assume=false %s
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-temp-dtor-inlining=true -DINLINE -verify -analyzer-config eagerly-assume=false %s

void clang_analyzer_eval(bool);

struct S {
  int &x;

  S(int &x) : x(x) { ++x; }
  ~S() { --x; }
};

void foo() {
  int x = 0;
  S(x).x += 1;
  clang_analyzer_eval(x == 1);
#ifdef INLINE
  // expected-warning@-2{{TRUE}}
#else
  // expected-warning@-4{{UNKNOWN}}
#endif
}