From: Marek Polacek Date: Tue, 8 Oct 2019 13:38:35 +0000 (+0000) Subject: PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF. X-Git-Tag: releases/gcc-9.3.0~566 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3416a9a6256daa997cb59fe0b17fefe5e712a2f;p=thirdparty%2Fgcc.git PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF. * pt.c (build_non_dependent_expr): Call build_non_dependent_expr for the first operand. From-SVN: r276699 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 297eb6f0e9b2..9a9dc437231b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2019-10-08 Marek Polacek + + Backported from mainline + 2019-09-15 Marek Polacek + + PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF. + * pt.c (build_non_dependent_expr): Call build_non_dependent_expr for + the first operand. + 2019-09-28 Marek Polacek Backported from mainline diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 34d440c7eb58..442e01bfa117 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -26715,7 +26715,7 @@ build_non_dependent_expr (tree expr) if (TREE_CODE (expr) == COND_EXPR) return build3 (COND_EXPR, TREE_TYPE (expr), - TREE_OPERAND (expr, 0), + build_non_dependent_expr (TREE_OPERAND (expr, 0)), (TREE_OPERAND (expr, 1) ? build_non_dependent_expr (TREE_OPERAND (expr, 1)) : build_non_dependent_expr (TREE_OPERAND (expr, 0))), diff --git a/gcc/testsuite/g++.dg/cpp1y/var-templ63.C b/gcc/testsuite/g++.dg/cpp1y/var-templ63.C new file mode 100644 index 000000000000..a65f53b2963b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/var-templ63.C @@ -0,0 +1,5 @@ +// PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF. +// { dg-do compile { target c++14 } } + +constexpr bool f(const char*) { return true; } +template const char c = "FOO"[f("BAR") ? 1 : 0];