Commit 1e546b68 by Jason Merrill Committed by Jason Merrill

P0036R0: Unary Folds and Empty Parameter Packs

	* pt.c (expand_empty_fold): Remove special cases for *,+,&,|.

From-SVN: r234068
parent d259b234
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> 2016-03-08 Jakub Jelinek <jakub@redhat.com>
PR c++/70135 PR c++/70135
......
...@@ -10629,10 +10629,6 @@ gen_elem_of_pack_expansion_instantiation (tree pattern, ...@@ -10629,10 +10629,6 @@ gen_elem_of_pack_expansion_instantiation (tree pattern,
sequence, the value of the expression is as follows; the program is sequence, the value of the expression is as follows; the program is
ill-formed if the operator is not listed in this table. ill-formed if the operator is not listed in this table.
* 1
+ 0
& -1
| 0
&& true && true
|| false || false
, void() */ , void() */
...@@ -10644,14 +10640,6 @@ expand_empty_fold (tree t, tsubst_flags_t complain) ...@@ -10644,14 +10640,6 @@ expand_empty_fold (tree t, tsubst_flags_t complain)
if (!FOLD_EXPR_MODIFY_P (t)) if (!FOLD_EXPR_MODIFY_P (t))
switch (code) 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: case TRUTH_ANDIF_EXPR:
return boolean_true_node; return boolean_true_node;
case TRUTH_ORIF_EXPR: case TRUTH_ORIF_EXPR:
......
...@@ -22,11 +22,11 @@ MAKE_FNS (add, +); ...@@ -22,11 +22,11 @@ MAKE_FNS (add, +);
MAKE_FNS (sub, -); MAKE_FNS (sub, -);
int main() { int main() {
assert(unary_left_add() == 0); // assert(unary_left_add() == 0);
assert(unary_left_add(1) == 1); assert(unary_left_add(1) == 1);
assert(unary_left_add(1, 2, 3) == 6); 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) == 1);
assert(unary_right_add(1, 2, 3) == 6); assert(unary_right_add(1, 2, 3) == 6);
......
...@@ -47,16 +47,16 @@ MAKE_FN (dot_star, .*); ...@@ -47,16 +47,16 @@ MAKE_FN (dot_star, .*);
MAKE_FN (arrow_star, ->*); MAKE_FN (arrow_star, ->*);
int main() { int main() {
static_assert(add() == int(), "");
static_assert(mul() == 1, "");
static_assert(bor() == int(), "");
static_assert(band() == -1, "");
static_assert(land() == true, ""); static_assert(land() == true, "");
static_assert(lor() == false, ""); static_assert(lor() == false, "");
comma(); // No value to theck comma(); // No value to theck
// These are all errors, but the error is emitted at the point // These are all errors, but the error is emitted at the point
// of instantiation (line 10). // 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" } sub(); // { dg-message "required from here" }
div(); // { dg-message "required from here" } div(); // { dg-message "required from here" }
mod(); // { dg-message "required from here" } mod(); // { dg-message "required from here" }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment