http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59041
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- This one is not unnecessary, it is emitted on purpose from generic mode-switching code: -- gcc/mode-switching.c -- /* Pretend the mode is clobbered across abnormal edges. */ { edge_iterator ei; edge e; FOR_EACH_EDGE (e, ei, bb->preds) if (e->flags & EDGE_COMPLEX) break; if (e) { ptr = new_seginfo (no_mode, BB_HEAD (bb), bb->index, live_now); add_seginfo (info + bb->index, ptr); bitmap_clear_bit (transp[bb->index], j); } } It is true that 4.7 didn't emit vzeroupper here, but I think that generic code is correct, and this is actually an improvement.