diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/f/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/f/com.c | 18 |
2 files changed, 15 insertions, 11 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index fecadfa..d28a479 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,11 @@ +2001-07-20 Toon Moene <toon@moene.indiv.nluug.nl> + + * com.c (ffecom_expr_intrinsic_): + case FFEINTRIN_impIBITS: Remove TREE_SHIFT_FULLWIDTH define. + case FFEINTRIN_impISHFT: Ditto. Change LT_EXPR to NE_EXPR. + case FFEINTRIN_impISHFTC: Ditto. + case FFEINTRIN_impMVBITS: Ditto. + 2001-07-19 Jakub Jelinek <jakub@redhat.com> * top.c (ffe_decode_option): Disallow lang-independent processing diff --git a/gcc/f/com.c b/gcc/f/com.c index d8a4d10..5b4388f 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -4524,7 +4524,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, integer_type_node, TYPE_SIZE (uns_type), arg3_tree)))); -#if !defined(TREE_SHIFT_FULLWIDTH) || !TREE_SHIFT_FULLWIDTH + /* Fix up, because the RSHIFT_EXPR above can't shift over TYPE_SIZE. */ expr_tree = ffecom_3 (COND_EXPR, tree_type, ffecom_truth_value @@ -4533,7 +4533,6 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, integer_zero_node)), expr_tree, convert (tree_type, integer_zero_node)); -#endif } return expr_tree; @@ -4569,18 +4568,17 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, ffecom_1 (NEGATE_EXPR, integer_type_node, arg2_tree)))); -#if !defined(TREE_SHIFT_FULLWIDTH) || !TREE_SHIFT_FULLWIDTH + /* Fix up, because {L|R}SHIFT_EXPR don't go over TYPE_SIZE bounds. */ expr_tree = ffecom_3 (COND_EXPR, tree_type, ffecom_truth_value - (ffecom_2 (LT_EXPR, integer_type_node, + (ffecom_2 (NE_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)); -#endif /* Make sure SAVE_EXPRs get referenced early enough. */ expr_tree = ffecom_2 (COMPOUND_EXPR, tree_type, @@ -4610,7 +4608,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, ffecom_1 (BIT_NOT_EXPR, tree_type, convert (tree_type, integer_zero_node)), arg3_tree); -#if !defined(TREE_SHIFT_FULLWIDTH) || !TREE_SHIFT_FULLWIDTH + /* Fix up, because LSHIFT_EXPR above can't shift over TYPE_SIZE. */ mask_arg1 = ffecom_3 (COND_EXPR, tree_type, ffecom_truth_value @@ -4619,7 +4617,6 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, TYPE_SIZE (uns_type))), mask_arg1, convert (tree_type, integer_zero_node)); -#endif mask_arg1 = ffecom_save_tree (mask_arg1); masked_arg1 = ffecom_2 (BIT_AND_EXPR, tree_type, @@ -4768,7 +4765,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, convert (arg4_type, integer_zero_node)), arg5_plus_arg3); -#if !defined(TREE_SHIFT_FULLWIDTH) || !TREE_SHIFT_FULLWIDTH + /* Fix up, because LSHIFT_EXPR above can't shift over TYPE_SIZE. */ prep_arg4 = ffecom_3 (COND_EXPR, arg4_type, ffecom_truth_value @@ -4778,7 +4775,6 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, TYPE_SIZE (arg4_type)))), prep_arg4, convert (arg4_type, integer_zero_node)); -#endif prep_arg4 = ffecom_2 (BIT_AND_EXPR, arg4_type, arg4_tree, @@ -4796,7 +4792,8 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, = ffecom_2 (BIT_IOR_EXPR, arg4_type, prep_arg1, prep_arg4); -#if !defined(TREE_SHIFT_FULLWIDTH) || !TREE_SHIFT_FULLWIDTH + /* Fix up (twice), because LSHIFT_EXPR above + can't shift over TYPE_SIZE. */ prep_arg1 = ffecom_3 (COND_EXPR, arg4_type, ffecom_truth_value @@ -4815,7 +4812,6 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree, TYPE_SIZE (arg4_type)))), prep_arg1, arg1_tree); -#endif expr_tree = ffecom_2s (MODIFY_EXPR, void_type_node, arg4_tree, |
