Commit ad5eeaa9 by Richard Henderson Committed by Richard Henderson

dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an optimization…

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: r65169
parent be12c2b0
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-04-02 Vladimir Makarov <vmakarov@redhat.com> 2003-04-02 Vladimir Makarov <vmakarov@redhat.com>
* config/rs6000/rs6000.c * config/rs6000/rs6000.c
......
...@@ -1918,7 +1918,7 @@ output_call_frame_info (for_eh) ...@@ -1918,7 +1918,7 @@ output_call_frame_info (for_eh)
dw_fde_ref fde; dw_fde_ref fde;
dw_cfi_ref cfi; dw_cfi_ref cfi;
char l1[20], l2[20], section_start_label[20]; char l1[20], l2[20], section_start_label[20];
int any_lsda_needed = 0; bool any_lsda_needed = false;
char augmentation[6]; char augmentation[6];
int augmentation_size; int augmentation_size;
int fde_encoding = DW_EH_PE_absptr; int fde_encoding = DW_EH_PE_absptr;
...@@ -1929,17 +1929,19 @@ output_call_frame_info (for_eh) ...@@ -1929,17 +1929,19 @@ output_call_frame_info (for_eh)
if (fde_table_in_use == 0) if (fde_table_in_use == 0)
return; return;
/* If we don't have any functions we'll want to unwind out of, don't emit any /* If we don't have any functions we'll want to unwind out of, don't
EH unwind information. */ 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) 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++) for (i = 0; i < fde_table_in_use; i++)
if (fde_table[i].uses_eh_lsda) 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) else if (! fde_table[i].nothrow)
any_eh_needed = 1; any_eh_needed = true;
if (! any_eh_needed) if (! any_eh_needed)
return; return;
...@@ -2077,7 +2079,7 @@ output_call_frame_info (for_eh) ...@@ -2077,7 +2079,7 @@ output_call_frame_info (for_eh)
fde = &fde_table[i]; fde = &fde_table[i];
/* Don't emit EH unwind info for leaf functions that don't need it. */ /* Don't emit EH unwind info for leaf functions that don't need it. */
if (!flag_asynchronous_unwind_tables && for_eh if (for_eh && !flag_asynchronous_unwind_tables && flag_exceptions
&& (fde->nothrow || fde->all_throwers_are_sibcalls) && (fde->nothrow || fde->all_throwers_are_sibcalls)
&& !fde->uses_eh_lsda) && !fde->uses_eh_lsda)
continue; continue;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment