This is the mail archive of the gcc-patches@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: [tree-ssa] CFG EH improvements/cleanups #1


In message <wvl7k7o802t.fsf@prospero.boston.redhat.com>, Jason Merrill writes:
 >On Sat, 14 Jun 2003 14:53:32 -0600, law@redhat.com wrote:
 >
 >>       case TRY_FINALLY_EXPR:
 >> +       /* Record this TRY_FINALLY_EXPR as needing further processing.  */
 >>         VARRAY_PUSH_TREE (try_finallys, last);
 >>   
 >> !       /* We used to try and optimize cases where the TRY block has no
 >> ! 	 executable code.  However that is unsafe in our container
 >> ! 	 based intermediate representation.  Consider what happens
 >> ! 	 if the out-of-ssa pass wants to insert an instruction on the
 >> ! 	 edge from the TRY_FINALLY_EXPR to the FINALLY block and there
 >> ! 	 are multiple predecessors for the FINALLY block.  There is
 >> ! 	 no safe place to do the insertion without special casing to
 >> ! 	 know the insertion can occur before the TRY_FINALLY_EXPR.  */
 >
 >If the try block has no executable code, there cannot be multiple
 >predecessors for the finally block.
Can't a finally block have a loop?  

Can't a finally block start with a label that is reachable from multiple
locations, possibly outside the finally block?

Jeff



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