[clang] 8c5e15a - [Clang] Use getNonTypeTemplateArgumentType fallback in getTypeOfConstantTemplateParameter (#231983)

via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 21 04:46:28 PDT 2026


Author: Emmanuel Antonio
Date: 2026-10-21T13:46:22+02:00
New Revision: 8c5e15a03a4ea519b49cd1339169b50431c90d74

URL: https://github.com/llvm/llvm-project/commit/8c5e15a03a4ea519b49cd1339169b50431c90d74
DIFF: https://github.com/llvm/llvm-project/commit/8c5e15a03a4ea519b49cd1339169b50431c90d74.diff

LOG: [Clang] Use getNonTypeTemplateArgumentType fallback in getTypeOfConstantTemplateParameter (#231983)

Follow-up to c169131b760c (#231599).


Arg.getNonTypeTemplateArgumentType() in
Sema::getTypeOfConstantTemplateParameter when Arg does not name a
constant template parameter, and remove the unnecessary T.isNull() check
in isUndeducedAuto.

Added: 
    

Modified: 
    clang/lib/Sema/SemaTemplate.cpp
    clang/lib/Sema/SemaTemplateDeduction.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 5a61cb852d15e..ec1f8077893eb 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -5613,8 +5613,6 @@ bool Sema::CheckTemplateArgument(NamedDecl *Param, TemplateArgumentLoc &ArgLoc,
     //   parameter of type decltype(auto) ([temp.func.order]), the declaration
     //   is ill-formed.
     auto isUndeducedAuto = [](QualType T, bool DecltypeAuto) {
-      if (T.isNull())
-        return false;
       const AutoType *AT = T->getContainedAutoType();
       return AT && AT->isDecltypeAuto() == DecltypeAuto &&
              AT->getDeducedType().isNull();

diff  --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp
index b9cda516c7a48..3e1819c9134ff 100644
--- a/clang/lib/Sema/SemaTemplateDeduction.cpp
+++ b/clang/lib/Sema/SemaTemplateDeduction.cpp
@@ -261,7 +261,7 @@ QualType Sema::getTypeOfConstantTemplateParameter(const TemplateArgument &Arg) {
     if (NonTypeOrVarTemplateParmDecl NTTP =
             getNTTParameterFromExpr(Arg.getAsExpr(), std::nullopt))
       return NTTP.getType();
-  return QualType();
+  return Arg.getNonTypeTemplateArgumentType();
 }
 
 static const NonTypeOrVarTemplateParmDecl


        


More information about the cfe-commits mailing list