diff options
author | Tom Tromey <tromey@adacore.com> | 2023-04-28 07:26:44 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-05-01 11:04:13 -0600 |
commit | ba71385e7f8824849f5a1f3d77bd5f03928138eb (patch) | |
tree | e15d8a1ffcb564d8def235f15eaa7e65d3f1f835 | |
parent | 43048e46db188e546ba2107bdffcc7eb751c91df (diff) | |
download | gdb-ba71385e7f8824849f5a1f3d77bd5f03928138eb.zip gdb-ba71385e7f8824849f5a1f3d77bd5f03928138eb.tar.gz gdb-ba71385e7f8824849f5a1f3d77bd5f03928138eb.tar.bz2 |
Remove evaluate_type
Like evaluate_expression, evaluate_type is also just a simple wrapper.
Removing it makes the code a little nicer.
-rw-r--r-- | gdb/dtrace-probe.c | 2 | ||||
-rw-r--r-- | gdb/eval.c | 9 | ||||
-rw-r--r-- | gdb/expression.h | 5 | ||||
-rw-r--r-- | gdb/gnu-v3-abi.c | 2 | ||||
-rw-r--r-- | gdb/mi/mi-main.c | 2 | ||||
-rw-r--r-- | gdb/typeprint.c | 4 | ||||
-rw-r--r-- | gdb/value.h | 2 | ||||
-rw-r--r-- | gdb/varobj.c | 2 |
8 files changed, 11 insertions, 17 deletions
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c index dad15df..a742c3c 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)); } @@ -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 5bfb051..e6e4bec 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 4d1aa12..2c7c83e 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 683d36d..19cdf47 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 bfe851f..01c1162 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 f6092ab..d042d81 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 75b4d44..dd39784 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 (); } |