From 01739a3b6a564f6552acf6c01617aa21ab4d8833 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 27 Apr 2016 10:28:56 -0600 Subject: [PATCH] Rename OP_F90_RANGE to OP_RANGE. This renames OP_F90_RANGE to OP_RANGE, and similarly renames the f90_range_type enum. 2016-05-17 Tom Tromey * std-operator.def (OP_RANGE): Rename from OP_F90_RANGE. * rust-lang.c: Don't include f-lang.h. (rust_range, rust_compute_range, rust_subscript) (rust_evaluate_subexp): Update. * rust-exp.y: Don't include f-lang.h. (ast_range, convert_ast_to_expression): Update. * parse.c (operator_length_standard): Update. * f-lang.h (enum f90_range_type): Move to expression.h. * f-exp.y: Use OP_RANGE. * expression.h (enum range_type): New enum; renamed from f90_range_type. * expprint.c: Don't include f-lang.h. (print_subexp_standard, dump_subexp_body_standard): Use OP_RANGE. * eval.c (value_f90_subarray, evaluate_subexp_standard): Update. --- gdb/ChangeLog | 17 +++++++++++++++++ gdb/eval.c | 8 ++++---- gdb/expprint.c | 13 ++++++------- gdb/expression.h | 13 +++++++++++++ gdb/f-exp.y | 16 ++++++++-------- gdb/f-lang.h | 13 ------------- gdb/parse.c | 6 +++--- gdb/rust-exp.y | 11 +++++------ gdb/rust-lang.c | 13 ++++++------- gdb/std-operator.def | 5 +++-- 10 files changed, 65 insertions(+), 50 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3b4b9d362ab..b7a6351162b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,20 @@ +2016-05-17 Tom Tromey + + * std-operator.def (OP_RANGE): Rename from OP_F90_RANGE. + * rust-lang.c: Don't include f-lang.h. + (rust_range, rust_compute_range, rust_subscript) + (rust_evaluate_subexp): Update. + * rust-exp.y: Don't include f-lang.h. + (ast_range, convert_ast_to_expression): Update. + * parse.c (operator_length_standard): Update. + * f-lang.h (enum f90_range_type): Move to expression.h. + * f-exp.y: Use OP_RANGE. + * expression.h (enum range_type): New enum; renamed from + f90_range_type. + * expprint.c: Don't include f-lang.h. + (print_subexp_standard, dump_subexp_body_standard): Use OP_RANGE. + * eval.c (value_f90_subarray, evaluate_subexp_standard): Update. + 2016-05-17 Tom Tromey * NEWS: Add Rust item. diff --git a/gdb/eval.c b/gdb/eval.c index 5d32a3cd4bc..3f8ca662a27 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -406,8 +406,8 @@ value_f90_subarray (struct value *array, int pc = (*pos) + 1; LONGEST low_bound, high_bound; struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array))); - enum f90_range_type range_type - = (enum f90_range_type) longest_to_int (exp->elts[pc].longconst); + enum range_type range_type + = (enum range_type) longest_to_int (exp->elts[pc].longconst); *pos += 3; @@ -1810,13 +1810,13 @@ evaluate_subexp_standard (struct type *expect_type, switch (code) { case TYPE_CODE_ARRAY: - if (exp->elts[*pos].opcode == OP_F90_RANGE) + if (exp->elts[*pos].opcode == OP_RANGE) return value_f90_subarray (arg1, exp, pos, noside); else goto multi_f77_subscript; case TYPE_CODE_STRING: - if (exp->elts[*pos].opcode == OP_F90_RANGE) + if (exp->elts[*pos].opcode == OP_RANGE) return value_f90_subarray (arg1, exp, pos, noside); else { diff --git a/gdb/expprint.c b/gdb/expprint.c index db196a13ef9..c37ecb06164 100644 --- a/gdb/expprint.c +++ b/gdb/expprint.c @@ -29,7 +29,6 @@ #include "block.h" #include "objfiles.h" #include "valprint.h" -#include "f-lang.h" #include @@ -560,11 +559,11 @@ print_subexp_standard (struct expression *exp, int *pos, return; } - case OP_F90_RANGE: + case OP_RANGE: { - enum f90_range_type range_type; + enum range_type range_type; - range_type = (enum f90_range_type) + range_type = (enum range_type) longest_to_int (exp->elts[pc + 1].longconst); *pos += 2; @@ -1046,11 +1045,11 @@ dump_subexp_body_standard (struct expression *exp, elt += 2; } break; - case OP_F90_RANGE: + case OP_RANGE: { - enum f90_range_type range_type; + enum range_type range_type; - range_type = (enum f90_range_type) + range_type = (enum range_type) longest_to_int (exp->elts[elt].longconst); elt += 2; diff --git a/gdb/expression.h b/gdb/expression.h index 9986b20e901..4952d8457e9 100644 --- a/gdb/expression.h +++ b/gdb/expression.h @@ -152,4 +152,17 @@ extern void dump_raw_expression (struct expression *, struct ui_file *, char *); extern void dump_prefix_expression (struct expression *, struct ui_file *); +/* In an OP_RANGE expression, either bound could be empty, indicating + that its value is by default that of the corresponding bound of the + array or string. So we have four sorts of subrange. This + enumeration type is to identify this. */ + +enum range_type + { + BOTH_BOUND_DEFAULT, /* "(:)" */ + LOW_BOUND_DEFAULT, /* "(:high)" */ + HIGH_BOUND_DEFAULT, /* "(low:)" */ + NONE_BOUND_DEFAULT /* "(low:high)" */ + }; + #endif /* !defined (EXPRESSION_H) */ diff --git a/gdb/f-exp.y b/gdb/f-exp.y index cd659a1e223..e3148a30263 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y @@ -258,27 +258,27 @@ arglist : arglist ',' exp %prec ABOVE_COMMA /* There are four sorts of subrange types in F90. */ subrange: exp ':' exp %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); write_exp_elt_longcst (pstate, NONE_BOUND_DEFAULT); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; subrange: exp ':' %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); write_exp_elt_longcst (pstate, HIGH_BOUND_DEFAULT); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; subrange: ':' exp %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); write_exp_elt_longcst (pstate, LOW_BOUND_DEFAULT); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; subrange: ':' %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); write_exp_elt_longcst (pstate, BOTH_BOUND_DEFAULT); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; complexnum: exp ',' exp diff --git a/gdb/f-lang.h b/gdb/f-lang.h index 45df770857a..827785a0d17 100644 --- a/gdb/f-lang.h +++ b/gdb/f-lang.h @@ -37,19 +37,6 @@ extern void f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, /* Language-specific data structures */ -/* In F90 subrange expression, either bound could be empty, indicating that - its value is by default that of the corresponding bound of the array or - string. So we have four sorts of subrange in F90. This enumeration type - is to identify this. */ - -enum f90_range_type - { - BOTH_BOUND_DEFAULT, /* "(:)" */ - LOW_BOUND_DEFAULT, /* "(:high)" */ - HIGH_BOUND_DEFAULT, /* "(low:)" */ - NONE_BOUND_DEFAULT /* "(low:high)" */ - }; - /* A common block. */ struct common_block diff --git a/gdb/parse.c b/gdb/parse.c index 4191fc62d12..2b00708f1b8 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -862,7 +862,7 @@ operator_length_standard (const struct expression *expr, int endpos, { int oplen = 1; int args = 0; - enum f90_range_type range_type; + enum range_type range_type; int i; if (endpos < 1) @@ -1004,9 +1004,9 @@ operator_length_standard (const struct expression *expr, int endpos, oplen = 2; break; - case OP_F90_RANGE: + case OP_RANGE: oplen = 3; - range_type = (enum f90_range_type) + range_type = (enum range_type) longest_to_int (expr->elts[endpos - 2].longconst); switch (range_type) diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y index f0c4e6c9eb7..c1a863c465f 100644 --- a/gdb/rust-exp.y +++ b/gdb/rust-exp.y @@ -26,7 +26,6 @@ #include "block.h" #include "charset.h" #include "cp-support.h" -#include "f-lang.h" #include "gdb_obstack.h" #include "gdb_regex.h" #include "rust-lang.h" @@ -1787,7 +1786,7 @@ ast_range (const struct rust_op *lhs, const struct rust_op *rhs) { struct rust_op *result = OBSTACK_ZALLOC (&work_obstack, struct rust_op); - result->opcode = OP_F90_RANGE; + result->opcode = OP_RANGE; result->left.op = lhs; result->right.op = rhs; @@ -2417,9 +2416,9 @@ convert_ast_to_expression (struct parser_state *state, } break; - case OP_F90_RANGE: + case OP_RANGE: { - enum f90_range_type kind = BOTH_BOUND_DEFAULT; + enum range_type kind = BOTH_BOUND_DEFAULT; if (operation->left.op != NULL) { @@ -2437,9 +2436,9 @@ convert_ast_to_expression (struct parser_state *state, kind = NONE_BOUND_DEFAULT; } } - write_exp_elt_opcode (state, OP_F90_RANGE); + write_exp_elt_opcode (state, OP_RANGE); write_exp_elt_longcst (state, kind); - write_exp_elt_opcode (state, OP_F90_RANGE); + write_exp_elt_opcode (state, OP_RANGE); } break; diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index 427862184f2..b8af166ad92 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -25,7 +25,6 @@ #include "c-lang.h" #include "charset.h" #include "cp-support.h" -#include "f-lang.h" #include "gdbarch.h" #include "infcall.h" #include "objfiles.h" @@ -1172,12 +1171,12 @@ rust_evaluate_funcall (struct expression *exp, int *pos, enum noside noside) return result; } -/* A helper for rust_evaluate_subexp that handles OP_F90_RANGE. */ +/* A helper for rust_evaluate_subexp that handles OP_RANGE. */ static struct value * rust_range (struct expression *exp, int *pos, enum noside noside) { - enum f90_range_type kind; + enum range_type kind; struct value *low = NULL, *high = NULL; struct value *addrval, *result; CORE_ADDR addr; @@ -1186,7 +1185,7 @@ rust_range (struct expression *exp, int *pos, enum noside noside) struct type *temp_type; const char *name; - kind = (enum f90_range_type) longest_to_int (exp->elts[*pos + 1].longconst); + kind = (enum range_type) longest_to_int (exp->elts[*pos + 1].longconst); *pos += 3; if (kind == HIGH_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT) @@ -1274,7 +1273,7 @@ rust_range (struct expression *exp, int *pos, enum noside noside) static void rust_compute_range (struct type *type, struct value *range, LONGEST *low, LONGEST *high, - enum f90_range_type *kind) + enum range_type *kind) { int i; @@ -1311,7 +1310,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside, struct type *rhstype; LONGEST low, high, high_bound; /* Initialized to appease the compiler. */ - enum f90_range_type kind = BOTH_BOUND_DEFAULT; + enum range_type kind = BOTH_BOUND_DEFAULT; int want_slice = 0; ++*pos; @@ -1699,7 +1698,7 @@ which has only anonymous fields"), } break; - case OP_F90_RANGE: + case OP_RANGE: result = rust_range (exp, pos, noside); break; diff --git a/gdb/std-operator.def b/gdb/std-operator.def index 08f0d5bf2c6..6123957e994 100644 --- a/gdb/std-operator.def +++ b/gdb/std-operator.def @@ -292,8 +292,9 @@ OP (OP_NAME) /* An Objective C Foundation Class NSString constant. */ OP (OP_OBJC_NSSTRING) -/* A F90 array range operator (for "exp:exp", "exp:", ":exp" and ":"). */ -OP (OP_F90_RANGE) +/* An array range operator (in Fortran 90, for "exp:exp", "exp:", + ":exp" and ":"). */ +OP (OP_RANGE) /* OP_DECFLOAT is followed by a type pointer in the next exp_element and a dec long constant value in the following exp_element. -- 2.30.2