Commit 436103a0 by Paolo Carlini Committed by Paolo Carlini

typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and LROTATE_EXPR.

2019-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and
	LROTATE_EXPR.
	* constexpr.c (cxx_eval_constant_expression): Likewise.
	(potential_constant_expression_1): Likewise.
	* cp-gimplify.c (cp_fold): Likewise.
	* pt.c (tsubst_copy): Likewise.

From-SVN: r276903
parent e0365bd3
2019-10-11 Paolo Carlini <paolo.carlini@oracle.com>
* typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and
LROTATE_EXPR.
* constexpr.c (cxx_eval_constant_expression): Likewise.
(potential_constant_expression_1): Likewise.
* pt.c (tsubst_copy): Likewise.
2019-10-11 Jason Merrill <jason@redhat.com>
* decl2.c (mark_used): Don't clobber DECL_SOURCE_LOCATION on
......
......@@ -5115,8 +5115,6 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t,
case MAX_EXPR:
case LSHIFT_EXPR:
case RSHIFT_EXPR:
case LROTATE_EXPR:
case RROTATE_EXPR:
case BIT_IOR_EXPR:
case BIT_XOR_EXPR:
case BIT_AND_EXPR:
......@@ -7103,8 +7101,6 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
case MAX_EXPR:
case LSHIFT_EXPR:
case RSHIFT_EXPR:
case LROTATE_EXPR:
case RROTATE_EXPR:
case BIT_IOR_EXPR:
case BIT_XOR_EXPR:
case BIT_AND_EXPR:
......
......@@ -16308,8 +16308,6 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case TRUTH_OR_EXPR:
case RSHIFT_EXPR:
case LSHIFT_EXPR:
case RROTATE_EXPR:
case LROTATE_EXPR:
case EQ_EXPR:
case NE_EXPR:
case MAX_EXPR:
......@@ -18913,8 +18911,6 @@ tsubst_copy_and_build (tree t,
case TRUTH_OR_EXPR:
case RSHIFT_EXPR:
case LSHIFT_EXPR:
case RROTATE_EXPR:
case LROTATE_EXPR:
case EQ_EXPR:
case NE_EXPR:
case MAX_EXPR:
......
......@@ -4899,35 +4899,6 @@ cp_build_binary_op (const op_location_t &location,
}
break;
case RROTATE_EXPR:
case LROTATE_EXPR:
if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
{
result_type = type0;
if (TREE_CODE (op1) == INTEGER_CST)
{
if (tree_int_cst_lt (op1, integer_zero_node))
{
if (complain & tf_warning)
warning (0, (code == LROTATE_EXPR)
? G_("left rotate count is negative")
: G_("right rotate count is negative"));
}
else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0)
{
if (complain & tf_warning)
warning (0, (code == LROTATE_EXPR)
? G_("left rotate count >= width of type")
: G_("right rotate count >= width of type"));
}
}
/* Convert the shift-count to an integer, regardless of
size of value being shifted. */
if (TYPE_MAIN_VARIANT (TREE_TYPE (op1)) != integer_type_node)
op1 = cp_convert (integer_type_node, op1, complain);
}
break;
case EQ_EXPR:
case NE_EXPR:
if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE)
......
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