From: Jose E. Marchesi Date: Mon, 9 Feb 2026 23:30:04 +0000 (+0100) Subject: a68: avoid uninitialized save_expr in a68_bits_shift [PR algol68/124028] X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5269ab4a7c30aa5e57dc650d44363023ddcec56d;p=thirdparty%2Fgcc.git a68: avoid uninitialized save_expr in a68_bits_shift [PR algol68/124028] Signed-off-by: Jose E. Marchesi gcc/algol68/ChangeLog PR algol68/124028 * a68-low-bits.cc (a68_bits_shift): Avoid uninitialized save_expr. gcc/testsuite/ChangeLog PR algol68/124028 * algol68/execute/bits-shift-4.a68: New test. --- diff --git a/gcc/algol68/a68-low-bits.cc b/gcc/algol68/a68-low-bits.cc index 81b4f98c4fa..1857b830cb1 100644 --- a/gcc/algol68/a68-low-bits.cc +++ b/gcc/algol68/a68-low-bits.cc @@ -283,12 +283,14 @@ a68_bits_shift (NODE_T *p, tree shift, tree bits) shift, build_zero_cst (shift_type)), shifted_right, shifted_left); - return fold_build3_loc (a68_get_node_location (p), - COND_EXPR, - TREE_TYPE (bits), - fold_build2 (LT_EXPR, TREE_TYPE (abs_shift), - abs_shift, a68_bits_width (bits_type)), - shifted_bits, build_zero_cst (bits_type)); + return fold_build2 (COMPOUND_EXPR, TREE_TYPE (bits), + bits, + fold_build3_loc (a68_get_node_location (p), + COND_EXPR, + TREE_TYPE (bits), + fold_build2 (LT_EXPR, TREE_TYPE (abs_shift), + abs_shift, a68_bits_width (bits_type)), + shifted_bits, build_zero_cst (bits_type))); } /* Given two bits values, build an expression that calculates whether A = B. */ diff --git a/gcc/testsuite/algol68/execute/bits-shift-4.a68 b/gcc/testsuite/algol68/execute/bits-shift-4.a68 new file mode 100644 index 00000000000..87188fbf2dd --- /dev/null +++ b/gcc/testsuite/algol68/execute/bits-shift-4.a68 @@ -0,0 +1,10 @@ +begin + int shft := 2; + + int i := 12; + bits x = BIN i; + int j := Abs(x Shl 2); + int k := Abs(x Shl shft); + + assert (j = k) +end