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:

Reply via email to