what can be in a group set?
Paolo Bonzini
bonzini@gnu.org
Fri Jul 8 13:23:00 GMT 2011
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
More information about the Gcc-patches
mailing list