]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/45484 (Invalid memory access in gcc.c-torture/execute/builtins/sprin...
authorJakub Jelinek <jakub@redhat.com>
Fri, 3 Sep 2010 14:46:39 +0000 (16:46 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 3 Sep 2010 14:46:39 +0000 (16:46 +0200)
PR middle-end/45484
* dwarf2out.c (flush_queued_reg_saves): Rename to...
(dwarf2out_flush_queued_reg_saves): ... this.  No longer static.
(dwarf2out_frame_debug_expr, dwarf2out_frame_debug): Adjust callers.
* dwarf2out.h (dwarf2out_flush_queued_reg_saves): New prototype.
* config/i386/i386.c (output_set_got): Call it.

From-SVN: r163823

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/dwarf2out.c
gcc/dwarf2out.h

index fafdbabb398e40c8c7b9165c7471a32bcc9c4953..b527fe0247de9a15de12ae7ed1b51d1d24344b62 100644 (file)
@@ -1,3 +1,12 @@
+2010-09-03  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/45484
+       * dwarf2out.c (flush_queued_reg_saves): Rename to...
+       (dwarf2out_flush_queued_reg_saves): ... this.  No longer static.
+       (dwarf2out_frame_debug_expr, dwarf2out_frame_debug): Adjust callers.
+       * dwarf2out.h (dwarf2out_flush_queued_reg_saves): New prototype.
+       * config/i386/i386.c (output_set_got): Call it.
+
 2010-09-03  Michael Matz  <matz@suse.de>
 
        PR middle-end/45415
index 0ff29934933d0b1eea9136b2130235e17c5e04f9..3a8484aeca46b542cf72f4d942b2b03882bcad6e 100644 (file)
@@ -8119,13 +8119,7 @@ output_set_got (rtx dest, rtx label ATTRIBUTE_UNUSED)
       /* Ensure all queued register saves are flushed before the
         call.  */
       if (dwarf2out_do_frame ())
-       {
-         rtx insn;
-         start_sequence ();
-         insn = emit_barrier ();
-         end_sequence ();
-         dwarf2out_frame_debug (insn, false);
-       }
+       dwarf2out_flush_queued_reg_saves ();
 #endif
       xops[2] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
       xops[2] = gen_rtx_MEM (QImode, xops[2]);
index 7c4c523572622591bafc81f884bb335c6d9b31c9..31d44130b307405e7d132282ee91e1ebbebe882d 100644 (file)
@@ -471,7 +471,6 @@ static void output_cfi (dw_cfi_ref, dw_fde_ref, int);
 static void output_cfi_directive (dw_cfi_ref);
 static void output_call_frame_info (int);
 static void dwarf2out_note_section_used (void);
-static void flush_queued_reg_saves (void);
 static bool clobbers_queued_reg_save (const_rtx);
 static void dwarf2out_frame_debug_expr (rtx, const char *);
 
@@ -1712,8 +1711,8 @@ queue_reg_save (const char *label, rtx reg, rtx sreg, HOST_WIDE_INT offset)
 
 /* Output all the entries in QUEUED_REG_SAVES.  */
 
-static void
-flush_queued_reg_saves (void)
+void
+dwarf2out_flush_queued_reg_saves (void)
 {
   struct queued_reg_save *q;
 
@@ -2458,7 +2457,7 @@ dwarf2out_frame_debug_expr (rtx expr, const char *label)
             {
              /* We interpret reg_save differently with stack_realign set.
                 Thus we must flush whatever we have queued first.  */
-             flush_queued_reg_saves ();
+             dwarf2out_flush_queued_reg_saves ();
 
               gcc_assert (cfa_store.reg == REGNO (XEXP (src, 0)));
               fde->stack_realign = 1;
@@ -2705,7 +2704,7 @@ dwarf2out_frame_debug (rtx insn, bool after_p)
       size_t i;
 
       /* Flush any queued register saves.  */
-      flush_queued_reg_saves ();
+      dwarf2out_flush_queued_reg_saves ();
 
       /* Set up state for generating call frame debug info.  */
       lookup_cfa (&cfa);
@@ -2733,7 +2732,7 @@ dwarf2out_frame_debug (rtx insn, bool after_p)
     }
 
   if (!NONJUMP_INSN_P (insn) || clobbers_queued_reg_save (insn))
-    flush_queued_reg_saves ();
+    dwarf2out_flush_queued_reg_saves ();
 
   if (!RTX_FRAME_RELATED_P (insn))
     {
@@ -2841,7 +2840,7 @@ dwarf2out_frame_debug (rtx insn, bool after_p)
      We could probably check just once, here, but this is safer than
      removing the check above.  */
   if (clobbers_queued_reg_save (insn))
-    flush_queued_reg_saves ();
+    dwarf2out_flush_queued_reg_saves ();
 }
 
 /* Determine if we need to save and restore CFI information around this
index d70b26f6ffd91c00f1c584afa3c083c8559e8072..d5b958dd66ca17db52322a0a24b53fb224be4d56 100644 (file)
@@ -22,6 +22,7 @@ extern void dwarf2out_decl (tree);
 extern void dwarf2out_frame_debug (rtx, bool);
 extern void dwarf2out_cfi_begin_epilogue (rtx);
 extern void dwarf2out_frame_debug_restore_state (void);
+extern void dwarf2out_flush_queued_reg_saves (void);
 
 extern void debug_dwarf (void);
 struct die_struct;