dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an optimization when flag_exceptions not enabled.

* dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an
        optimization when flag_exceptions not enabled.

From-SVN: r65168
This commit is contained in:
Richard Henderson 2003-04-02 09:21:28 -08:00 committed by Richard Henderson
parent 1541cffad9
commit 5d22a325f2
2 changed files with 15 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2003-04-02 Richard Henderson <rth@redhat.com>
* dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an
optimization when flag_exceptions not enabled.
2003-03-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
PR other/6955

View File

@ -1789,24 +1789,26 @@ output_call_frame_info (for_eh)
dw_fde_ref fde;
dw_cfi_ref cfi;
char l1[20], l2[20], section_start_label[20];
int any_lsda_needed = 0;
bool any_lsda_needed = false;
char augmentation[6];
int augmentation_size;
int fde_encoding = DW_EH_PE_absptr;
int per_encoding = DW_EH_PE_absptr;
int lsda_encoding = DW_EH_PE_absptr;
/* If we don't have any functions we'll want to unwind out of, don't emit any
EH unwind information. */
/* If we don't have any functions we'll want to unwind out of, don't
emit any EH unwind information. Note that if exceptions aren't
enabled, we won't have collected nothrow information, and if we
asked for asynchronous tables, we always want this info. */
if (for_eh)
{
int any_eh_needed = flag_asynchronous_unwind_tables;
bool any_eh_needed = !flag_exceptions || flag_asynchronous_unwind_tables;
for (i = 0; i < fde_table_in_use; i++)
if (fde_table[i].uses_eh_lsda)
any_eh_needed = any_lsda_needed = 1;
any_eh_needed = any_lsda_needed = true;
else if (! fde_table[i].nothrow)
any_eh_needed = 1;
any_eh_needed = true;
if (! any_eh_needed)
return;
@ -1944,8 +1946,8 @@ output_call_frame_info (for_eh)
fde = &fde_table[i];
/* Don't emit EH unwind info for leaf functions that don't need it. */
if (!flag_asynchronous_unwind_tables && for_eh && fde->nothrow
&& ! fde->uses_eh_lsda)
if (for_eh && !flag_asynchronous_unwind_tables
&& flag_exceptions && fde->nothrow && !fde->uses_eh_lsda)
continue;
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, FDE_LABEL, for_eh + i * 2);