On Mon, Nov 14, 2016 at 11:09:19AM +0100, Richard Biener wrote: > On Sat, Nov 12, 2016 at 9:31 AM, Segher Boessenkool > <seg...@kernel.crashing.org> wrote: > > So far all target implementations of the separate shrink-wrapping hooks > > use the DF LIVE info to figure out around which basic blocks the non- > > volatile registers need to be saved. This is done by looking at the > > IN+GEN+KILL sets of the basic blocks. However, that doesn't work for > > registers that DF says are defined in the entry block, or used in the > > exit block. > > > > This patch introduces a shrink_wrap_separate_in_progress variable, and > > makes df_get_entry_block_def_set and df_get_exit_block_use_set set the > > respective sets to empty if that variable is set to true. It also > > changes the rs6000 port to use IN+GEN+KILL for the LR component.
> Globals like this are somewhat gross. This code already uses epilogue_completed and reload_completed for similar purposes ;-) > There are df_changeable_flags > where we seem to have a "related" flag DF_RD_PRUNE_DEAD_DEFS > so you could add a flag for this. There's also local_flags (only used > by df_chain_add_problem). That does sound a bit nicer, I'll try that. Thanks for the hint, Segher