+2001-07-19 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ * tree.def: Document restriction on {L|R}SHIFT_EXPR's second argument.
+ * doc/tree.texi: Ditto.
+
2001-07-19 Mark Kettenis <kettenis@wins.uva.nl>
Jakub Jelinek <jakub@redhat.com>
shift. Right shift should be treated as arithmetic, i.e., the
high-order bits should be zero-filled when the expression has unsigned
type and filled with the sign bit when the expression has signed type.
+Note that the result is undefined if the second operand is larger
+than the first operand's type size.
+
@item BIT_IOR_EXPR
@itemx BIT_XOR_EXPR
+2001-07-19 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ * f/com.c (ffecom_expr_intrinsic_): Deal (correctly) with
+ {L|R}SHIFT_EXPR not working when shift > size of type.
+
2001-07-17 Toon Moene <toon@moene.indiv.nluug.nl>
* com.c (lang_print_error_function): Argument context
expr_tree
= ffecom_3 (COND_EXPR, tree_type,
ffecom_truth_value
- (ffecom_2 (NE_EXPR, integer_type_node,
- arg2_tree,
+ (ffecom_2 (LT_EXPR, integer_type_node,
+ ffecom_1 (ABS_EXPR,
+ integer_type_node,
+ arg2_tree),
TYPE_SIZE (uns_type))),
expr_tree,
convert (tree_type, integer_zero_node));
Shift means logical shift if done on an
unsigned type, arithmetic shift if done on a signed type.
The second operand is the number of bits to
- shift by; it need not be the same type as the first operand and result. */
+ 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 the first operand's type size. */
DEFTREECODE (LSHIFT_EXPR, "lshift_expr", '2', 2)
DEFTREECODE (RSHIFT_EXPR, "rshift_expr", '2', 2)
DEFTREECODE (LROTATE_EXPR, "lrotate_expr", '2', 2)