tbaeder updated this revision to Diff 449932.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131155/new/
https://reviews.llvm.org/D131155
Files:
clang/lib/AST/ExprConstant.cpp
clang/test/SemaCXX/constexpr-array-init.cpp
Index: clang/test/SemaCXX/constexpr-array-init.cpp
===================================================================
--- /dev/null
+++ clang/test/SemaCXX/constexpr-array-init.cpp
@@ -0,0 +1,21 @@
+// RUN: %clang_cc1 -std=c++20 -verify %s
+
+
+/// expected-no-diagnostics
+struct Foo {
+ int a;
+ constexpr Foo()
+ : a(get_int()) {
+ }
+
+ constexpr int get_int() const {
+ return 5;
+ }
+};
+
+static constexpr Foo bar[2][1] = {
+ {{}},
+};
+static_assert(bar[0][0].a == 5);
+static_assert(bar[1][0].a == 5);
+
Index: clang/lib/AST/ExprConstant.cpp
===================================================================
--- clang/lib/AST/ExprConstant.cpp
+++ clang/lib/AST/ExprConstant.cpp
@@ -10695,6 +10695,11 @@
if (MaybeElementDependentArrayFiller(ILE->getInit(I)))
return true;
}
+
+ if (ILE->hasArrayFiller() &&
+ MaybeElementDependentArrayFiller(ILE->getArrayFiller()))
+ return true;
+
return false;
}
return true;
Index: clang/test/SemaCXX/constexpr-array-init.cpp
===================================================================
--- /dev/null
+++ clang/test/SemaCXX/constexpr-array-init.cpp
@@ -0,0 +1,21 @@
+// RUN: %clang_cc1 -std=c++20 -verify %s
+
+
+/// expected-no-diagnostics
+struct Foo {
+ int a;
+ constexpr Foo()
+ : a(get_int()) {
+ }
+
+ constexpr int get_int() const {
+ return 5;
+ }
+};
+
+static constexpr Foo bar[2][1] = {
+ {{}},
+};
+static_assert(bar[0][0].a == 5);
+static_assert(bar[1][0].a == 5);
+
Index: clang/lib/AST/ExprConstant.cpp
===================================================================
--- clang/lib/AST/ExprConstant.cpp
+++ clang/lib/AST/ExprConstant.cpp
@@ -10695,6 +10695,11 @@
if (MaybeElementDependentArrayFiller(ILE->getInit(I)))
return true;
}
+
+ if (ILE->hasArrayFiller() &&
+ MaybeElementDependentArrayFiller(ILE->getArrayFiller()))
+ return true;
+
return false;
}
return true;
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits