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