https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25290
--- Comment #22 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Without load/store handling, here are the following optimizations that either can move to match.pd already or need some extra work to do it: * value_replacement: need to handle !single_non_singleton_phi_for_edges case and more than one feeder statement (2 max according to the current definition) * cond_removal_in_popcount_clz_ctz_pattern: need 2 feeder statements and builtin call handling for feeder statements * two_value_replacement: recored as PR 100958, it can move already * abs_replacement: needs PROP_gimple_lswitch so we don't change if statements early enough ** I think majority of the abs handling is already in match.pd. * minmax_replacement: has some handling of comparisions which might not be in the match.pd patterns already. needs PROP_gimple_lswitch also. ** The handling of: if (a <= u) b = MAX (a, d); x = PHI <b, u> needs to moved too. For the ones which cannot move * factor_out_conditional_conversion: will never move, though it needs improvement and moved already (PR 56223 and PR 13563) * spaceship_replacement: cannot move to match.pd depends on use afterwards which is not hard to deal with in a match pattern.