https://github.com/spaits created https://github.com/llvm/llvm-project/pull/201586
https://godbolt.org/z/xPz5r7ad3 From 10efd54ff2f30e3b46fa94ccfa50eb0743ff9685 Mon Sep 17 00:00:00 2001 From: Gabor Spaits <[email protected]> Date: Thu, 4 Jun 2026 15:34:19 +0200 Subject: [PATCH] [clang][sema] Account for tempate parameter types when diagnosing mem initializer order issues --- clang/lib/Sema/SemaDeclCXX.cpp | 5 +++++ .../test/SemaCXX/warn-reorder-ctor-initialization.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index de837ff0608d0..d523f9d80c157 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -5766,6 +5766,11 @@ static void DiagnoseBaseOrMemInitializerOrder( if (InitKey == IdealInitKeys[IdealIndex]) break; + // There was a template parameter in the initializers, that isn't a base + // of the class to be instantiated. + if (IdealIndex >= NumIdealInits) + break; + assert(IdealIndex < NumIdealInits && "initializer not found in initializer list"); } diff --git a/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp b/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp index 0613338945978..7181305dc5850 100644 --- a/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp +++ b/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp @@ -84,6 +84,17 @@ class Anon3 { Anon3() : b(1) {} }; +struct S0 { + S0(int) {} + template <class T> + S0(T) : Member(42), T(42) {}; // expected-warning {{field 'Member' will be initialized after base 'T'}} + int Member{21}; +}; + +void InstantiateS0() { + S0 S0Instance(67); +} + namespace T1 { struct S1 { }; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
