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

Reply via email to