Sebastian Pop <seb...@gmail.com> writes: > On Tue, Sep 14, 2010 at 10:19, Paulo J. Matos <pocma...@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