This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]