https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112572
--- Comment #17 from Andrew Pinski <pinskia at gcc dot gnu.org> --- It looks like another pass after vzeroupper depends on REG_DEAD/REG_UNUSED to be correct but a different pass before that pass messes it up ... I am still trying to figure out which pass is making the bad change. Note vzeroupper does seems to be the same/correct but the updated REG_DEAD/REG_UNUSED notes mess up the passes afterwards ...