tejohnson added inline comments.

================
Comment at: clang/lib/CodeGen/CGVTables.cpp:1301-1302
+  // has no effect on the min visibility computed below by the recursive 
caller.
+  if (!Visited.insert(RD).second)
+    return llvm::GlobalObject::VCallVisibilityTranslationUnit;
+
----------------
wmi wrote:
> tejohnson wrote:
> > wmi wrote:
> > > If a CXXRecordDecl is visited twice, the visibility returned in the 
> > > second visit could be larger than necessary. Will it change the final 
> > > result? If it will, can we cache the visibility result got in the first 
> > > visit instead of returning the max value? 
> > The recursive callsites compute the std::min of the current TypeVis and the 
> > one returned by the recursive call. So returning the max guarantees that 
> > there is no effect on the current TypeVis. Let me know if the comment can 
> > be clarified (that's what I meant by "so that it has no effect on the min 
> > visibility computed below ...". Note that the initial non-recursive 
> > invocation always has an empty Visited set.
> I see. That makes sense! I didn't understand the location meant by "computed 
> below by the recursive caller." Your explanation "initial non-recursive 
> invocation always has an empty Visited set" helps a lot. It means the 
> immediate result of GetVCallVisibilityLevel may change, but the result for 
> the initial invocation of the recursive call won't be changed. 
I've tried to clarify the comment accordingly


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D91676

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

Reply via email to