diff options
-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 b5951af..6664cf9 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 ec9710c..1bb8efa 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 fa4fb7d..7d8b89f 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 0000000..558f589 --- /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); |