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

--- Comment #1 from jcmvbkbc at gcc dot gnu.org ---
ICE in the reproducer is generated when predicate 'symbolic_operand' is applied
to the 'const' node in the following rtl:

(insn 342 341 343 35 (set (reg:SI 97)
        (mem/u:SI (plus:SI (reg:SI 13 %a5)
                (const:SI (unspec:SI [
                            (symbol_ref:SI ("__gcov_kvp_dynamic_pool_index")
[flags 0x40]  <var_decl 0x7f9e83fe7cf0 __gcov_kvp_dynamic_pool_index>)
                            (const_int 0 [0])
                        ] 6))) [0  S4 A8])) "gcc/libgcc/libgcov.h":472:44 55
{*movsi_m68k2}
     (expr_list:REG_EQUAL (symbol_ref:SI ("__gcov_kvp_dynamic_pool_index")
[flags 0x40]  <var_decl 0x7f9e83fe7cf0 __gcov_kvp_dynamic_pool_index>)
        (nil)))

Wrapping symbolic expressions into the unspec was added in the commit that
implemented TLS for m68k, but the 'CONST' case in the predicate code was not
updated to filter wrapped expressions out.

Reply via email to