On 07/08/2011 03:05 PM, Dimitrios Apostolou wrote: > > Paolo, something else, in df_mark_reg() is it ever possible for regno to > be >= FIRST_PSEUDO_REGISTER? An assert I've put doesn't trigger for my > simple test :-)
>From reading the docs of EH_RETURN_STACKADJ_RTX and EH_RETURN_HANDLER_RTX, it seems you're safe. This in df-problems.c also suggests the same: if (bb_index == EXIT_BLOCK) { unsigned regno; bitmap_iterator bi; EXECUTE_IF_SET_IN_BITMAP (df->exit_block_uses, FIRST_PSEUDO_REGISTER, regno, bi) gcc_unreachable (); } A more solid reasoning is that a pseudo cannot be considered live at exit or at entry to a function, because the caller would not know where it lives. That said, changing exit_block_uses and entry_block_defs to HARD_REG_SET would be a nice cleanup, but it would also touch target code due to targetm.extra_live_on_entry (entry_block_defs); I wouldn't bother for now until you're a bit more experienced. Unlike invalidated_by_call it shouldn't show up in profiles, or does it? Paolo