This is the mail archive of the 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: [tree-ssa Too many edges in CFG

In message <>, Jason Merrill writes:
 >On Thu, 08 May 2003 09:18:20 -0600, wrote:
 >> In message <>, Diego Novil
 >lo w
 >> rites:
 >>  >On Wed, May 07, 2003 at 02:25:20PM -0700, Richard Henderson wrote:
 >>  >> On Tue, May 06, 2003 at 08:50:06PM -0600, wrote:
 >>  >> > +       /* Some calls are known not to return.  For such calls we nee
 >d to
 >>  >> > + 	 add an edge to the exit block.  No fall thru edge is needed
 >>  >> > + 	 as these calls can not return in the normal sense.  */
 >>  >> 
 >>  >> Why do you need an edge to the exit block?
 >>  >> 
 >>  >I don't think we use that for anything right now.  In the future,
 >>  >the predecessor blocks of EXIT_BLOCK_PTR will be the blocks where
 >>  >we want to put copy-out operations for globals and statics.
 >> But for a non-returning function the edge to the exit block can never
 >> execute.
 >But a call to a non-returning function does in fact exit the function, just
 >not by returning to the caller. 
Right.  And since the non-returning function exits by not returning to the
caller means that we do not traverse the edge from the nonreturning
function to the exit block.  Thus any insns on that edge are totally
useless and can be ignored.

 > IIUC, the optimizers assume that any
 >non-dead code will be on some path between the entry and exit blocks.  And,
 >as Diego says, if we've deferred copy-out operations we need to insert them
 >here, as a non-returning function can still refer to globals, and might do
 >a longjmp or throw to get back to our caller.
Certainly we have to insert the proper copies *before* the call, but for
a nonreturning call, no copies after the call are necessary.


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