diff options
author | Jason Merrill <jason@redhat.com> | 2016-03-08 17:30:30 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2016-03-08 17:30:30 -0500 |
commit | 1e546b68c1e45d0f1fffbf02c5324717264816c4 (patch) | |
tree | 0592250fdfd01e69ed91ca08f4e4428701a9a8c4 /gcc | |
parent | d259b234a301aa5c06ca78262ae814b3d8d0f1a5 (diff) | |
download | gcc-1e546b68c1e45d0f1fffbf02c5324717264816c4.zip gcc-1e546b68c1e45d0f1fffbf02c5324717264816c4.tar.gz gcc-1e546b68c1e45d0f1fffbf02c5324717264816c4.tar.bz2 |
P0036R0: Unary Folds and Empty Parameter Packs
* pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
From-SVN: r234068
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/fold1.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/fold3.C | 8 |
4 files changed, 11 insertions, 18 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5906ceb..2b95036 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2016-03-08 Jason Merrill <jason@redhat.com> + + P0036R0: Unary Folds and Empty Parameter Packs + * pt.c (expand_empty_fold): Remove special cases for *,+,&,|. + 2016-03-08 Jakub Jelinek <jakub@redhat.com> PR c++/70135 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 515537b..9766668 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -10629,10 +10629,6 @@ gen_elem_of_pack_expansion_instantiation (tree pattern, sequence, the value of the expression is as follows; the program is ill-formed if the operator is not listed in this table. - * 1 - + 0 - & -1 - | 0 && true || false , void() */ @@ -10644,14 +10640,6 @@ expand_empty_fold (tree t, tsubst_flags_t complain) if (!FOLD_EXPR_MODIFY_P (t)) switch (code) { - case MULT_EXPR: - return integer_one_node; - case PLUS_EXPR: - return integer_zero_node; - case BIT_AND_EXPR: - return integer_minus_one_node; - case BIT_IOR_EXPR: - return integer_zero_node; case TRUTH_ANDIF_EXPR: return boolean_true_node; case TRUTH_ORIF_EXPR: diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C index 3c33651..510d61a 100644 --- a/gcc/testsuite/g++.dg/cpp1z/fold1.C +++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C @@ -22,11 +22,11 @@ MAKE_FNS (add, +); MAKE_FNS (sub, -); int main() { - assert(unary_left_add() == 0); + // assert(unary_left_add() == 0); assert(unary_left_add(1) == 1); assert(unary_left_add(1, 2, 3) == 6); - assert(unary_right_add() == 0); + // assert(unary_right_add() == 0); assert(unary_right_add(1) == 1); assert(unary_right_add(1, 2, 3) == 6); diff --git a/gcc/testsuite/g++.dg/cpp1z/fold3.C b/gcc/testsuite/g++.dg/cpp1z/fold3.C index 307818f..58d41e6 100644 --- a/gcc/testsuite/g++.dg/cpp1z/fold3.C +++ b/gcc/testsuite/g++.dg/cpp1z/fold3.C @@ -47,16 +47,16 @@ MAKE_FN (dot_star, .*); MAKE_FN (arrow_star, ->*); int main() { - static_assert(add() == int(), ""); - static_assert(mul() == 1, ""); - static_assert(bor() == int(), ""); - static_assert(band() == -1, ""); static_assert(land() == true, ""); static_assert(lor() == false, ""); comma(); // No value to theck // These are all errors, but the error is emitted at the point // of instantiation (line 10). + add(); // { dg-message "required from here" } + mul(); // { dg-message "required from here" } + bor(); // { dg-message "required from here" } + band(); // { dg-message "required from here" } sub(); // { dg-message "required from here" } div(); // { dg-message "required from here" } mod(); // { dg-message "required from here" } |