From 2a28a7523fb1c401ecd9a3a0548e3eb807ff9c2e Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 13 Nov 2017 17:29:37 +0000 Subject: [PATCH] re PR lto/81351 (Many LTO testcases FAIL) PR lto/81351 * dwarf2out.c (do_eh_frame): New static variable. (dwarf2out_begin_prologue): Set it. (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame. From-SVN: r254700 --- gcc/ChangeLog | 7 +++++++ gcc/dwarf2out.c | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf9a01f..543a8e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-11-13 Eric Botcazou + + PR lto/81351 + * dwarf2out.c (do_eh_frame): New static variable. + (dwarf2out_begin_prologue): Set it. + (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame. + 2017-11-13 Jan Hubicka * tree-ssa-coalesce.c (coalesce_cost): Fix formating. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index df85467..1c08a2b 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -284,6 +284,9 @@ static void dwarf2out_note_section_used (void); personality CFI. */ static GTY(()) rtx current_unit_personality; +/* Whether an eh_frame section is required. */ +static GTY(()) bool do_eh_frame = false; + /* .debug_rnglists next index. */ static unsigned int rnglist_idx; @@ -1063,6 +1066,10 @@ dwarf2out_begin_prologue (unsigned int line ATTRIBUTE_UNUSED, if (!do_frame) return; + /* Unlike the debug version, the EH version of frame unwind info is a per- + function setting so we need to record whether we need it for the unit. */ + do_eh_frame |= dwarf2out_do_eh_frame (); + /* Cater to the various TARGET_ASM_OUTPUT_MI_THUNK implementations that emit insns as rtx but bypass the bulk of rest_of_compilation, which would include pass_dwarf2_frame. If we've not created the FDE yet, @@ -1179,7 +1186,7 @@ dwarf2out_frame_finish (void) output_call_frame_info (0); /* Output another copy for the unwinder. */ - if (dwarf2out_do_eh_frame ()) + if (do_eh_frame) output_call_frame_info (1); } -- 2.7.4