re PR lto/81351 (Many LTO testcases FAIL)
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 13 Nov 2017 17:29:37 +0000 (17:29 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 13 Nov 2017 17:29:37 +0000 (17:29 +0000)
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
gcc/dwarf2out.c

index bf9a01ff017cf385bb2beb8310e2eeefc2cc71ca..543a8e1a739cb71e84244b1c8e1dcdbb23fe2676 100644 (file)
@@ -1,3 +1,10 @@
+2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       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  <hubicka@ucw.cz>
 
        * tree-ssa-coalesce.c (coalesce_cost): Fix formating.
index df854672724f223ea42b6b06a953852077c295cc..1c08a2b4e18c7593f48fc2d4683be515357cc5d1 100644 (file)
@@ -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);
 }