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
This commit is contained in:
parent
4f24c6d62f
commit
0009b473a0
@ -1,3 +1,9 @@
|
||||
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...
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user