llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Gábor Spaits (spaits)

<details>
<summary>Changes</summary>

Fixes #<!-- -->201593 .

---
Full diff: https://github.com/llvm/llvm-project/pull/201586.diff


2 Files Affected:

- (modified) clang/lib/Sema/SemaDeclCXX.cpp (+5) 
- (modified) clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp (+11) 


``````````diff
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 { };

``````````

</details>


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

Reply via email to