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

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
cancel_fma_deferring does:
      gimple_stmt_iterator gsi = gsi_for_stmt (fti.mul_stmt);
      gsi_remove (&gsi, true);
      release_defs (fti.mul_stmt);


vs what is done for pow in math_opts_dom_walker::after_dom_children:

            CASE_CFN_POW:
              if (gimple_call_lhs (stmt)
                  && TREE_CODE (gimple_call_arg (stmt, 1)) == REAL_CST
                  && real_equal (&TREE_REAL_CST (gimple_call_arg (stmt, 1)),
                                 &dconst2)
                  && convert_mult_to_fma (stmt,
                                          gimple_call_arg (stmt, 0),
                                          gimple_call_arg (stmt, 0),
                                          &fma_state))
                {
                  unlink_stmt_vdef (stmt);
                  if (gsi_remove (&gsi, true)
                      && gimple_purge_dead_eh_edges (bb))
                    *m_cfg_changed_p = true;
                  release_defs (stmt);
                  continue;
                }

Reply via email to