This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Updating frequencies and dominators
Sebastian Pop <sebpop@gmail.com> writes:
> On Tue, Sep 14, 2010 at 10:19, Paulo J. Matos <pocmatos@gmail.com> wrote:
>> How can I automatically update dominators? Or do I have to do it for
>> each new basic_block I create with recompute_dominator?
>
> /* Free and compute again all the dominators information. */
>
> static inline void
> recompute_all_dominators (void)
> {
> mark_irreducible_loops ();
> free_dominance_info (CDI_DOMINATORS);
> free_dominance_info (CDI_POST_DOMINATORS);
> calculate_dominance_info (CDI_DOMINATORS);
> calculate_dominance_info (CDI_POST_DOMINATORS);
> }
>
Thanks for the help.
mark_irreducible_loops is actually failing with a segmentation fault:
,----
| Program received signal SIGSEGV, Segmentation fault.
| 0x0817a87d in mark_irreducible_loops () at
| ../../../../../devHost/gcc43/gcc/gcc/cfgloopanal.c:121
| 121 if (e->dest->loop_father->header == e->dest
| (gdb) list
| 116
| 117 src = BB_REPR (act);
| 118 dest = BB_REPR (e->dest);
| 119
| 120 /* Ignore latch edges. */
| 121 if (e->dest->loop_father->header == e->dest
| 122 && e->dest->loop_father->latch == act)
| 123 continue;
| 124
| 125 /* Edges inside a single loop should be left where they are. Edges
`----
My guess is that I might have forgotten to update something. Do I need
to worry about loops at all when I create edges?
Cheers,
--
PMatos