https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106459
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I suspect it is this macro which is causing the issue: /* True if VALUE can be loaded into a register using LU12I. */ #define LU12I_OPERAND(VALUE) \ (((VALUE) | ((1UL << 31) - IMM_REACH)) == ((1UL << 31) - IMM_REACH) \ || ((VALUE) | ((1UL << 31) - IMM_REACH)) + IMM_REACH == 0) It should either use ULL or use HOST_WIDE_INT_1U instead of 1UL.