https://github.com/zyn0217 updated 
https://github.com/llvm/llvm-project/pull/237843

>From 0340d599c7f3bbbdd70799349086896ef4b1845d Mon Sep 17 00:00:00 2001
From: Younan Zhang <[email protected]>
Date: Mon, 2 Nov 2026 14:03:13 +0800
Subject: [PATCH 1/2] [Clang] Fix variable template instantiation

We always consider undeduced specializations as NeedDefinition, despite
UsableInConstantExpr.
---
 clang/lib/Sema/SemaExpr.cpp       | 3 +--
 clang/test/CodeGenCXX/gh56652.cpp | 1 +
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index e29caaab8e3f3..982d478f57ae4 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -20977,8 +20977,7 @@ static void DoMarkVarDeclReferenced(
 
   bool NeedDefinition =
       OdrUse == OdrUseContext::Used || NeededForConstantEvaluation ||
-      (TSK != clang::TSK_Undeclared && !UsableInConstantExpr &&
-       Var->getType()->isUndeducedType());
+      (TSK != clang::TSK_Undeclared && Var->getType()->isUndeducedType());
 
   assert(!isa<VarTemplatePartialSpecializationDecl>(Var) &&
          "Can't instantiate a partial template specialization.");
diff --git a/clang/test/CodeGenCXX/gh56652.cpp 
b/clang/test/CodeGenCXX/gh56652.cpp
index 06a496e320bfc..066331030ba25 100644
--- a/clang/test/CodeGenCXX/gh56652.cpp
+++ b/clang/test/CodeGenCXX/gh56652.cpp
@@ -33,6 +33,7 @@ template <class> static void c() noexcept(noexcept(b<int>)) {}
 
 void test() { a<>::c<int>(); }
 
+static_assert(sizeof(S<>::b<int>) == sizeof(int));
 
 }
 

>From 06c59a914ae835b9be03d25e4707b3dc9009e892 Mon Sep 17 00:00:00 2001
From: Younan Zhang <[email protected]>
Date: Mon, 2 Nov 2026 15:08:18 +0800
Subject: [PATCH 2/2] Fix typo

---
 clang/test/CodeGenCXX/gh56652.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/CodeGenCXX/gh56652.cpp 
b/clang/test/CodeGenCXX/gh56652.cpp
index 066331030ba25..04616cca0c091 100644
--- a/clang/test/CodeGenCXX/gh56652.cpp
+++ b/clang/test/CodeGenCXX/gh56652.cpp
@@ -33,7 +33,7 @@ template <class> static void c() noexcept(noexcept(b<int>)) {}
 
 void test() { a<>::c<int>(); }
 
-static_assert(sizeof(S<>::b<int>) == sizeof(int));
+static_assert(sizeof(a<>::b<int>) == sizeof(int));
 
 }
 

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to