[PATCH] D134180: [clang] Fix a nullptr-access crash in CheckTemplateArgument.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 19 10:21:01 PDT 2022
hokein updated this revision to Diff 461260.
hokein marked an inline comment as done.
hokein added a comment.
address review comment.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134180/new/
https://reviews.llvm.org/D134180
Files:
clang/lib/Sema/SemaTemplate.cpp
clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp
Index: clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp
===================================================================
--- clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp
+++ clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp
@@ -558,3 +558,24 @@
X<1, 1u>::type y; // expected-error {{no type named 'type' in 'TypeSuffix::X<1, 1U>'}}
X<1, 1>::type z; // expected-error {{no type named 'type' in 'TypeSuffix::X<1, 1>'}}
}
+
+namespace no_crash {
+template <class T>
+class Base {
+public:
+ template <class> class EntryPointSpec {};
+ template <auto Method>
+ using EntryPoint = EntryPointSpec<T>;
+};
+
+class Derived : Base<Derived>{
+ template <class...> class Spec {};
+
+ void Invalid(Undefined) const; // expected-error {{unknown type name 'Undefined'}}
+ void crash() {
+ return Spec{
+ EntryPoint<&Invalid>()
+ };
+ }
+};
+} // no_crash
Index: clang/lib/Sema/SemaTemplate.cpp
===================================================================
--- clang/lib/Sema/SemaTemplate.cpp
+++ clang/lib/Sema/SemaTemplate.cpp
@@ -6949,7 +6949,10 @@
// along with the other associated constraints after
// checking the template argument list.
/*IgnoreConstraints=*/true);
- if (Result != TDK_Success && Result != TDK_AlreadyDiagnosed) {
+ if (Result == TDK_AlreadyDiagnosed) {
+ if (ParamType.isNull())
+ return ExprError();
+ } else if (Result != TDK_Success) {
Diag(Arg->getExprLoc(),
diag::err_non_type_template_parm_type_deduction_failure)
<< Param->getDeclName() << Param->getType() << Arg->getType()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134180.461260.patch
Type: text/x-patch
Size: 1684 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220919/dec52461/attachment.bin>
More information about the cfe-commits
mailing list