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.
