[072/203] Split gen_expr_binop_rest

Message ID 20210101214723.1784144-73-tom@tromey.com
State Superseded
Headers show
Series
  • Refactor expressions
Related show

Commit Message

Tom Tromey Jan. 1, 2021, 9:45 p.m.
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-01-01  Tom Tromey  <tom@tromey.com>

	* ax-gdb.c (gen_expr_binop_rest): Remove "pc" parameter.
	(gen_expr_binop_rest): New overload.
---
 gdb/ChangeLog |  5 +++++
 gdb/ax-gdb.c  | 16 ++++++++++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

-- 
2.26.2

Patch

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