http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55845
--- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2013-01-02 10:15:16 UTC --- It looks to me that scheduler is doing something with unspec_volatile instructions, since vzeroupper insertion will be cancelled if there are live call-saved SSE registers at the insertion point. Please see ix86_avx_emit_vzeroupper function in i386.c