aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2024-02-29 12:07:28 -0700
committerTom Tromey <tromey@adacore.com>2024-03-18 08:32:14 -0600
commit38ad466f704412ea23fa149e5310f0a6948f3e77 (patch)
treed30d92b9411deae717b0d8020ee047fe25b9d295
parent1dd09e7f70d51eba4e2d9787959f07319c909110 (diff)
downloadgdb-38ad466f704412ea23fa149e5310f0a6948f3e77.zip
gdb-38ad466f704412ea23fa149e5310f0a6948f3e77.tar.gz
gdb-38ad466f704412ea23fa149e5310f0a6948f3e77.tar.bz2
Remove some unnecessary Ada expression code
ada_bitwise_operation differs from the "usual" bitwise operations only in that it calls value_cast at the end. However, because gdb is generally fairly lax about integer types, and because (perhaps oddly) C-style binary promotion is done here anyway, it seems to me that this code isn't needed.
-rw-r--r--gdb/ada-exp.h27
-rw-r--r--gdb/ada-exp.y12
2 files changed, 6 insertions, 33 deletions
diff --git a/gdb/ada-exp.h b/gdb/ada-exp.h
index 1d8615b..9abdd6f 100644
--- a/gdb/ada-exp.h
+++ b/gdb/ada-exp.h
@@ -286,33 +286,6 @@ public:
{ return std::get<0> (m_storage); }
};
-/* Bitwise operators for Ada. */
-template<enum exp_opcode OP>
-class ada_bitwise_operation
- : public maybe_constant_operation<operation_up, operation_up>
-{
-public:
-
- using maybe_constant_operation::maybe_constant_operation;
-
- value *evaluate (struct type *expect_type,
- struct expression *exp,
- enum noside noside) override
- {
- value *lhs = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
- value *rhs = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
- value *result = eval_op_binary (expect_type, exp, noside, OP, lhs, rhs);
- return value_cast (lhs->type (), result);
- }
-
- enum exp_opcode opcode () const override
- { return OP; }
-};
-
-using ada_bitwise_and_operation = ada_bitwise_operation<BINOP_BITWISE_AND>;
-using ada_bitwise_ior_operation = ada_bitwise_operation<BINOP_BITWISE_IOR>;
-using ada_bitwise_xor_operation = ada_bitwise_operation<BINOP_BITWISE_XOR>;
-
/* Ada array- or string-slice operation. */
class ada_ternop_slice_operation
: public maybe_constant_operation<operation_up, operation_up, operation_up>,
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
index ab936ae..26963f7 100644
--- a/gdb/ada-exp.y
+++ b/gdb/ada-exp.y
@@ -800,10 +800,10 @@ exp : relation
and_exp :
relation _AND_ relation
- { ada_wrap2<ada_bitwise_and_operation>
+ { ada_wrap2<bitwise_and_operation>
(BINOP_BITWISE_AND); }
| and_exp _AND_ relation
- { ada_wrap2<ada_bitwise_and_operation>
+ { ada_wrap2<bitwise_and_operation>
(BINOP_BITWISE_AND); }
;
@@ -818,10 +818,10 @@ and_then_exp :
or_exp :
relation OR relation
- { ada_wrap2<ada_bitwise_ior_operation>
+ { ada_wrap2<bitwise_ior_operation>
(BINOP_BITWISE_IOR); }
| or_exp OR relation
- { ada_wrap2<ada_bitwise_ior_operation>
+ { ada_wrap2<bitwise_ior_operation>
(BINOP_BITWISE_IOR); }
;
@@ -833,10 +833,10 @@ or_else_exp :
;
xor_exp : relation XOR relation
- { ada_wrap2<ada_bitwise_xor_operation>
+ { ada_wrap2<bitwise_xor_operation>
(BINOP_BITWISE_XOR); }
| xor_exp XOR relation
- { ada_wrap2<ada_bitwise_xor_operation>
+ { ada_wrap2<bitwise_xor_operation>
(BINOP_BITWISE_XOR); }
;