forked from OSchip/llvm-project
31 lines
787 B
C++
31 lines
787 B
C++
// RUN: %clang_analyze_cc1 %s \
|
|
// RUN: -analyzer-checker=core \
|
|
// RUN: -analyzer-checker=debug.ExprInspection \
|
|
// RUN: -analyzer-config eagerly-assume=false \
|
|
// RUN: -verify
|
|
|
|
// Here we test whether the SValBuilder is capable to simplify existing
|
|
// SVals based on a newly added constraints when evaluating a BinOp.
|
|
|
|
void clang_analyzer_eval(bool);
|
|
|
|
void test_evalBinOp_simplifies_lhs(int y) {
|
|
int x = y / 77;
|
|
if (y != 77)
|
|
return;
|
|
|
|
// Below `x` is the LHS being simplified.
|
|
clang_analyzer_eval(x == 1); // expected-warning{{TRUE}}
|
|
(void)(x * y);
|
|
}
|
|
|
|
void test_evalBinOp_simplifies_rhs(int y) {
|
|
int x = y / 77;
|
|
if (y != 77)
|
|
return;
|
|
|
|
// Below `x` is the RHS being simplified.
|
|
clang_analyzer_eval(1 == x); // expected-warning{{TRUE}}
|
|
(void)(x * y);
|
|
}
|