NoQ added a comment. Thanks! This looks very useful.
================ Comment at: clang/lib/Analysis/CallGraph.cpp:97-102 + const auto *ConstructedType = Ctor->getParent(); + if (ConstructedType->hasUserDeclaredDestructor()) { + CXXDestructorDecl *Dtor = ConstructedType->getDestructor(); + if (FunctionDecl *Def = Dtor->getDefinition()) + addCalledDecl(Def); + } ---------------- Ugh this is questionable. The object may easily outlive the function, so the destructor may be called from another function. I see where this was supposed to go (i.e., this is perfectly correct when the constructor is constructing a non-RVO'd temporary or a non-NRVO'd local variable), but in the general case it's not true. The really nice way to implement this functionality would be to rely on the constructor's `ConstructionContext`, but as of now it's only available in the CFG and there's no easy way to retrieve it by looking at the AST node (and if you have a CFG you might as well look at destructors directly, as they're listed there explicitly). It should also be possible to do that by hand by matching `DeclStmt`s and `CXXBindTemporaryExpr`s. Let's omit this part for now because currently the analysis seems to be conservative in the sense that it doesn't add calls when it's not sure. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D65453/new/ https://reviews.llvm.org/D65453 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits