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.