diff options
author | Tom Tromey <tromey@adacore.com> | 2022-03-09 14:35:10 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2022-03-16 09:28:13 -0600 |
commit | a73c128df6e149c36940240f2b2198f9732ab6c7 (patch) | |
tree | 36727e90b541814d575cda666114b5c1aec404a8 | |
parent | fc18a21b65a7a0fc05d5e41118e072d253aeca0a (diff) | |
download | binutils-a73c128df6e149c36940240f2b2198f9732ab6c7.zip binutils-a73c128df6e149c36940240f2b2198f9732ab6c7.tar.gz binutils-a73c128df6e149c36940240f2b2198f9732ab6c7.tar.bz2 |
Remove eval_op_concat
eval_op_concat has code to search for an operator overload of
BINOP_CONCAT. However, the operator overloading code is specific to
C++, which does not have this operator. And,
binop_types_user_defined_p rejects this case right at the start, and
value_x_binop does not handle this case. I think this code has been
dead for a very long time. This patch removes it and hoists the
remaining call into concatenation::evaluate, removing eval_op_concat
entirely.
-rw-r--r-- | gdb/eval.c | 12 | ||||
-rw-r--r-- | gdb/expop.h | 6 | ||||
-rw-r--r-- | gdb/valarith.c | 2 |
3 files changed, 2 insertions, 18 deletions
@@ -1106,18 +1106,6 @@ eval_op_objc_selector (struct type *expect_type, struct expression *exp, lookup_child_selector (exp->gdbarch, sel)); } -/* Helper function that implements the body of BINOP_CONCAT. */ - -struct value * -eval_op_concat (struct type *expect_type, struct expression *exp, - enum noside noside, struct value *arg1, struct value *arg2) -{ - if (binop_user_defined_p (BINOP_CONCAT, arg1, arg2)) - return value_x_binop (arg1, arg2, BINOP_CONCAT, OP_NULL, noside); - else - return value_concat (arg1, arg2); -} - /* A helper function for TERNOP_SLICE. */ struct value * diff --git a/gdb/expop.h b/gdb/expop.h index 1592568..d903ab0 100644 --- a/gdb/expop.h +++ b/gdb/expop.h @@ -83,10 +83,6 @@ extern struct value *eval_op_member (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, struct value *arg2); -extern struct value *eval_op_concat (struct type *expect_type, - struct expression *exp, - enum noside noside, - struct value *arg1, struct value *arg2); extern struct value *eval_op_add (struct type *expect_type, struct expression *exp, enum noside noside, @@ -1158,7 +1154,7 @@ public: = std::get<0> (m_storage)->evaluate_with_coercion (exp, noside); value *rhs = std::get<1> (m_storage)->evaluate_with_coercion (exp, noside); - return eval_op_concat (expect_type, exp, noside, lhs, rhs); + return value_concat (lhs, rhs); } enum exp_opcode opcode () const override diff --git a/gdb/valarith.c b/gdb/valarith.c index e13db10..791c1cd 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -252,7 +252,7 @@ int binop_types_user_defined_p (enum exp_opcode op, struct type *type1, struct type *type2) { - if (op == BINOP_ASSIGN || op == BINOP_CONCAT) + if (op == BINOP_ASSIGN) return 0; type1 = check_typedef (type1); |