[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.
This commit is contained in:
Jeff Law 2024-07-12 13:11:33 -06:00
parent b3d4a021ef
commit a6f551d079

View file

@ -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: