From: Tom Tromey Date: Mon, 8 Mar 2021 14:27:57 +0000 (-0700) Subject: Split gen_expr_binop_rest X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e18c58f290609dcfe8d7df450bb88b1adf44337a;p=binutils-gdb.git 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 96a97828f29..70a93ed8e45 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2021-03-08 Tom Tromey + + * ax-gdb.c (gen_expr_binop_rest): Remove "pc" parameter. + (gen_expr_binop_rest): New overload. + 2021-03-08 Tom Tromey * eval.c (eval_multi_subscript): New function. diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c index fa777281c1e..e18e968b852 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