From e18c58f290609dcfe8d7df450bb88b1adf44337a Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 8 Mar 2021 07:27:57 -0700 Subject: 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 * ax-gdb.c (gen_expr_binop_rest): Remove "pc" parameter. (gen_expr_binop_rest): New overload. --- gdb/ax-gdb.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'gdb/ax-gdb.c') 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 -- cgit v1.1