https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112902
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- b.0_1 = b; _2 = -b.0_1; _3 = (unsigned _BitInt(512)) _2; a.1_4 = a; a.2_5 = (unsigned _BitInt(512)) a.1_4; _6 = _3 * a.2_5; _7 = (_BitInt(512)) _6; _11 = .MUL_OVERFLOW (_7, 40); _8 = IMAGPART_EXPR <_11>; _9 = (_BitInt(2048)) _8; b = _9; and only _6 and _7 are marked as SSA_NAMEs which need underlying memory. That is incorrect, while handle_operand_addr handles casts and loads, so the fact that a.2_5 and a.1_4 aren't in m_names is ok, in the _3 case it is either _3 or _2 needs to be in m_names, if the former, then the load and negation and cast will be done in one loop and multiplication in another one, if the latter, load and negation will be done in one loop and cast with multiplication in another one.