new ira optimization - adding a loop to ira

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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?





[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux