From: Richard Henderson Date: Wed, 2 Apr 2003 17:21:28 +0000 (-0800) Subject: dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an optimization when... X-Git-Tag: releases/gcc-3.2.3~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d22a325f21710ca7828ff68d0b39d14c174d047;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6c9b166e9a14..d0a6e3adce54 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-04-02 Richard Henderson + + * dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an + optimization when flag_exceptions not enabled. + 2003-03-30 Kaveh R. Ghazi PR other/6955 diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index a597b6c86927..8a3f613ee803 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -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);