aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2017-10-27 08:53:08 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2017-10-27 08:53:08 +0000
commit001ee39a52ec28f2c03bfc7764e30652157b1161 (patch)
tree0a7ff56317a27233708f4622615a268e86fa26c9
parentddcb1c887b91ab6e269684b17db87d825e0696d7 (diff)
downloadgcc-001ee39a52ec28f2c03bfc7764e30652157b1161.zip
gcc-001ee39a52ec28f2c03bfc7764e30652157b1161.tar.gz
gcc-001ee39a52ec28f2c03bfc7764e30652157b1161.tar.bz2
re PR c++/80739 (Accessing value of X through a Y glvalue in a constant expression)
2017-10-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/80739 * g++.dg/cpp1y/constexpr-80739.C: New. From-SVN: r254138
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-80739.C20
2 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bafe8fd..57a8f44 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/80739
+ * g++.dg/cpp1y/constexpr-80739.C: New.
+
2017-10-27 Richard Biener <rguenther@suse.de>
PR middle-end/81659
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-80739.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-80739.C
new file mode 100644
index 0000000..5bfa082
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-80739.C
@@ -0,0 +1,20 @@
+// PR c++/80739
+// { dg-do compile { target c++14 } }
+
+using size_t = decltype(sizeof(0));
+template <class T> struct element {
+ constexpr element() noexcept: x0(0), x1(0), x2(0), x3(0) {}
+ T x0; int x1, x2, x3;
+};
+template <class T> struct container {
+ constexpr container() noexcept: data() {data = element<T>();}
+ element<T> data;
+};
+template <class T> constexpr bool test() {
+ return (container<T>(), true);
+}
+int main() {
+ constexpr bool tmp0 = test<int>();
+ constexpr bool tmp1 = test<size_t>();
+ return tmp0 && tmp1;
+}