On Tue, 4 Jul 2017, Tom de Vries wrote: > [was: Re: [PATCH] Add dotfn ] > > On 07/03/2017 12:23 PM, Richard Biener wrote: > > > Btw, I think this needs fixing: > > > ... > > > /* Draw all edges in the CFG. Retreating edges are drawin as not > > > constraining, this makes the layout of the graph better. > > > (??? Calling mark_dfs_back may change the compiler's behavior when > > > dumping, but computing back edges here for ourselves is also not > > > desirable.) */ > > > > > > static void > > > draw_cfg_edges (pretty_printer *pp, struct function *fun) > > > { > > > basic_block bb; > > > mark_dfs_back_edges (); > > > FOR_ALL_BB_FN (bb, cfun) > > > draw_cfg_node_succ_edges (pp, fun->funcdef_no, bb); > > > ... > > > > > > We don't want that calling a debug function changes compiler behavior > > > (something I ran into while debugging PR81192). > > > > > > Any suggestion on how to address this? We could allocate a bitmap before > > > and > > > save the edge flag for all edges, and restore afterwards. > > > Something like that, yes. > > > > This patch implements that approach. > > I've tried it with the PR81192 example and calling DOTFN in tail-merge, like > this: > 1. Just compiling the example without any patches gives a tail-merge > sigsegv. > 2. Compiling with the DOTFN call in tail-merge makes the sigsegv go > away. > 3. Adding this patch makes the sigsegv come back. > > OK for trunk if bootstrap and reg-test on x86_64 succeeds?
You don't need to iterate over both preds and succs, succs is enough. Ok with that change. Richard. > Thanks, > - Tom > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)