From badefd2800f5ee2dc6a0eef870771af9dc29bba7 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Wed, 29 Nov 1995 22:59:31 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 7 +++++++ gdb/ch-lang.c | 4 ++++ gdb/eval.c | 12 ++++++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c78cbc634f9..1e2654a7c40 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ Wed Nov 29 13:35:18 1995 Per Bothner + * 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 diff --git a/gdb/ch-lang.c b/gdb/ch-lang.c index f8be814c3d5..1e681f50b1a 100644 --- a/gdb/ch-lang.c +++ b/gdb/ch-lang.c @@ -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; } diff --git a/gdb/eval.c b/gdb/eval.c index 65c9312c446..05adc90b43c 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -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) -- 2.30.2