https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115591

--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
The immediate fix is:

diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index c17141d909a..5e34dc92210 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -1702,7 +1702,9 @@ riscv_valid_lo_sum_p (enum riscv_symbol_type sym_type,
machine_mode mode,
       align = (SYMBOL_REF_DECL (x)
               ? DECL_ALIGN (SYMBOL_REF_DECL (x))
               : 1);
-      size = (SYMBOL_REF_DECL (x) && DECL_SIZE (SYMBOL_REF_DECL (x))
+      size = (SYMBOL_REF_DECL (x)
+             && DECL_SIZE (SYMBOL_REF_DECL (x))
+             && tree_fits_uhwi_p (DECL_SIZE (SYMBOL_REF_DECL (x)))
              ? tree_to_uhwi (DECL_SIZE (SYMBOL_REF_DECL (x)))
              : 2*BITS_PER_WORD);
     }

but I cannot really test it.

Reply via email to