aboutsummaryrefslogtreecommitdiff
path: root/gdb/ax-gdb.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2021-03-08 07:27:57 -0700
committerTom Tromey <tom@tromey.com>2021-03-08 07:28:13 -0700
commite18c58f290609dcfe8d7df450bb88b1adf44337a (patch)
treee38597b2301232a98b2bcd0a65e5beb54411f9bd /gdb/ax-gdb.c
parentc0d7ed8ca842c9b199722a878f46adab7b9320ff (diff)
downloadbinutils-e18c58f290609dcfe8d7df450bb88b1adf44337a.zip
binutils-e18c58f290609dcfe8d7df450bb88b1adf44337a.tar.gz
binutils-e18c58f290609dcfe8d7df450bb88b1adf44337a.tar.bz2
Split gen_expr_binop_rest
This splits gen_expr_binop_rest into two overloads. One overload retains the "pc" parameter, while the other does not, and furthermore does not call gen_expr on the left-hand-side. This split is useful for subsequent patches in the new expression evaluation approach. gdb/ChangeLog 2021-03-08 Tom Tromey <tom@tromey.com> * ax-gdb.c (gen_expr_binop_rest): Remove "pc" parameter. (gen_expr_binop_rest): New overload.
Diffstat (limited to 'gdb/ax-gdb.c')
-rw-r--r--gdb/ax-gdb.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index fa77728..e18e968 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -2276,13 +2276,12 @@ gen_expr (struct expression *exp, union exp_element **pc,
static void
gen_expr_binop_rest (struct expression *exp,
- enum exp_opcode op, union exp_element **pc,
+ enum exp_opcode op,
struct agent_expr *ax, struct axs_value *value,
struct axs_value *value1, struct axs_value *value2)
{
struct type *int_type = builtin_type (ax->gdbarch)->builtin_int;
- gen_expr (exp, pc, ax, value2);
gen_usual_unary (ax, value2);
gen_usual_arithmetic (ax, value1, value2);
switch (op)
@@ -2420,6 +2419,19 @@ gen_expr_binop_rest (struct expression *exp,
_("gen_expr: op case sets don't match"));
}
}
+
+/* Variant of gen_expr_binop_rest that first generates the
+ right-hand-side. */
+
+static void
+gen_expr_binop_rest (struct expression *exp,
+ enum exp_opcode op, union exp_element **pc,
+ struct agent_expr *ax, struct axs_value *value,
+ struct axs_value *value1, struct axs_value *value2)
+{
+ gen_expr (exp, pc, ax, value2);
+ gen_expr_binop_rest (exp, op, ax, value, value1, value2);
+}
/* Given a single variable and a scope, generate bytecodes to trace