| // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify %s | |
| using size_t = __typeof(sizeof(int)); | |
| void clang_analyzer_explain(int); | |
| void clang_analyzer_dump(int); | |
| void *memset(void *, int, size_t); | |
| struct S | |
| { | |
| static int a; | |
| ~S(){}; | |
| }; | |
| int S::a = 0; | |
| void foo() | |
| { | |
| S::a = 0; | |
| int x = 3; | |
| memset(&x, 1, sizeof(x)); | |
| S *arr = new S[x]; | |
| delete[] arr; | |
| clang_analyzer_dump(S::a); // expected-warning-re{{{{derived_\$[0-9]+{conj_\$[0-9]+{int, LC[0-9]+, S[0-9]+, #[0-9]+},a}}}}} | |
| clang_analyzer_explain(S::a); // expected-warning-re{{{{value derived from \(symbol of type 'int' conjured at CFG element '->~S\(\) \(Implicit destructor\)'\) for global variable 'S::a'}}}} | |
| } |