https://gcc.gnu.org/g:ead3454f089bc864e448b1bf6ace6b445eca3152
commit ead3454f089bc864e448b1bf6ace6b445eca3152 Author: Jeff Law <j...@ventanamicro.com> Date: Fri Jul 12 13:11:33 2024 -0600 [PR rtl-optimization/115876] Fix one of two ubsan reported issues in new ext-dce.cc code David Binderman did a bootstrap build with ubsan enabled which triggered a few errors in the new ext-dce.cc code. This fixes the trivial case of shifting negative values. Bootstrapped and regression tested on x86. Pushing to the trunk. gcc/ PR rtl-optimization/115876 * ext-dce.cc (carry_backpropagate): Make mask and mmask unsigned. (cherry picked from commit a6f551d079de1d151b272bcdd3d42316857c9d4e) Diff: --- gcc/ext-dce.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/ext-dce.cc b/gcc/ext-dce.cc index adc9084df57d..91789d283fcd 100644 --- a/gcc/ext-dce.cc +++ b/gcc/ext-dce.cc @@ -374,13 +374,13 @@ binop_implies_op2_fully_live (rtx_code code) exclusively pertain to the first operand. */ HOST_WIDE_INT -carry_backpropagate (HOST_WIDE_INT mask, enum rtx_code code, rtx x) +carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x) { if (mask == 0) return 0; enum machine_mode mode = GET_MODE_INNER (GET_MODE (x)); - HOST_WIDE_INT mmask = GET_MODE_MASK (mode); + unsigned HOST_WIDE_INT mmask = GET_MODE_MASK (mode); switch (code) { case PLUS: