On Wed, Nov 7, 2012 at 9:04 AM, Jakub Jelinek wrote: > Or I wonder why is call handled specially at all, doesn't > /* Check if a 256bit AVX register is referenced in stores. */ > state = unused; > note_stores (pat, check_avx256_stores, &state); > if (state == used) > return AVX_U128_DIRTY; > handle it? Then it would just need to be if (CALL_P (insn)) return AVX_U128_CLEAN. > BTW, the formatting is wrong in some spots, e.g. > check_avx256_stores (rtx dest, const_rtx set, void *data) > { > if (((REG_P (dest) || MEM_P(dest)) > > I'd prefer to leave this to the original submitter. I have committed following patch that address all the above issues. 2012-11-07 Uros Bizjak * config/i386/i386.c (enum upper_128bits_state): Remove. (check_avx256_store): Use bool pointer argument. (ix86_avx_u128_mode_needed): Use note_stores also for CALL insns. * config/i386/predicates.md (vzeroupper_operation): Use match_test. Bootstrapped and regression tested on x86_64-pc-linux-gnu, committed. Uros.