HerrCai0907 updated this revision to Diff 514447. HerrCai0907 added a comment.
better fix Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D148372/new/ https://reviews.llvm.org/D148372 Files: clang/docs/ReleaseNotes.rst clang/lib/Parse/ParseDecl.cpp clang/test/Parser/cxx-member-initializers.cpp Index: clang/test/Parser/cxx-member-initializers.cpp =================================================================== --- clang/test/Parser/cxx-member-initializers.cpp +++ clang/test/Parser/cxx-member-initializers.cpp @@ -108,4 +108,9 @@ // expected-error@-2 {{type name requires a specifier or qualifier}} // expected-error@-3 {{expected '>'}} // expected-note@-4 {{to match this '<'}} + + void n(int x = 1 ? 2) {} + // expected-error@-1 {{expected ':'}} + // expected-note@-2 {{to match this '?'}} + // expected-error@-3 {{expected expression}} }; Index: clang/lib/Parse/ParseDecl.cpp =================================================================== --- clang/lib/Parse/ParseDecl.cpp +++ clang/lib/Parse/ParseDecl.cpp @@ -7381,13 +7381,9 @@ DefArgToks.reset(new CachedTokens); SourceLocation ArgStartLoc = NextToken().getLocation(); - if (!ConsumeAndStoreInitializer(*DefArgToks, CIK_DefaultArgument)) { - DefArgToks.reset(); - Actions.ActOnParamDefaultArgumentError(Param, EqualLoc); - } else { - Actions.ActOnParamUnparsedDefaultArgument(Param, EqualLoc, - ArgStartLoc); - } + ConsumeAndStoreInitializer(*DefArgToks, CIK_DefaultArgument); + Actions.ActOnParamUnparsedDefaultArgument(Param, EqualLoc, + ArgStartLoc); } else { // Consume the '='. ConsumeToken(); Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -314,6 +314,8 @@ (`#61885 <https://github.com/llvm/llvm-project/issues/61885>`_) - Clang constexpr evaluator now treats comparison of [[gnu::weak]]-attributed member pointer as an invalid expression. +- Fix crash when member function contains invalid default argument. + (`#62122 <https://github.com/llvm/llvm-project/issues/62122>`_) Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Index: clang/test/Parser/cxx-member-initializers.cpp =================================================================== --- clang/test/Parser/cxx-member-initializers.cpp +++ clang/test/Parser/cxx-member-initializers.cpp @@ -108,4 +108,9 @@ // expected-error@-2 {{type name requires a specifier or qualifier}} // expected-error@-3 {{expected '>'}} // expected-note@-4 {{to match this '<'}} + + void n(int x = 1 ? 2) {} + // expected-error@-1 {{expected ':'}} + // expected-note@-2 {{to match this '?'}} + // expected-error@-3 {{expected expression}} }; Index: clang/lib/Parse/ParseDecl.cpp =================================================================== --- clang/lib/Parse/ParseDecl.cpp +++ clang/lib/Parse/ParseDecl.cpp @@ -7381,13 +7381,9 @@ DefArgToks.reset(new CachedTokens); SourceLocation ArgStartLoc = NextToken().getLocation(); - if (!ConsumeAndStoreInitializer(*DefArgToks, CIK_DefaultArgument)) { - DefArgToks.reset(); - Actions.ActOnParamDefaultArgumentError(Param, EqualLoc); - } else { - Actions.ActOnParamUnparsedDefaultArgument(Param, EqualLoc, - ArgStartLoc); - } + ConsumeAndStoreInitializer(*DefArgToks, CIK_DefaultArgument); + Actions.ActOnParamUnparsedDefaultArgument(Param, EqualLoc, + ArgStartLoc); } else { // Consume the '='. ConsumeToken(); Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -314,6 +314,8 @@ (`#61885 <https://github.com/llvm/llvm-project/issues/61885>`_) - Clang constexpr evaluator now treats comparison of [[gnu::weak]]-attributed member pointer as an invalid expression. +- Fix crash when member function contains invalid default argument. + (`#62122 <https://github.com/llvm/llvm-project/issues/62122>`_) Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits