+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
/* 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]);
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 *);
/* 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;
{
/* 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;
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);
}
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))
{
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
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;