https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89436
--- Comment #2 from Alexander Monakov <amonakov at gcc dot gnu.org> --- This was previously reported as PR 86096. Let me copy-paste my response from there: df_mw_compare has: if (mw1->mw_reg != mw2->mw_reg) return mw1->mw_order - mw2->mw_order; Note mw_reg in the 'if' vs mw_order in the 'return'. This is invalid. It's simpler and more efficient to just use mw_order as the last tie-breaker regardless of mw_reg value.