[clang] [Analyzer][CFG] Correctly handle rebuilt default arg and default init expression (PR #91879)

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Sun May 12 09:19:18 PDT 2024


================
@@ -2433,6 +2429,30 @@ CFGBlock *CFGBuilder::VisitChildren(Stmt *S) {
   return B;
 }
 
+CFGBlock *CFGBuilder::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *Arg,
+                                             AddStmtChoice asc) {
+  if (Arg->hasRewrittenInit()) {
+    if (asc.alwaysAdd(*this, Arg)) {
+      autoCreateBlock();
+      appendStmt(Block, Arg);
+    }
+    return VisitStmt(Arg->getExpr(), asc);
+  }
+  return VisitStmt(Arg, asc);
----------------
zygoloid wrote:

I think it'd be useful to keep some of the old comment here: we can't add the default argument if it's not rewritten because we could end up with the same expression appearing multiple times.

https://github.com/llvm/llvm-project/pull/91879


More information about the cfe-commits mailing list