* expression.h (enum exp_opcode): Add BINOP_RANGE.

* expprint.c (dump_expression):  Support BINOP_RANGE.
	* eval.c (evaluate_subexp_standard):  Handle BINOP_RANGE (as error).
	(case MULTI_SUBSCRIPT):  Fix broken f77 value->int ad hoc conversion.
	* ch-lang.c (chill_op_print_tab):  Support BINOP_RANGE.
	(evaluate_subexp_chill):  Error on BINOP_COMMA.
This commit is contained in:
Per Bothner 1995-11-29 22:59:31 +00:00
parent b00c57ec37
commit badefd2800
3 changed files with 19 additions and 4 deletions

View File

@ -1,5 +1,12 @@
Wed Nov 29 13:35:18 1995 Per Bothner <bothner@kalessin.cygnus.com>
* expression.h (enum exp_opcode): Add BINOP_RANGE.
* expprint.c (dump_expression): Support BINOP_RANGE.
* eval.c (evaluate_subexp_standard): Handle BINOP_RANGE (as error).
(case MULTI_SUBSCRIPT): Fix broken f77 value->int ad hoc conversion.
* ch-lang.c (chill_op_print_tab): Support BINOP_RANGE.
(evaluate_subexp_chill): Error on BINOP_COMMA.
* Makefile.in: Clean up so doc stuff stays in doc sub-dir.
Wed Nov 29 16:39:50 1995 Michael Meissner <meissner@tiktok.cygnus.com>

View File

@ -272,6 +272,7 @@ static const struct op_print chill_op_print_tab[] = {
{"-", UNOP_NEG, PREC_PREFIX, 0},
{"->", UNOP_IND, PREC_SUFFIX, 1},
{"->", UNOP_ADDR, PREC_PREFIX, 0},
{":", BINOP_RANGE, PREC_ASSIGN, 0},
{NULL, 0, 0, 0}
};
@ -453,6 +454,9 @@ evaluate_subexp_chill (expect_type, exp, pos, noside)
arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
return value_chill_length (arg1);
case BINOP_COMMA:
error ("',' operator used in invalid context");
default:
break;
}

View File

@ -978,6 +978,13 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
else
return value_binop (arg1, arg2, op);
case BINOP_RANGE:
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
if (noside == EVAL_SKIP)
goto nosideret;
error ("':' operator used in invalid context");
case BINOP_SUBSCRIPT:
arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
@ -1087,12 +1094,9 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
/* Evaluate each subscript, It must be a legal integer in F77 */
arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_INT)
error ("Array subscripts must be of type integer");
/* Fill in the subscript and array size arrays */
subscript_array[i] = (* (unsigned int *) VALUE_CONTENTS(arg2));
subscript_array[i] = value_as_long (arg2);
retcode = f77_get_dynamic_upperbound (tmp_type, &upper);
if (retcode == BOUND_FETCH_ERROR)