Hi!

C++20, in particular https://wg21.link/P1120R0 paper voted into it,
deprecates various operations between enumerators from different enumeration
types etc., and as we've switched to -std=gnu++20 by default, this now
results in warnings or errors during stage2 and onwards.

The following patch should fix mips build.
Tested on x86_64 with a cross to mips, by doing
make clean; make -j32 CXXFLAGS='-g -std=gnu++20' in the gcc/ directory.

Ok for trunk?

2025-11-28  Jakub Jelinek  <[email protected]>

        * config/mips/mips.cc (mips_unspec_address_offset): Avoid
        arithmetics between enumerators from different enum types.

--- gcc/config/mips/mips.cc.jj  2025-10-10 18:26:04.910641601 +0200
+++ gcc/config/mips/mips.cc     2025-11-28 21:18:28.828718042 +0100
@@ -3315,7 +3315,7 @@ mips_unspec_address_offset (rtx base, rt
                            enum mips_symbol_type symbol_type)
 {
   base = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, base),
-                        UNSPEC_ADDRESS_FIRST + symbol_type);
+                        UNSPEC_ADDRESS_FIRST + (int) symbol_type);
   if (offset != const0_rtx)
     base = gen_rtx_PLUS (Pmode, base, offset);
   return gen_rtx_CONST (Pmode, base);


        Jakub

Reply via email to