diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 624b607a2cd..3b0f188998d 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,8 @@ +2003-06-01 Bud Davis + + * ste.c (ffeste_R838): Handle ERROR_MARK. + (ffeste_R839): Ditto. + 2003-06-01 Andreas Jaeger * lex.c (ffelex_file_fixed): Remove usage of diff --git a/gcc/f/ste.c b/gcc/f/ste.c index f27c93ec296..b0d464af81f 100644 --- a/gcc/f/ste.c +++ b/gcc/f/ste.c @@ -2950,16 +2950,19 @@ ffeste_R838 (ffelab label, ffebld target) TREE_CONSTANT (label_tree) = 1; target_tree = ffecom_expr_assign_w (target); - if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (target_tree))) - < GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (label_tree)))) - error ("ASSIGN to variable that is too small"); + if (TREE_CODE (target_tree) != ERROR_MARK) + { + if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (target_tree))) + < GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (label_tree)))) + error ("ASSIGN to variable that is too small"); - label_tree = convert (TREE_TYPE (target_tree), label_tree); + label_tree = convert (TREE_TYPE (target_tree), label_tree); - expr_tree = ffecom_modify (void_type_node, + expr_tree = ffecom_modify (void_type_node, target_tree, label_tree); - expand_expr_stmt (expr_tree); + expand_expr_stmt (expr_tree); + } } } @@ -2978,11 +2981,15 @@ ffeste_R839 (ffebld target) seen here should never require use of temporaries. */ t = ffecom_expr_assign (target); - if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (t))) - < GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (null_pointer_node)))) - error ("ASSIGNed GOTO target variable is too small"); - expand_computed_goto (convert (TREE_TYPE (null_pointer_node), t)); + if (TREE_CODE (t) != ERROR_MARK) + { + if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (t))) + < GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (null_pointer_node)))) + error ("ASSIGNed GOTO target variable is too small"); + + expand_computed_goto (convert (TREE_TYPE (null_pointer_node), t)); + } } /* Arithmetic IF statement. */