Excerpts from Jose E. Marchesi's message of Januar 31, 2026 6:58 pm: > This patch adds support for a TEST operator for L bits. Documentation > and tests are included. > > Signed-off-by: Jose E. Marchesi <[email protected]> > > gcc/algol68/ChangeLog > > * a68.h: Prototypes for a68_bits_test and a68_lower_test3. > * a68-low-bits.cc (a68_bits_test): New function. > * a68-low-prelude.cc (a68_lower_test3): Likewise. > * a68-parser-prelude.cc (gnu_prelude): Declare TEST operators and > their priority. > * ga68.texi (Extended bits operators): New section. > > gcc/testsuite/ChangeLog > > * algol68/execute/bits-test-1.a68: New test. > --- > gcc/algol68/a68-low-bits.cc | 40 +++++++++++++++++++ > gcc/algol68/a68-low-prelude.cc | 8 ++++ > gcc/algol68/a68-parser-prelude.cc | 11 +++++ > gcc/algol68/a68.h | 2 + > gcc/algol68/ga68.texi | 6 +++ > gcc/testsuite/algol68/execute/bits-test-1.a68 | 5 +++ > 6 files changed, 72 insertions(+) > create mode 100644 gcc/testsuite/algol68/execute/bits-test-1.a68 > > diff --git a/gcc/algol68/a68-low-bits.cc b/gcc/algol68/a68-low-bits.cc > index 6a272ca633d..16205fa6351 100644 > --- a/gcc/algol68/a68-low-bits.cc > +++ b/gcc/algol68/a68-low-bits.cc > @@ -367,3 +367,43 @@ a68_bits_clear (MOID_T *m, tree bits, tree numbit, > location_t loc) > bits_type, > in_range, res, bits); > } > + > +/* Test the bit NUMBIT in BITS. > + > + NUMBIT is one based and counts bits from least significative to most > + significative, i.e. from "right" to "left". If NUMBIT is not in range > then > + the operator yields false. */ > + > +tree > +a68_bits_test (MOID_T *m ATTRIBUTE_UNUSED, > + tree bits, tree numbit, location_t loc) > +{ > + tree bits_type = TREE_TYPE (bits); > + tree int_type = TREE_TYPE (numbit); > + > + bits = save_expr (bits); > + numbit = save_expr (numbit); > + > + tree numbit_minus_one = fold_build2 (MINUS_EXPR, int_type, > + numbit, build_one_cst (int_type)); > + tree mask = fold_build2 (BIT_AND_EXPR, bits_type, > + bits, > + fold_build2 (LSHIFT_EXPR, > + bits_type, > + build_one_cst (bits_type), > + fold_convert (bits_type, > numbit_minus_one))); > + tree res = fold_build2 (NE_EXPR, > + a68_bool_type,
LGTM. Should the use of a68_bool_type be replaced with CTYPE (m)? Iain.
