[PATCH] D103096: [analyzer] Implement cast for ranges of symbolic integers.

Denys Petrov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 25 09:19:17 PDT 2021


ASDenysPetrov created this revision.
ASDenysPetrov added reviewers: NoQ, vsavchenko, steakhal, martong, dcoughlin, baloghadamsoftware.
ASDenysPetrov added a project: clang.
Herald added subscribers: manas, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, rnkovacs, szepet, xazax.hun.
ASDenysPetrov requested review of this revision.
Herald added a subscriber: cfe-commits.

Support integral cast for ranges of symbolic integers. Previously we only support integral cast for concrete integers.

Reason about the ranges of `SymbolCast` expressions. Apply truncations, promotions and conversions to get a correct range set using nested types of a `SymbolCast`. Replace `SValBuilder::evalIntegralCast` with `SValBuilder::evalCast`. Remove `SValBuilder::evalIntegralCast` as unnecessary one.

See tests in //symbol-integral-cast.cpp// for examples.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D103096

Files:
  clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
  clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
  clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
  clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
  clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
  clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
  clang/test/Analysis/bool-assignment.c
  clang/test/Analysis/constant-folding.c
  clang/test/Analysis/constraint_manager_negate_difference.c
  clang/test/Analysis/explain-svals.cpp
  clang/test/Analysis/expr-inspection.cpp
  clang/test/Analysis/malloc.c
  clang/test/Analysis/std-c-library-functions.c
  clang/test/Analysis/svalbuilder-rearrange-comparisons.c
  clang/test/Analysis/symbol-integral-cast.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103096.347702.patch
Type: text/x-patch
Size: 65992 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210525/77d3c6ad/attachment-0001.bin>


More information about the cfe-commits mailing list