On Fri, 28 Nov 2025 at 18:28, Andreas Schwab wrote:
>
> This breaks bootstrap for riscv:
>
> In file included from ../../gcc/rtl.h:4039,
>                  from ../../gcc/config/riscv/riscv.cc:33:
> ../../gcc/config/riscv/riscv.cc: In function 'rtx_def* 
> riscv_unspec_address_offset(rtx, rtx, riscv_symbol_type)':
> ../../gcc/config/riscv/riscv.cc:2817:47: error: arithmetic between different 
> enumeration types 'unspec' and 'riscv_symbol_type' is deprecated 
> [-Werror=deprecated-enum-enum-conversion]
>  2817 |                          UNSPEC_ADDRESS_FIRST + symbol_type);
>       |                          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
> ./genrtl.h:502:43: note: in definition of macro 'gen_rtx_fmt_Ei'
>   502 |   gen_rtx_fmt_Ei_stat ((c), (m), (arg0), (arg1) MEM_STAT_INFO)
>       |                                           ^~~~
> ../../gcc/config/riscv/riscv.cc:2816:10: note: in expansion of macro 
> 'gen_rtx_UNSPEC'
>  2816 |   base = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, base),
>       |          ^~~~~~~~~~~~~~
> cc1plus: all warnings being treated as errors
> make[3]: *** [Makefile:2787: riscv.o] Error 1
>
> I assume that loongarch and mips have the same problem, since they use
> the same expression in their unspec_address_offset functions.

Casting one or both enumerators to int should fix it.

Reply via email to