[PATCH] D15924: [analyzer] Utility to extract the variable name from a memory region.

Gábor Horváth via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 8 07:13:06 PST 2016


xazax.hun added inline comments.

================
Comment at: lib/StaticAnalyzer/Core/MemRegion.cpp:586
@@ +585,3 @@
+    return "";
+  return nd->getName();
+}
----------------
Alexander_Droste wrote:
> Isn't calling `getDecl()` and `getName()` afterwards identical to `printPretty()`?
> Is it possible that a `NamedDecl` cannot be obtained from a `DeclRegion`?
The printPretty function copy the name of the variable. First I wanted to avoid any copy and memory allocation, but I realized this utility will probably only be used for diagnostics which is the exceptional case, I think allocations should not cause any performance problem here.

But you are right printPretty is almost identical except for FieldRegions, where it also try to print the super region. 
I checked and DeclRegion has 3 superclasses, all of them should contain NamedDecls, so that check should never fail. 

================
Comment at: lib/StaticAnalyzer/Core/MemRegion.cpp:588
@@ -576,1 +587,3 @@
+}
+
 void MemRegion::printPretty(raw_ostream &os) const {
----------------
Alexander_Droste wrote:
> Regarding the MPI-Checker patch http://reviews.llvm.org/D12761 it is insufficient 
> if the array index (if obtainable) is not provided. 
> I think it would be nice if a `getVariableName` function could always provide as much
> information as possible, regarding the passed memory region. Do you actually see a case in 
> the other implementation where this function fails?
> The index is a member variable of the `ElementRegion` why obtaining that
> value cannot fail. If the memory region passed is no `ElementRegion` then 
> simply `printPretty()` is called. I could submit the patch right away if this helps.
> 
> 
> 
In this case I think you should commit your version. 


http://reviews.llvm.org/D15924





More information about the cfe-commits mailing list