[PATCH] D111654: [analyzer] Retrieve a value from list initialization of multi-dimensional array declaration.

Denys Petrov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 27 10:16:28 PDT 2021


ASDenysPetrov added a comment.

I'll do an update soon taking into account all the suggestions.

> Please, try to focus on marking inline comments done if you accomplished them.

In the next update.



================
Comment at: clang/lib/StaticAnalyzer/Core/RegionStore.cpp:1706-1743
+  // Check offsets for being out of bounds.
   // C++20 [expr.add] 7.6.6.4 (excerpt):
   //   If P points to an array element i of an array object x with n
   //   elements, where i < 0 or i > n, the behavior is undefined.
   //   Dereferencing is not allowed on the "one past the last
   //   element", when i == n.
   // Example:
----------------
martong wrote:
> ASDenysPetrov wrote:
> > martong wrote:
> > > Perhaps this hunk could be in an individual implementation function?
> > There are two //returns// inside the loop. That would not such easy to do a separate function for this.
> > There are two //returns// inside the loop. That would not such easy to do a separate function for this.
> 
> I think you could return with an `Optional<SVal>` and then in the call site you could check if the optional is set.
> `Optional<SVal> areOffsetsOutOfBounds(...)` ?
> 
> Then in the caller:
> ```
> if (Optional<SVal> CheckResult = areOffsetsOutOfBounds(...))
>   return *CheckResult;
> ```
Great idea.


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

https://reviews.llvm.org/D111654



More information about the cfe-commits mailing list