https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67203
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Bah, so this boils down to PUSH_ARGS_REVERSED and its affect on gimplification and thus initial GIMPLE. In this case PUSH_ARGS_REVERSED == 1 "wins". (for the operator- calls code for b * c and c * d is emitted first) So we could add an effective target push_args_reversed ... iff that's easy enough to fill-in. Or explicitely add target matches. Or spend more time on trying to analyze why order matters for SCCVN here (it's all about ->count CSE).