xazax.hun marked an inline comment as done.
xazax.hun added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Core/ProgramState.cpp:48-61
+namespace {
+struct EscapedLocals{};
+} // namespace
+
+template <>
+struct ProgramStateTrait<EscapedLocals> :
+  public ProgramStatePartialTrait<llvm::ImmutableSet<const MemRegion *>> {
----------------
xazax.hun wrote:
> NoQ wrote:
> > Wait, you are preventing direct access anyway by putting this stuff into 
> > the .cpp file.
> > 
> > In this case i think you can safely use the `REGISTER_...` macros.
> Yeah, initially I wanted to hide this trait but at this point I have no idea 
> how to do that. If I get the layering right, ExprEngine is using 
> ProgramState, and ProgramState should not reference ExprEngine. So if I want 
> to use a trait in both it should be in ProgramState. The reason why I also 
> need to touch ProgramState, because the list of invalidated regions are 
> readily available there. Probably it is possible to somehow get that list in 
> ExprEngine, but I think that would be way more complicated than the current 
> solution.
Well, I realized that ProgramState can access SubEngine, so as long as we 
extend the abstract interface there we could move the trait to ExprEngine. What 
do you prefer? 


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

https://reviews.llvm.org/D71152



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to