This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] CFG EH improvements/cleanups #1
- From: law at redhat dot com
- To: Jason Merrill <jason at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sat, 14 Jun 2003 23:38:43 -0600
- Subject: Re: [tree-ssa] CFG EH improvements/cleanups #1
- Reply-to: law at redhat dot com
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