diff options
author | Saar Raz <saar@raz.email> | 2020-01-27 00:14:43 +0200 |
---|---|---|
committer | Saar Raz <saar@raz.email> | 2020-01-27 00:16:19 +0200 |
commit | b07b82777b9ad19c44c6eb347507f1fdda3ddf34 (patch) | |
tree | 3b9db22567722f46226983cbee72be54dcb903d0 /clang/lib/Sema | |
parent | 73a91477f7045d1325570f28e349dd87d9bff49c (diff) | |
download | bcm5719-llvm-b07b82777b9ad19c44c6eb347507f1fdda3ddf34.tar.gz bcm5719-llvm-b07b82777b9ad19c44c6eb347507f1fdda3ddf34.zip |
[Concepts] Add missing null check to transformConstructor
Caused bug 44671 when transforming a constructor with a type-constraint with no explicit template args.
(cherry picked from commit a8d096aff6b1930ad57bd0c30077d2b4920b5025)
Diffstat (limited to 'clang/lib/Sema')
-rwxr-xr-x | clang/lib/Sema/SemaTemplate.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index f961244da07..ad4ea2d2593 100755 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -2047,12 +2047,14 @@ private: if (const auto *TC = TTP->getTypeConstraint()) { TemplateArgumentListInfo TransformedArgs; const auto *ArgsAsWritten = TC->getTemplateArgsAsWritten(); - if (SemaRef.Subst(ArgsAsWritten->getTemplateArgs(), + if (!ArgsAsWritten || + SemaRef.Subst(ArgsAsWritten->getTemplateArgs(), ArgsAsWritten->NumTemplateArgs, TransformedArgs, Args)) SemaRef.AttachTypeConstraint( TC->getNestedNameSpecifierLoc(), TC->getConceptNameInfo(), - TC->getNamedConcept(), &TransformedArgs, NewTTP, + TC->getNamedConcept(), ArgsAsWritten ? &TransformedArgs : nullptr, + NewTTP, NewTTP->isParameterPack() ? cast<CXXFoldExpr>(TC->getImmediatelyDeclaredConstraint()) ->getEllipsisLoc() |