diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-10-16 07:06:11 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-10-16 07:06:11 +0000 |
commit | 6fdf70f52f3da53a67acf2a534ef99a58b4805b9 (patch) | |
tree | e5f9d064fd5537b6c392002aa14d733c7a665602 | |
parent | 63570ab2fe38a535f94d03d002bd493f1a1b8e79 (diff) | |
download | gcc-6fdf70f52f3da53a67acf2a534ef99a58b4805b9.tar.gz |
/cp
2015-10-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67926
* constexpr.c (potential_constant_expression_1): Handle
UNARY_LEFT_FOLD_EXPR, UNARY_RIGHT_FOLD_EXPR, BINARY_LEFT_FOLD_EXPR,
BINARY_RIGHT_FOLD_EXPR.
/testsuite
2015-10-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67926
* g++.dg/cpp1z/fold-ice1.C: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228861 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/constexpr.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/fold-ice1.C | 8 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b5951afbee4..6664cf939d4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2015-10-16 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/67926 + * constexpr.c (potential_constant_expression_1): Handle + UNARY_LEFT_FOLD_EXPR, UNARY_RIGHT_FOLD_EXPR, BINARY_LEFT_FOLD_EXPR, + BINARY_RIGHT_FOLD_EXPR. + 2015-10-13 Jakub Jelinek <jakub@redhat.com> Aldy Hernandez <aldyh@redhat.com> diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index ec9710cfbdf..1bb8efa90ed 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -4385,6 +4385,8 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, case TRUTH_NOT_EXPR: case FIXED_CONVERT_EXPR: case UNARY_PLUS_EXPR: + case UNARY_LEFT_FOLD_EXPR: + case UNARY_RIGHT_FOLD_EXPR: unary: return RECUR (TREE_OPERAND (t, 0), rval); @@ -4565,6 +4567,8 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, case MEMBER_REF: case DOTSTAR_EXPR: case MEM_REF: + case BINARY_LEFT_FOLD_EXPR: + case BINARY_RIGHT_FOLD_EXPR: binary: for (i = 0; i < 2; ++i) if (!RECUR (TREE_OPERAND (t, i), want_rval)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fa4fb7da29a..7d8b89fb19c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,7 +1,12 @@ +2015-10-16 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/67926 + * g++.dg/cpp1z/fold-ice1.C: New. + 2015-10-16 Michael Collison <michael.collison@linaro.org> Andrew Pinski <andrew.pinski@caviumnetworks.com> - * testsuite/gcc.dg/tree-ssa/minmax-loopend.c: New test. + * gcc.dg/tree-ssa/minmax-loopend.c: New test. 2015-10-15 Marek Polacek <polacek@redhat.com> diff --git a/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C b/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C new file mode 100644 index 00000000000..558f5893b05 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/fold-ice1.C @@ -0,0 +1,8 @@ +// PR c++/67926 +// { dg-options -std=c++1z } + +template <bool ... T> bool FUR = (T && ...); +template <bool ... T> bool FUL = (... && T); + +template <bool T1, bool ... T2> bool FBR = (T1 && ... && T2); +template <bool T1, bool ... T2> bool FBL = (T2 && ... && T1); |