aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2023-04-28 07:26:44 -0600
committerTom Tromey <tromey@adacore.com>2023-05-01 11:04:13 -0600
commitba71385e7f8824849f5a1f3d77bd5f03928138eb (patch)
treee15d8a1ffcb564d8def235f15eaa7e65d3f1f835
parent43048e46db188e546ba2107bdffcc7eb751c91df (diff)
downloadgdb-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.c2
-rw-r--r--gdb/eval.c9
-rw-r--r--gdb/expression.h5
-rw-r--r--gdb/gnu-v3-abi.c2
-rw-r--r--gdb/mi/mi-main.c2
-rw-r--r--gdb/typeprint.c4
-rw-r--r--gdb/value.h2
-rw-r--r--gdb/varobj.c2
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));
}
diff --git a/gdb/eval.c b/gdb/eval.c
index 82b5fe2..9d5ca0b 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 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 ();
}