This is the mail archive of the
mailing list for the GCC project.
Re: Patch to fix incorrect hard register life information
- To: Bernd Schmidt <crux at pool dot informatik dot rwth-aachen dot de>
- Subject: Re: Patch to fix incorrect hard register life information
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Wed, 09 Sep 1998 22:48:44 -0600
- cc: Jason Merrill <jason at cygnus dot com>, egcs-patches at cygnus dot com
- Reply-To: law at cygnus dot com
In message <Pine.GSO.4.02A.email@example.com>you write:
> The second patch tries to solve the problem more properly, by building a
> correct flow graph for __throw. However, this patch isn't entirely correct
> either. It hard codes information about libgcc2.c into flow.c, and can be
> crashed by feeding it a program that uses __builtin_eh_stub in different
> * except.h (current_function_eh_stub_label): Declare.
> (current_function_eh_old_stub_label): Declare.
> * function.h (struct function): New members eh_stub_label and
> * except.c (current_function_eh_stub_label): New variable.
> (current_function_eh_old_stub_label): New variable.
> (init_eh_for_function): Clear them.
> (save_eh_status): Save them.
> (restore_eh_status): Restore them.
> (expand_builtin_eh_stub): Set current_function_eh_stub_label.
> (expand_builtin_eh_stub_old): Set current_function_eh_old_stub_label.
> * flow.c (find_basic_blocks_1): When handling a REG_LABEL note, don't
> make an edge from the block that contains it to the block starting
> with the label if this label is one of the eh stub labels.
> If eh stub labels exist, show they are reachable from the last block
> in the function.
Thanks. I installed this patch.
Richard -- this may create some minor conflicts with your EH changes,
but I believe the patch is still needed since we still need the eh
stubs for targets which do not provide special epilogue support.