This revision was automatically updated to reflect the committed changes. Closed by commit rGb95713784a3c: [MS ABI]: Fix mangling function arguments for template types to be compatible… (authored by thakis).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D68099/new/ https://reviews.llvm.org/D68099 Files: clang/lib/AST/MicrosoftMangle.cpp clang/test/CodeGenCXX/mangle-ms-back-references.cpp Index: clang/test/CodeGenCXX/mangle-ms-back-references.cpp =================================================================== --- clang/test/CodeGenCXX/mangle-ms-back-references.cpp +++ clang/test/CodeGenCXX/mangle-ms-back-references.cpp @@ -66,3 +66,20 @@ void foo() { } // CHECK: "?foo@0@YAXXZ" } + +class T01; +class T02; +class T03; +class T04; +class T05; +class T06; +class T07; +class T08; +class T09; +class T10; +class T11; +template <typename T> +class H; + +void ManyParams(T01 &, T02 &, T03 &, T04 &, T05 &, T06 &, T07 &, T08 &, T09 &, T10 &, H<T11> &, H<T11> &) {} +// CHECK: "?ManyParams@@YAXAAVT01@@AAVT02@@AAVT03@@AAVT04@@AAVT05@@AAVT06@@AAVT07@@AAVT08@@AAVT09@@AAVT10@@AAV?$H@VT11@@@@AAV?$H@VT11@@@@@Z" Index: clang/lib/AST/MicrosoftMangle.cpp =================================================================== --- clang/lib/AST/MicrosoftMangle.cpp +++ clang/lib/AST/MicrosoftMangle.cpp @@ -846,7 +846,7 @@ TemplateArgStringStorage.save(TemplateMangling.str()); } } else { - Out << Found->second; // Outputs a StringRef. + Out << Found->second << '@'; // Outputs a StringRef. } } else { Out << Found->second; // Outputs a back reference (an int).
Index: clang/test/CodeGenCXX/mangle-ms-back-references.cpp =================================================================== --- clang/test/CodeGenCXX/mangle-ms-back-references.cpp +++ clang/test/CodeGenCXX/mangle-ms-back-references.cpp @@ -66,3 +66,20 @@ void foo() { } // CHECK: "?foo@0@YAXXZ" } + +class T01; +class T02; +class T03; +class T04; +class T05; +class T06; +class T07; +class T08; +class T09; +class T10; +class T11; +template <typename T> +class H; + +void ManyParams(T01 &, T02 &, T03 &, T04 &, T05 &, T06 &, T07 &, T08 &, T09 &, T10 &, H<T11> &, H<T11> &) {} +// CHECK: "?ManyParams@@YAXAAVT01@@AAVT02@@AAVT03@@AAVT04@@AAVT05@@AAVT06@@AAVT07@@AAVT08@@AAVT09@@AAVT10@@AAV?$H@VT11@@@@AAV?$H@VT11@@@@@Z" Index: clang/lib/AST/MicrosoftMangle.cpp =================================================================== --- clang/lib/AST/MicrosoftMangle.cpp +++ clang/lib/AST/MicrosoftMangle.cpp @@ -846,7 +846,7 @@ TemplateArgStringStorage.save(TemplateMangling.str()); } } else { - Out << Found->second; // Outputs a StringRef. + Out << Found->second << '@'; // Outputs a StringRef. } } else { Out << Found->second; // Outputs a back reference (an int).
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits