From 1eaebe02cfe78229d78ac27f5bd6651e1c1af863 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 8 Mar 2021 07:27:57 -0700 Subject: Remove union exp_element This removes union exp_element functions that either create such elements or walk them. struct expression no longer holds exp_elements. A couple of language_defn methods are also removed, as they are obsolete. Note that this patch also removes the print_expression code. The only in-tree caller of this was from dump_prefix_expression, which is only called when expression debugging is enabled. Implementing this would involve a fair amount of code, and it seems to me that prefix dumping is preferable anyway, as it is unambiguous. So, I have not reimplemented this feature. gdb/ChangeLog 2021-03-08 Tom Tromey * value.h (evaluate_subexp_with_coercion): Don't declare. * parse.c (exp_descriptor_standard): Remove. (expr_builder::expr_builder, expr_builder::release): Update. (expression::expression): Remove size_t parameter. (expression::~expression): Simplify. (expression::resize): Remove. (write_exp_elt, write_exp_elt_opcode, write_exp_elt_sym) (write_exp_elt_msym, write_exp_elt_block, write_exp_elt_objfile) (write_exp_elt_longcst, write_exp_elt_floatcst) (write_exp_elt_type, write_exp_elt_intern, write_exp_string) (write_exp_string_vector, write_exp_bitstring): Remove. * p-lang.h (class pascal_language) : Remove. * p-lang.c (pascal_language::op_print_tab): Remove. * opencl-lang.c (class opencl_language) : Remove. * objc-lang.c (objc_op_print_tab): Remove. (class objc_language) : Remove. * m2-lang.h (class m2_language) : Remove. * m2-lang.c (m2_language::op_print_tab): Remove. * language.h (struct language_defn) : Remove. * language.c (language_defn::expression_ops) (auto_or_unknown_language::opcode_print_table): Remove. * go-lang.h (class go_language) : Remove. * go-lang.c (go_language::op_print_tab): Remove. * f-lang.h (class f_language) : Remove : Remove. * f-lang.c (f_language::op_print_tab): Remove. * expression.h (union exp_element): Remove. (struct expression): Remove size_t parameter from constructor. : Remove. : Update. : Remove. (EXP_ELEM_TO_BYTES, BYTES_TO_EXP_ELEM): Remove. (evaluate_subexp_standard, print_expression, op_string) (dump_raw_expression): Don't declare. * expprint.c (print_expression, print_subexp) (print_subexp_funcall, print_subexp_standard, op_string) (dump_raw_expression, dump_subexp, dump_subexp_body) (dump_subexp_body_funcall, dump_subexp_body_standard): Remove. (dump_prefix_expression): Update. * eval.c (evaluate_subexp): Remove. (evaluate_expression, evaluate_type): Update. (evaluate_subexpression_type): Remove. (fetch_subexp_value): Remove "pc" parameter. Update. (extract_field_op, evaluate_struct_tuple, evaluate_funcall) (evaluate_subexp_standard, evaluate_subexp_for_address) (evaluate_subexp_with_coercion, evaluate_subexp_for_sizeof) (evaluate_subexp_for_cast): Remove. (parse_and_eval_type): Update. * dtrace-probe.c (dtrace_probe::compile_to_ax): Update. * d-lang.c (d_op_print_tab): Remove. (class d_language) : Remove. * c-lang.h (c_op_print_tab): Don't declare. * c-lang.c (c_op_print_tab): Remove. (class c_language, class cplus_language, class asm_language, class minimal_language) : Remove. * breakpoint.c (update_watchpoint, watchpoint_check) (watchpoint_exp_is_const, watch_command_1): Update. * ax-gdb.h (union exp_element): Don't declare. * ax-gdb.c (const_var_ref, const_expr, maybe_const_expr) (gen_repeat, gen_sizeof, gen_expr_for_cast, gen_expr) (gen_expr_binop_rest): Remove. (gen_trace_for_expr, gen_eval_for_expr, gen_printf): Update. * ada-lang.c (ada_op_print_tab): Remove. (class ada_language) : Remove. --- gdb/tracepoint.c | 56 ++++++++++++++++---------------------------------------- 1 file changed, 16 insertions(+), 40 deletions(-) (limited to 'gdb/tracepoint.c') diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 101c526..bf8a63c 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -691,15 +691,10 @@ validate_actionline (const char *line, struct breakpoint *b) if (exp->first_opcode () == OP_VAR_VALUE) { symbol *sym; - if (exp->op != nullptr) - { - expr::var_value_operation *vvop - = (dynamic_cast - (exp->op.get ())); - sym = vvop->get_symbol (); - } - else - sym = exp->elts[2].symbol; + expr::var_value_operation *vvop + = (dynamic_cast + (exp->op.get ())); + sym = vvop->get_symbol (); if (SYMBOL_CLASS (sym) == LOC_CONST) { @@ -1395,16 +1390,10 @@ encode_actions_1 (struct command_line *action, { case OP_REGISTER: { - const char *name; - if (exp->op != nullptr) - { - expr::register_operation *regop - = (dynamic_cast - (exp->op.get ())); - name = regop->get_name (); - } - else - name = &exp->elts[2].string; + expr::register_operation *regop + = (dynamic_cast + (exp->op.get ())); + const char *name = regop->get_name (); i = user_reg_map_name_to_regnum (target_gdbarch (), name, strlen (name)); @@ -1424,16 +1413,10 @@ encode_actions_1 (struct command_line *action, /* Safe because we know it's a simple expression. */ tempval = evaluate_expression (exp.get ()); addr = value_address (tempval); - struct type *type; - if (exp->op != nullptr) - { - expr::unop_memval_operation *memop - = (dynamic_cast - (exp->op.get ())); - type = memop->get_type (); - } - else - type = exp->elts[1].type; + expr::unop_memval_operation *memop + = (dynamic_cast + (exp->op.get ())); + struct type *type = memop->get_type (); /* Initialize the TYPE_LENGTH if it is a typedef. */ check_typedef (type); collect->add_memrange (target_gdbarch (), @@ -1447,17 +1430,10 @@ encode_actions_1 (struct command_line *action, case OP_VAR_VALUE: { - struct symbol *sym; - - if (exp->op != nullptr) - { - expr::var_value_operation *vvo - = (dynamic_cast - (exp->op.get ())); - sym = vvo->get_symbol (); - } - else - sym = exp->elts[2].symbol; + expr::var_value_operation *vvo + = (dynamic_cast + (exp->op.get ())); + struct symbol *sym = vvo->get_symbol (); const char *name = sym->natural_name (); collect->collect_symbol (sym, -- cgit v1.1