https://github.com/spaits created 
https://github.com/llvm/llvm-project/pull/201379

None

From e741471e5675949916a6ef83f54ec45eab103321 Mon Sep 17 00:00:00 2001
From: Gabor Spaits <[email protected]>
Date: Wed, 3 Jun 2026 17:05:33 +0200
Subject: [PATCH] [Sema] Report error for non-base types in constructor
 initializers before causing issue in initializer order

---
 clang/lib/Sema/SemaDeclCXX.cpp                 | 5 +++--
 clang/test/SemaCXX/constructor-initializer.cpp | 8 ++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index de837ff0608d0..c1b6eb88959d7 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -4819,8 +4819,9 @@ Sema::BuildBaseInitializer(QualType BaseType, 
TypeSourceInfo *BaseTInfo,
   // Check for direct and virtual base classes.
   const CXXBaseSpecifier *DirectBaseSpec = nullptr;
   const CXXBaseSpecifier *VirtualBaseSpec = nullptr;
-  if (!Dependent) {
-    if (declaresSameEntity(ClassDecl, BaseType->getAsCXXRecordDecl()))
+  if (!Dependent || !ClassDecl->hasAnyDependentBases()) {
+    if (!Dependent &&
+        declaresSameEntity(ClassDecl, BaseType->getAsCXXRecordDecl()))
       return BuildDelegatingInitializer(BaseTInfo, Init, ClassDecl);
 
     FindBaseInitializer(*this, ClassDecl, BaseType, DirectBaseSpec,
diff --git a/clang/test/SemaCXX/constructor-initializer.cpp 
b/clang/test/SemaCXX/constructor-initializer.cpp
index 96be8dda97735..8627b6d12e5fe 100644
--- a/clang/test/SemaCXX/constructor-initializer.cpp
+++ b/clang/test/SemaCXX/constructor-initializer.cpp
@@ -323,3 +323,11 @@ A f2(const B &b) {
   return b; // expected-error {{no matching constructor for initialization of 
'B'}}
 }
 }
+
+namespace PR_NO_NUMBER_YET {
+struct a1 {
+  template<typename c>
+  a1(c) : d(), c()  {} // expected-error {{type 'c' is not a direct or virtual 
base of 'PR_NO_NUMBER_YET::a1'}}
+  int d;
+};
+}

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

Reply via email to