rnk added inline comments.
================ Comment at: clang/lib/AST/MicrosoftMangle.cpp:47 + if (auto *CD = dyn_cast<CXXConstructorDecl>(DC)) + GD = GlobalDecl(CD, Ctor_Complete); + else if (auto *DD = dyn_cast<CXXDestructorDecl>(DC)) ---------------- I would prefer if you passed Ctor_Base and Dtor_Base here. I believe MSVC models the variants as separate compiler-generated functions. I believe the user code is always emitted into the "base" variant. That's consistent with what the user can observe in `__FUNCDNAME__`, see here: https://github.com/llvm/llvm-project/blob/main/clang/lib/AST/Expr.cpp#L635 ================ Comment at: clang/lib/AST/MicrosoftMangle.cpp:345 MicrosoftCXXNameMangler(MicrosoftMangleContextImpl &C, raw_ostream &Out_, const CXXConstructorDecl *D, CXXCtorType Type) ---------------- I would like to remove these constructor overloads, but I don't feel like I can ask you to do it. ================ Comment at: clang/lib/AST/MicrosoftMangle.cpp:1250 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND)) { - mangle(FD, "?"); + mangle(getGlobalDeclAsDeclContext(FD), "?"); break; ---------------- So, nested calls to `mangle` seem like they mostly come up when you have entities inside function scopes. I think when we have things inside structors, we want to mangle using the base ctor/dtor variant. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113490/new/ https://reviews.llvm.org/D113490 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits