[PATCH] D26838: [analyzer] Enforce super-region classes for various memory regions through compile-time and run-time type checks.

Aleksei Sidorin via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 18 06:26:15 PST 2016


a.sidorin added a comment.

Hi Artem!
I like this change mostly but I also have some remarks.



================
Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h:1279
   ///  associated element type, index, and super region.
   const ElementRegion *getElementRegion(QualType elementType, NonLoc Idx,
+                                        const SubRegion *superRegion,
----------------
I think we should perform a `cast<>` to `SubRegion` internally in order to keep API simple and do not force clients to introduce casts in their code. This will still allow us to keep nice suggestions about SubRegions/MemSpaces in our hierarchy.


================
Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h:1347
 private:
-  template <typename RegionTy, typename A1>
-  RegionTy* getSubRegion(const A1 a1, const MemRegion* superRegion);
+  template <typename RegionTy, typename SuperTy, typename A1>
+  RegionTy* getSubRegion(const A1 a1, const SuperTy* superRegion);
----------------
Maybe we should give types and paramers some more meaningful names as a part of refactoring? At least, the number in `A1` is not needed now.


https://reviews.llvm.org/D26838





More information about the cfe-commits mailing list