diff options
author | Tom Tromey <tromey@adacore.com> | 2024-02-29 12:07:28 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-03-18 08:32:14 -0600 |
commit | 38ad466f704412ea23fa149e5310f0a6948f3e77 (patch) | |
tree | d30d92b9411deae717b0d8020ee047fe25b9d295 | |
parent | 1dd09e7f70d51eba4e2d9787959f07319c909110 (diff) | |
download | gdb-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.h | 27 | ||||
-rw-r--r-- | gdb/ada-exp.y | 12 |
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); } ; |