From ba71385e7f8824849f5a1f3d77bd5f03928138eb Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 28 Apr 2023 07:26:44 -0600 Subject: [PATCH] Remove evaluate_type Like evaluate_expression, evaluate_type is also just a simple wrapper. Removing it makes the code a little nicer. --- gdb/dtrace-probe.c | 2 +- gdb/eval.c | 9 --------- gdb/expression.h | 5 +++++ gdb/gnu-v3-abi.c | 2 +- gdb/mi/mi-main.c | 2 +- gdb/typeprint.c | 4 ++-- gdb/value.h | 2 -- gdb/varobj.c | 2 +- 8 files changed, 11 insertions(+), 17 deletions(-) diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c index dad15df5b99..a742c3c25e3 100644 --- a/gdb/dtrace-probe.c +++ b/gdb/dtrace-probe.c @@ -494,7 +494,7 @@ dtrace_process_dof_probe (struct objfile *objfile, } if (expr != NULL && expr->first_opcode () == OP_TYPE) - type = evaluate_type (expr.get ())->type (); + type = expr->evaluate_type ()->type (); args.emplace_back (type, std::move (type_str), std::move (expr)); } diff --git a/gdb/eval.c b/gdb/eval.c index 82b5fe26b62..9d5ca0b47de 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -116,15 +116,6 @@ expression::evaluate (struct type *expect_type, enum noside noside) return retval; } -/* Evaluate an expression, avoiding all memory references - and getting a value whose type alone is correct. */ - -struct value * -evaluate_type (struct expression *exp) -{ - return exp->evaluate (nullptr, EVAL_AVOID_SIDE_EFFECTS); -} - /* Find the current value of a watchpoint on EXP. Return the value in *VALP and *RESULTP and the chain of intermediate and final values in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does diff --git a/gdb/expression.h b/gdb/expression.h index 5bfb051a393..e6e4bec2e80 100644 --- a/gdb/expression.h +++ b/gdb/expression.h @@ -225,6 +225,11 @@ struct expression struct value *evaluate (struct type *expect_type = nullptr, enum noside noside = EVAL_NORMAL); + /* Evaluate an expression, avoiding all memory references + and getting a value whose type alone is correct. */ + struct value *evaluate_type () + { return evaluate (nullptr, EVAL_AVOID_SIDE_EFFECTS); } + /* Language it was entered in. */ const struct language_defn *language_defn; /* Architecture it was parsed in. */ diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 4d1aa12746f..2c7c83e67b1 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -1211,7 +1211,7 @@ gnuv3_get_type_from_type_info (struct value *type_info_ptr) internal form to reconstruct the type somehow. */ std::string type_name = gnuv3_get_typename_from_type_info (type_info_ptr); expression_up expr (parse_expression (type_name.c_str ())); - struct value *type_val = evaluate_type (expr.get ()); + struct value *type_val = expr->evaluate_type (); return type_val->type (); } diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 683d36d93d5..19cdf47a283 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -2466,7 +2466,7 @@ print_variable_or_computed (const char *expression, enum print_values values) expression_up expr = parse_expression (expression); if (values == PRINT_SIMPLE_VALUES) - val = evaluate_type (expr.get ()); + val = expr->evaluate_type (); else val = expr->evaluate (); diff --git a/gdb/typeprint.c b/gdb/typeprint.c index bfe851f348c..01c11629a70 100644 --- a/gdb/typeprint.c +++ b/gdb/typeprint.c @@ -511,7 +511,7 @@ whatis_exp (const char *exp, int show) "whatis" prints the type of the expression without stripping any typedef level. "ptype" always strips all levels of typedefs. */ - val = evaluate_type (expr.get ()); + val = expr->evaluate_type (); type = val->type (); if (show == -1 && expr->first_opcode () == OP_TYPE) @@ -708,7 +708,7 @@ maintenance_print_type (const char *type_name, int from_tty) if (type_name != NULL) { expression_up expr = parse_expression (type_name); - struct value *val = evaluate_type (expr.get ()); + struct value *val = expr->evaluate_type (); struct type *type = val->type (); if (type != nullptr) diff --git a/gdb/value.h b/gdb/value.h index f6092aba5a4..d042d816409 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1299,8 +1299,6 @@ extern int using_struct_return (struct gdbarch *gdbarch, struct value *function, struct type *value_type); -extern struct value *evaluate_type (struct expression *exp); - extern value *evaluate_var_value (enum noside noside, const block *blk, symbol *var); diff --git a/gdb/varobj.c b/gdb/varobj.c index 75b4d44b109..dd39784a21c 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -375,7 +375,7 @@ varobj_create (const char *objname, { /* Error getting the value. Try to at least get the right type. */ - struct value *type_only_value = evaluate_type (var->root->exp.get ()); + struct value *type_only_value = var->root->exp->evaluate_type (); var->type = type_only_value->type (); } -- 2.30.2