[PATCH] mips: avoid signed overflow in LUI_OPERAND [PR104842]

Richard Sandiford richard.sandiford@arm.com
Tue Mar 8 18:20:08 GMT 2022


Xi Ruoyao <xry111@mengyan1223.wang> writes:
> I think this one obvious.  Ok for trunk?

OK, thanks.

Richard

>
> gcc/
>
> 	PR target/104842
> 	* config/mips/mips.h (LUI_OPERAND): Cast the input to an unsigned
> 	value before adding an offset.
> ---
>  gcc/config/mips/mips.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
> index bf5c1d5a709..0029864fdcd 100644
> --- a/gcc/config/mips/mips.h
> +++ b/gcc/config/mips/mips.h
> @@ -2309,7 +2309,7 @@ enum reg_class
>  
>  #define LUI_OPERAND(VALUE)					\
>    (((VALUE) | 0x7fff0000) == 0x7fff0000				\
> -   || ((VALUE) | 0x7fff0000) + 0x10000 == 0)
> +   || ((unsigned HOST_WIDE_INT) (VALUE) | 0x7fff0000) + 0x10000 == 0)
>  
>  /* Return a value X with the low 16 bits clear, and such that
>     VALUE - X is a signed 16-bit value.  */


More information about the Gcc-patches mailing list