> Without this patch, ifcvt extends lifetime of %eax hard register, > which causes reload/LRA ICE later on. Combiner and other passes try hard > not to do that, even ifcvt has code for it if x is a hard register a few > lines below it, but in this case the hard register is SET_SRC (set_b). > > With this patch we just use the pseudo (x) which has been initialized > from the hard register before the conditional. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > 2013-03-05 Jakub Jelinek <ja...@redhat.com> > > PR rtl-optimization/56484 > * ifcvt.c (noce_process_if_block): Before reload if else_bb > is NULL, avoid extending lifetimes of hard registers in > likely to spilled or small register classes.
ifcvt.c tests only small_register_classes_for_mode_p in the other places, so do you really need class_likely_spilled_p here? -- Eric Botcazou