[PATCH] D69599: [analyzer] DynamicSize: Remove 'getSizeInElements()' from store

Artem Dergachev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 1 14:33:50 PDT 2019


NoQ added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Core/DynamicSize.cpp:40-48
+  if (const llvm::APSInt *SizeInt = SVB.getKnownValue(State, Size)) {
+    CharUnits RegionSize = CharUnits::fromQuantity(SizeInt->getSExtValue());
+
+    // If a variable is reinterpreted as a type that doesn't fit into a larger
+    // type evenly, round it down.
+    // This is a signed value, since it's used in arithmetic with signed
+    // indices.
----------------
Charusso wrote:
> NoQ wrote:
> > And then remove the manual division.
> Hmpf.
> 
> ```
> Failing Tests (7):
>     Clang :: Analysis/misc-ps-region-store.m
>     Clang :: Analysis/mpichecker.cpp
>     Clang :: Analysis/outofbound.c
>     Clang :: Analysis/rdar-6541136-region.c
>     Clang :: Analysis/return-ptr-range.cpp
>     Clang :: Analysis/track-control-dependency-conditions.cpp
>     Clang :: Analysis/uninit-vals.c
> ```
> 
> I would pick that solution because it may be a tiny-bit faster, and then later on investigate this issue when we model more about dynamic sizes.
Soooooo what does it tell us about the correctness of the new `evalBinOp`-based solution?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69599/new/

https://reviews.llvm.org/D69599





More information about the cfe-commits mailing list