23 lines
		
	
	
		
			614 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			614 B
		
	
	
	
		
			C++
		
	
	
	
// 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
 | 
						|
}
 |