This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
new ira optimization - adding a loop to ira
- From: <stefan at franke dot ms>
- To: <gcc-help at gcc dot gnu dot org>
- Date: Fri, 13 Sep 2019 10:48:07 +0200
- Subject: new ira optimization - adding a loop to ira
I'm working on a new optimization to get rid of spilled tmp variables (e.g.
introduced by pre) to use the source mem ref instead of a stack slot.
To do this, I added a loop into ira.c:ira()
init_prune_stack_vars ();
do
{
#ifndef IRA_NO_OBSTACK
gcc_obstack_init (&ira_obstack);
#endif
bitmap_obstack_initialize (&ira_bitmap_obstack);
...
ira_color ();
}
while (flag_prune_stack_vars && prune_stack_vars ());
To get it work, the prune_stack_vars function resets a couple of data.
This is mostly working - but on some source files, it fails due to invalid
reg_equivs.
Since this also happens, if the optimizer does nothing and just loops once.
Currently I'm calling this, before looping again
regstat_free_n_sets_and_refs ();
regstat_free_ri ();
loop_optimizer_finalize ();
free_dominance_info (CDI_DOMINATORS);
Any hint, what I'm missing to reset?