https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123959
--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jose E. Marchesi <[email protected]>: https://gcc.gnu.org/g:5a3bf2217b649087670ed2e6079bc06f9209db0c commit r16-7307-g5a3bf2217b649087670ed2e6079bc06f9209db0c Author: Jose E. Marchesi <[email protected]> Date: Wed Feb 4 10:18:14 2026 +0100 a68: fix bit-shift standard operators [PR algol68/123959] In Standard Algol 68: - ABS (b) < bits_width results in the expected result. - ABS (b) = bits_width results in all bits set to zero. - ABS (b) > bits_width is undefined. In GNU algol 68: - ABS (b) < bits_width results in the expected result. - ABS (b) >= bits_width results in all bits set to zero. Our behavior is: 1. Conformant and backwards compatible. 2. Matches well with the similar extension of skip of integral, bits, real, etc values to always yield zeroes. 3. Intuitive. This patch fixes the lowering of the standard operators SHR and SHL accordingly, including an update for the manual and a few tests. Signed-off-by: Jose E. Marchesi <[email protected]> gcc/algol68/ChangeLog PR algol68/123959 * a68.h: Expand prototype of a68_bits_shift to get a node argument for location purposes. * a68-low-bits.cc (a68_bits_shift): Implement RR compatible semantics. * a68-low-prelude.cc (a68_lower_shl3): Fix call to a68_bit_shift. (a68_lower_shr3): Likewise. * ga68.texi (Bits operators): Fix documentation of SHR and SHL. gcc/testsuite/ChangeLog PR algol68/123959 * algol68/execute/bits-shift-1.a68: New test. * algol68/execute/bits-shift-2.a68: Likewise. * algol68/execute/bits-shift-3.a68: Likewise.
