https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98470
--- Comment #4 from jcmvbkbc at gcc dot gnu.org ---
I've noticed that this forward-propagation of the literal load followed by not
calling the secondary reload function happens when the first literal load
instruction has the following in its expression list:
(expr_list:REG_EQUIV (mem/u/c:SF (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [0 S4
A32])
and it doesn't happen for instructions that have the following:
(expr_list:REG_EQUIV (const_double:SF 0.0 [0x0.0p+0])
This expression is present in this instruction up to the ce2 pass where it's
lost. Compiling with -fno-if-conversion preserves the expression and results in
the correct output.