rnk added a comment. After looking at the code more, I'm more convinced that your fix is in the right place.
================ Comment at: clang/lib/AST/MicrosoftMangle.cpp:954 if ((isa<VarDecl>(LambdaContextDecl) || - isa<FieldDecl>(LambdaContextDecl)) && - LambdaContextDecl->getDeclContext()->isRecord()) { + isa<FieldDecl>(LambdaContextDecl))) { mangleUnqualifiedName(cast<NamedDecl>(LambdaContextDecl)); ---------------- I think this code is supposed to be analogous to the ItaniumMangle.cpp code here: https://github.com/llvm/llvm-project/blob/master/clang/lib/AST/ItaniumMangle.cpp#L1829 Can you add in `&& !isa<ParmVarDecl>(LambdaContextDecl)` to this condition? I believe it will prevent changing the mangling in some of the test cases you have. ================ Comment at: clang/test/CodeGenCXX/mangle-ms-cxx11.cpp:329 static int white; // CHECK-DAG: @"?white@?1???R<lambda_1>@x@A@PR31197@@QBE@XZ@4HA" return &white; ---------------- I see, this incorporate the field name `x` here, explaining the FieldDecl check. ================ Comment at: clang/test/CodeGenCXX/mangle-ms-cxx11.cpp:340 static void default_args(FPtrTy x = [] {}, FPtrTy y = [] {}, int z = [] { return 1; }() + [] { return 2; }()) {} - // CHECK-DAG: @"??R<lambda_1_1>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"( - // CHECK-DAG: @"??R<lambda_1_2>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"( - // CHECK-DAG: @"??R<lambda_2_1>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"( - // CHECK-DAG: @"??R<lambda_3_1>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"( + // CHECK-DAG: @"??R<lambda_1_1>@z@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"( + // CHECK-DAG: @"??R<lambda_1_2>@z@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"( ---------------- I think these should not change, because they are parameters, and in this particular area we are attempting to follow the Itanium mangling strategy. Even if clang is not ABI compatible with MSVC for this feature, I would prefer it if we didn't break ABI compatibility with old versions of clang when possible. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80153/new/ https://reviews.llvm.org/D80153 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits