Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-07 Thread Eric Botcazou
> * basic-block.h (force_nonfallthru): Move to... > * cfghooks.h (struct cfg_hooks): Add force_nonfallthru hook. > (force_nonfallthru): ...here. > * cfghooks.c (force_nonfallthru): New function. > * cfgrtl.c (force_nonfallthru): Rename into... > (rtl_force_nonfal

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Jeff Law
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 04/06/11 12:39, Steven Bosscher wrote: > On Wed, Apr 6, 2011 at 8:37 PM, Steven Bosscher wrote: >> On Wed, Apr 6, 2011 at 8:15 PM, Jeff Law wrote: >> AFAIU the patch doesn't change behavior for the GIMPLE CFG. It only affects RTL. >>> B

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Jeff Law
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 04/06/11 12:37, Steven Bosscher wrote: > On Wed, Apr 6, 2011 at 8:15 PM, Jeff Law wrote: > >>> AFAIU the patch doesn't change behavior for the GIMPLE CFG. It only affects >>> RTL. >> But the elimination of the PHI results in creating RTL that is

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Eric Botcazou
> What about when we have a PHI, which we eliminate by inserting insns on > edges and those insns actually form a loop? You can see an example of > this in PR48389. Interesting case, thanks. I think it's simply a matter of defining the API: does commit_edge_insertions need to fix up the CFG or

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Steven Bosscher
On Wed, Apr 6, 2011 at 8:37 PM, Steven Bosscher wrote: > On Wed, Apr 6, 2011 at 8:15 PM, Jeff Law wrote: > >>> AFAIU the patch doesn't change behavior for the GIMPLE CFG. It only affects >>> RTL. >> But the elimination of the PHI results in creating RTL that is inserted >> on a CFG edge. > > Yes

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Steven Bosscher
On Wed, Apr 6, 2011 at 8:15 PM, Jeff Law wrote: >> AFAIU the patch doesn't change behavior for the GIMPLE CFG. It only affects >> RTL. > But the elimination of the PHI results in creating RTL that is inserted > on a CFG edge. Yes, but gimple_expand_cfg() calls find_many_sub_basic_blocks(), and

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Jeff Law
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 04/06/11 12:01, Steven Bosscher wrote: > On Wed, Apr 6, 2011 at 6:52 PM, Jeff Law wrote: >> What about when we have a PHI, which we eliminate by inserting insns on >> edges and those insns actually form a loop? You can see an example of >> this in

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Steven Bosscher
On Wed, Apr 6, 2011 at 6:52 PM, Jeff Law wrote: > What about when we have a PHI, which we eliminate by inserting insns on > edges and those insns actually form a loop?  You can see an example of > this in PR48389. AFAIU the patch doesn't change behavior for the GIMPLE CFG. It only affects RTL. C

Re: [RFC] Remove kludge in commit_edge_insertions

2011-04-06 Thread Jeff Law
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 04/04/11 15:07, Eric Botcazou wrote: > commit_edge_insertions contains this kludge: > > /* In the old rtl CFG API, it was OK to insert control flow on an > edge, apparently? In cfglayout mode, this will *not* work, and > the caller is