llvm-project/clang/test/Analysis/svalbuilder-simplify-in-evalbinop.cpp
Gabor Marton 12887a2024 [Analyzer][Core] Better simplification in SimpleSValBuilder::evalBinOpNN
Make the SValBuilder capable to simplify existing
SVals based on a newly added constraints when evaluating a BinOp.

Before this patch, we called `simplify` only in some edge cases.
However, we can and should investigate the constraints in all cases.

Differential Revision: https://reviews.llvm.org/D113753
2021-11-23 16:38:01 +01:00

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);
}