Commit 0009b473 by Richard Sandiford Committed by Richard Sandiford

tree.def (LSHIFT_EXPR, [...]): Add commentary.

gcc/
	* tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
	* tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
	fixed-point types, and vectors of the same.

From-SVN: r143061
parent 4f24c6d6
2009-01-04 Richard Sandiford <rdsandiford@googlemail.com>
* tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
* tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
fixed-point types, and vectors of the same.
2009-01-04 Richard Sandiford <rdsandiford@googlemail.com>
* config/mips/sync.md (*mb_barrier): Rename to...
(*memory_barrier): ...this.
......
......@@ -3474,6 +3474,12 @@ verify_gimple_assign_binary (gimple stmt)
case LSHIFT_EXPR:
case RSHIFT_EXPR:
if (FIXED_POINT_TYPE_P (rhs1_type)
&& INTEGRAL_TYPE_P (rhs2_type)
&& useless_type_conversion_p (lhs_type, rhs1_type))
return false;
/* Fall through. */
case LROTATE_EXPR:
case RROTATE_EXPR:
{
......@@ -3495,7 +3501,8 @@ verify_gimple_assign_binary (gimple stmt)
case VEC_RSHIFT_EXPR:
{
if (TREE_CODE (rhs1_type) != VECTOR_TYPE
|| !INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
|| !(INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
|| FIXED_POINT_TYPE_P (TREE_TYPE (rhs1_type)))
|| (!INTEGRAL_TYPE_P (rhs2_type)
&& (TREE_CODE (rhs2_type) != VECTOR_TYPE
|| !INTEGRAL_TYPE_P (TREE_TYPE (rhs2_type))))
......
......@@ -691,7 +691,13 @@ DEFTREECODE (ABS_EXPR, "abs_expr", tcc_unary, 1)
The second operand is the number of bits to
shift by; it need not be the same type as the first operand and result.
Note that the result is undefined if the second operand is larger
than or equal to the first operand's type size. */
than or equal to the first operand's type size.
The first operand of a shift can have either an integer or a
(non-integer) fixed-point type. We follow the ISO/IEC TR 18037:2004
semantics for the latter.
Rotates are defined for integer types only. */
DEFTREECODE (LSHIFT_EXPR, "lshift_expr", tcc_binary, 2)
DEFTREECODE (RSHIFT_EXPR, "rshift_expr", tcc_binary, 2)
DEFTREECODE (LROTATE_EXPR, "lrotate_expr", tcc_binary, 2)
......
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