================
@@ -54,6 +54,7 @@
 namespace clang {
 
 class ASTContext;
+class DeclStateReverter;
----------------
jaredwy wrote:

No need for a selection on action. VisitX on the Unmerger has one meaning: What 
do we do with this decl. `bool isDiscarded(const Decl *D) const { return 
Ledger.isFromThisPTU(D, ID); }` other wise write its footprint back. 
VisitTagDecl does both halves today. The only condition is provenance, a 
property of the decl, not of the caller. Rec is a member set before Visit, like 
Record on ASTDeclReader.

Commit never enters that visitor. It needs one private read, data(), which 
becomes a snapshot primitive on the Unmerger; every other footprint is public 
getters. So the commit-side dispatch doesn't need friends PTUMutationActions 
can be a ConstDeclVisitor and commitClass its VisitCXXRecordDecl.

So yes you are right PTUMutationActions picks the operation and delegates the 
privileged work to the Unmerger. “One class” was the friend grant, not the 
visitor count. Two visitors, one friend. And restore() isn’t a new caller — 
it’s what CleanUpPTU turns into, which is where my PTURollbackGuard comment was 
going.

https://github.com/llvm/llvm-project/pull/223305
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to