diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 66f82de690995..ed1a978b5382d 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -726,6 +726,8 @@ Miscellaneous Clang Crashes Fixed (`#68001 `_) - Fixed a crash in C when redefined struct is another nested redefinition. `Issue 41302 `_ +- Fixed a crash when ``-ast-dump=json`` was used for code using class + template deduction guides. Target Specific Changes ----------------------- diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp index ace5178bf6258..637d06cee78c8 100644 --- a/clang/lib/AST/JSONNodeDumper.cpp +++ b/clang/lib/AST/JSONNodeDumper.cpp @@ -823,6 +823,10 @@ void JSONNodeDumper::VisitNamedDecl(const NamedDecl *ND) { if (VD && VD->hasLocalStorage()) return; + // Do not mangle template deduction guides. + if (isa(ND)) + return; + std::string MangledName = ASTNameGen.getName(ND); if (!MangledName.empty()) JOS.attribute("mangledName", MangledName); diff --git a/clang/test/AST/ast-dump-template-decls-json.cpp b/clang/test/AST/ast-dump-template-decls-json.cpp index 00a656cd05917..70f1d3b55f3ee 100644 --- a/clang/test/AST/ast-dump-template-decls-json.cpp +++ b/clang/test/AST/ast-dump-template-decls-json.cpp @@ -58,6 +58,10 @@ void V::f() {} template