rtl.h (debug_bb_n_slim, [...]): Remove prototypes.

* rtl.h (debug_bb_n_slim, debug_bb_slim, debug_insn_slim): Remove
	prototypes.
	(debug_rtl_slim): Rename to dump_rtl_slim.
	(print_value_slim): Rename to dump_value_slim.
	* ira.c (ira_update_equiv_info_by_shuffle_insn): Update
	print_value_slim user.
	* lra.c (lra_process_new_insns): Use dump_insn_slim to dump single
	insns.  Use dump_rtl_slim for insn chains.
	* lra-constraints.c (get_reload_reg): Update print_value_slim user.
	(process_addr_reg): Likewise.
	(equiv_address_substitution): Likewise.
	(inherit_reload_reg): Likewise.  Use dump_insn_slim to dump single
	insns.
	(check_and_process_move): Likewise.
	(lra_constraints): Likewise.
	(split_reg): Likewise.
	(update_ebb_live_info): Likewise.
	(remove_inheritance_pseudos): Likewise.
	* sched-vis.c: Don't include sched-int.h.
	Remove #ifdef INSN_SCHEDULING tests.
	(print_value_slim): Rename to dump_value_slim.  Simplify a few
	cases using GET_RTX_NAME.
	(print_pattern): Do not handle UNSPEC and UNSPECV here, explain why.
	(print_insn): Reorganize code to be independent of INSN_SCHEDULING.
	Always print CALL_INSN patterns.  Harmonize INSN_UID dumping template.
	Handle NOTE_INSN_CALL_ARG_LOCATION.
	(dump_rtl_slim): Copied from debug_rtl_slim.
	(debug_rtl_slim): Wrapper around dump_rtl_slim to stderr.
	* haifa-sched.c (schedule_insn): Update print_insn user.

From-SVN: r193873
This commit is contained in:
Steven Bosscher 2012-11-27 22:26:15 +00:00
parent 916bad5528
commit cfbeaedfdd
7 changed files with 136 additions and 150 deletions

View file

@ -1,3 +1,35 @@
2012-11-27 Steven Bosscher <steven@gcc.gnu.org>
* rtl.h (debug_bb_n_slim, debug_bb_slim, debug_insn_slim): Remove
prototypes.
(debug_rtl_slim): Rename to dump_rtl_slim.
(print_value_slim): Rename to dump_value_slim.
* ira.c (ira_update_equiv_info_by_shuffle_insn): Update
print_value_slim user.
* lra.c (lra_process_new_insns): Use dump_insn_slim to dump single
insns. Use dump_rtl_slim for insn chains.
* lra-constraints.c (get_reload_reg): Update print_value_slim user.
(process_addr_reg): Likewise.
(equiv_address_substitution): Likewise.
(inherit_reload_reg): Likewise. Use dump_insn_slim to dump single
insns.
(check_and_process_move): Likewise.
(lra_constraints): Likewise.
(split_reg): Likewise.
(update_ebb_live_info): Likewise.
(remove_inheritance_pseudos): Likewise.
* sched-vis.c: Don't include sched-int.h.
Remove #ifdef INSN_SCHEDULING tests.
(print_value_slim): Rename to dump_value_slim. Simplify a few
cases using GET_RTX_NAME.
(print_pattern): Do not handle UNSPEC and UNSPECV here, explain why.
(print_insn): Reorganize code to be independent of INSN_SCHEDULING.
Always print CALL_INSN patterns. Harmonize INSN_UID dumping template.
Handle NOTE_INSN_CALL_ARG_LOCATION.
(dump_rtl_slim): Copied from debug_rtl_slim.
(debug_rtl_slim): Wrapper around dump_rtl_slim to stderr.
* haifa-sched.c (schedule_insn): Update print_insn user.
2012-11-27 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/55458

View file

@ -3719,7 +3719,8 @@ schedule_insn (rtx insn)
print_insn (buf, insn, 0);
buf[40] = 0;
fprintf (sched_dump, ";;\t%3i--> %-40s:", clock_var, buf);
fprintf (sched_dump, ";;\t%3i--> %s%-40s:",
clock_var, (*current_sched_info->print_insn) (insn, 1), buf);
if (recog_memoized (insn) < 0)
fprintf (sched_dump, "nothing");

View file

@ -2246,7 +2246,7 @@ ira_update_equiv_info_by_shuffle_insn (int to_regno, int from_regno, rtx insns)
fprintf (ira_dump_file,
" Adding equiv note to insn %u for reg %d ",
INSN_UID (insn), to_regno);
print_value_slim (ira_dump_file, x, 1);
dump_value_slim (ira_dump_file, x, 1);
fprintf (ira_dump_file, "\n");
}
}

View file

@ -425,7 +425,7 @@ get_reload_reg (enum op_type type, enum machine_mode mode, rtx original,
if (lra_dump_file != NULL)
{
fprintf (lra_dump_file, " Reuse r%d for reload ", regno);
print_value_slim (lra_dump_file, original, 1);
dump_value_slim (lra_dump_file, original, 1);
}
if (new_class != lra_get_allocno_class (regno))
change_class (regno, new_class, ", change", false);
@ -994,7 +994,7 @@ check_and_process_move (bool *change_p, bool *sec_mem_p)
if (lra_dump_file != NULL)
{
fprintf (lra_dump_file, "Deleting move %u\n", INSN_UID (curr_insn));
debug_rtl_slim (lra_dump_file, curr_insn, curr_insn, -1, 0);
dump_insn_slim (lra_dump_file, curr_insn);
}
lra_set_insn_deleted (curr_insn);
return true;
@ -1088,7 +1088,7 @@ process_addr_reg (rtx *loc, rtx *before, rtx *after, enum reg_class cl)
fprintf (lra_dump_file,
"Changing pseudo %d in address of insn %u on equiv ",
REGNO (reg), INSN_UID (curr_insn));
print_value_slim (lra_dump_file, *loc, 1);
dump_value_slim (lra_dump_file, *loc, 1);
fprintf (lra_dump_file, "\n");
}
*loc = copy_rtx (*loc);
@ -2215,7 +2215,7 @@ equiv_address_substitution (struct address_info *ad)
{
fprintf (lra_dump_file, "Changing address in insn %d ",
INSN_UID (curr_insn));
print_value_slim (lra_dump_file, *ad->outer, 1);
dump_value_slim (lra_dump_file, *ad->outer, 1);
}
if (base_reg != new_base_reg)
{
@ -2272,7 +2272,7 @@ equiv_address_substitution (struct address_info *ad)
else
{
fprintf (lra_dump_file, " on equiv ");
print_value_slim (lra_dump_file, *ad->outer, 1);
dump_value_slim (lra_dump_file, *ad->outer, 1);
fprintf (lra_dump_file, "\n");
}
}
@ -2676,7 +2676,7 @@ curr_insn_transform (void)
fprintf (lra_dump_file,
"Changing pseudo %d in operand %i of insn %u on equiv ",
REGNO (old), i, INSN_UID (curr_insn));
print_value_slim (lra_dump_file, subst, 1);
dump_value_slim (lra_dump_file, subst, 1);
fprintf (lra_dump_file, "\n");
}
op_change_p = change_p = true;
@ -3467,8 +3467,7 @@ lra_constraints (bool first_p)
" Removing equiv init insn %i (freq=%d)\n",
INSN_UID (curr_insn),
BLOCK_FOR_INSN (curr_insn)->frequency);
debug_rtl_slim (lra_dump_file,
curr_insn, curr_insn, -1, 0);
dump_insn_slim (lra_dump_file, curr_insn);
}
if (contains_reg_p (x, true, false))
lra_risky_transformations_p = true;
@ -3807,7 +3806,7 @@ inherit_reload_reg (bool def_p, int original_regno,
" Rejecting inheritance %d->%d "
"as it results in 2 or more insns:\n",
original_regno, REGNO (new_reg));
debug_rtl_slim (lra_dump_file, new_insns, NULL_RTX, -1, 0);
dump_rtl_slim (lra_dump_file, new_insns, NULL_RTX, -1, 0);
fprintf (lra_dump_file,
" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
}
@ -3853,8 +3852,7 @@ inherit_reload_reg (bool def_p, int original_regno,
" Inheritance reuse change %d->%d (bb%d):\n",
original_regno, REGNO (new_reg),
BLOCK_FOR_INSN (usage_insn)->index);
debug_rtl_slim (lra_dump_file, usage_insn, usage_insn,
-1, 0);
dump_insn_slim (lra_dump_file, usage_insn);
}
}
if (lra_dump_file != NULL)
@ -4058,7 +4056,7 @@ split_reg (bool before_p, int original_regno, rtx insn, rtx next_usage_insns)
(lra_dump_file,
" Rejecting split %d->%d resulting in > 2 %s save insns:\n",
original_regno, REGNO (new_reg), call_save_p ? "call" : "");
debug_rtl_slim (lra_dump_file, save, NULL_RTX, -1, 0);
dump_rtl_slim (lra_dump_file, save, NULL_RTX, -1, 0);
fprintf (lra_dump_file,
" ))))))))))))))))))))))))))))))))))))))))))))))))\n");
}
@ -4074,7 +4072,7 @@ split_reg (bool before_p, int original_regno, rtx insn, rtx next_usage_insns)
" Rejecting split %d->%d "
"resulting in > 2 %s restore insns:\n",
original_regno, REGNO (new_reg), call_save_p ? "call" : "");
debug_rtl_slim (lra_dump_file, restore, NULL_RTX, -1, 0);
dump_rtl_slim (lra_dump_file, restore, NULL_RTX, -1, 0);
fprintf (lra_dump_file,
" ))))))))))))))))))))))))))))))))))))))))))))))))\n");
}
@ -4101,8 +4099,7 @@ split_reg (bool before_p, int original_regno, rtx insn, rtx next_usage_insns)
{
fprintf (lra_dump_file, " Split reuse change %d->%d:\n",
original_regno, REGNO (new_reg));
debug_rtl_slim (lra_dump_file, usage_insn, usage_insn,
-1, 0);
dump_insn_slim (lra_dump_file, usage_insn);
}
}
lra_assert (NOTE_P (usage_insn) || NONDEBUG_INSN_P (usage_insn));
@ -4245,7 +4242,7 @@ update_ebb_live_info (rtx head, rtx tail)
if (lra_dump_file != NULL)
{
fprintf (lra_dump_file, " Removing dead insn:\n ");
debug_rtl_slim (lra_dump_file, curr_insn, curr_insn, -1, 0);
dump_insn_slim (lra_dump_file, curr_insn);
}
lra_set_insn_deleted (curr_insn);
}
@ -4861,8 +4858,7 @@ remove_inheritance_pseudos (bitmap remove_pseudos)
bitmap_bit_p (&lra_split_regs, sregno)
|| bitmap_bit_p (&lra_split_regs, dregno)
? "split" : "inheritance");
debug_rtl_slim (lra_dump_file,
curr_insn, curr_insn, -1, 0);
dump_insn_slim (lra_dump_file, curr_insn);
}
lra_set_insn_deleted (curr_insn);
done_p = true;
@ -4914,8 +4910,7 @@ remove_inheritance_pseudos (bitmap remove_pseudos)
if (lra_dump_file != NULL)
{
fprintf (lra_dump_file, " Change reload insn:\n");
debug_rtl_slim (lra_dump_file,
curr_insn, curr_insn, -1, 0);
dump_insn_slim (lra_dump_file, curr_insn);
}
}
}
@ -4958,7 +4953,7 @@ remove_inheritance_pseudos (bitmap remove_pseudos)
if (restored_regs_p && lra_dump_file != NULL)
{
fprintf (lra_dump_file, " Insn after restoring regs:\n");
debug_rtl_slim (lra_dump_file, curr_insn, curr_insn, -1, 0);
dump_insn_slim (lra_dump_file, curr_insn);
}
}
}

View file

@ -1817,16 +1817,16 @@ lra_process_new_insns (rtx insn, rtx before, rtx after, const char *title)
if (lra_dump_file != NULL && (before != NULL_RTX || after != NULL_RTX))
{
debug_rtl_slim (lra_dump_file, insn, insn, -1, 0);
dump_insn_slim (lra_dump_file, insn);
if (before != NULL_RTX)
{
fprintf (lra_dump_file," %s before:\n", title);
debug_rtl_slim (lra_dump_file, before, NULL_RTX, -1, 0);
dump_rtl_slim (lra_dump_file, before, NULL_RTX, -1, 0);
}
if (after != NULL_RTX)
{
fprintf (lra_dump_file, " %s after:\n", title);
debug_rtl_slim (lra_dump_file, after, NULL_RTX, -1, 0);
dump_rtl_slim (lra_dump_file, after, NULL_RTX, -1, 0);
}
fprintf (lra_dump_file, "\n");
}

View file

@ -2575,14 +2575,6 @@ extern rtx make_compound_operation (rtx, enum rtx_code);
/* In cfgcleanup.c */
extern void delete_dead_jumptables (void);
/* In sched-vis.c. */
extern void debug_bb_n_slim (int);
extern void debug_bb_slim (struct basic_block_def *);
extern void print_value_slim (FILE *, const_rtx, int);
extern void debug_rtl_slim (FILE *, const_rtx, const_rtx, int, int);
extern void dump_insn_slim (FILE *f, const_rtx x);
extern void debug_insn_slim (const_rtx x);
/* In sched-rgn.c. */
extern void schedule_insns (void);
@ -2609,9 +2601,12 @@ extern void print_inline_rtx (FILE *, const_rtx, int);
sched-vis.c is compiled always. FIXME: Ideally these functions would
not be in sched-vis.c but in rtl.c, because they are not only used
by the scheduler anymore but for all "slim" RTL dumping. */
extern void print_insn (char *, const_rtx, int);
extern void print_pattern (char *, const_rtx, int);
extern void dump_value_slim (FILE *, const_rtx, int);
extern void dump_insn_slim (FILE *, const_rtx);
extern void dump_rtl_slim (FILE *, const_rtx, const_rtx, int, int);
extern void print_value (char *, const_rtx, int);
extern void print_pattern (char *, const_rtx, int);
extern void print_insn (char *, const_rtx, int);
/* In function.c */
extern void reposition_prologue_and_epilogue_notes (void);

View file

@ -1,6 +1,5 @@
/* Instruction scheduling pass.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
/* Printing of RTL in "slim", mnemonic like form.
Copyright (C) 1992-2012
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
@ -20,6 +19,10 @@ for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* Historically this form of RTL dumping was introduced along with
the Haifa instruction scheduling pass, hence the name of this file.
But there is nothing in this file left that is scheduler-specific. */
#include "config.h"
#include "system.h"
@ -31,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "basic-block.h"
#include "insn-attr.h"
#include "sched-int.h"
#include "dumpfile.h" /* for the TDF_* flags */
static char *safe_concat (char *, char *, const char *);
@ -498,11 +500,7 @@ print_value (char *buf, const_rtx x, int verbose)
sprintf (t, "r%d", REGNO (x));
cur = safe_concat (buf, cur, t);
}
if (verbose
#ifdef INSN_SCHEDULING
&& !current_sched_info
#endif
)
if (verbose)
{
sprintf (t, ":%s", GET_MODE_NAME (GET_MODE (x)));
cur = safe_concat (buf, cur, t);
@ -553,7 +551,7 @@ print_value (char *buf, const_rtx x, int verbose)
memory. */
void
print_value_slim (FILE *f, const_rtx x, int verbose)
dump_value_slim (FILE *f, const_rtx x, int verbose)
{
char buf[BUF_LEN];
@ -590,12 +588,9 @@ print_pattern (char *buf, const_rtx x, int verbose)
print_exp (buf, x, verbose);
break;
case CLOBBER:
print_value (t1, XEXP (x, 0), verbose);
sprintf (buf, "clobber %s", t1);
break;
case USE:
print_value (t1, XEXP (x, 0), verbose);
sprintf (buf, "use %s", t1);
sprintf (buf, "%s %s", GET_RTX_NAME (GET_CODE (x)), t1);
break;
case VAR_LOCATION:
print_value (t1, PAT_VAR_LOCATION_LOC (x), verbose);
@ -657,151 +652,102 @@ print_pattern (char *buf, const_rtx x, int verbose)
sprintf (buf, "trap_if %s", t1);
break;
case UNSPEC:
{
int i;
sprintf (t1, "unspec{");
for (i = 0; i < XVECLEN (x, 0); i++)
{
print_pattern (t2, XVECEXP (x, 0, i), verbose);
sprintf (t3, "%s%s;", t1, t2);
strcpy (t1, t3);
}
sprintf (buf, "%s}", t1);
}
break;
case UNSPEC_VOLATILE:
{
int i;
sprintf (t1, "unspec/v{");
for (i = 0; i < XVECLEN (x, 0); i++)
{
print_pattern (t2, XVECEXP (x, 0, i), verbose);
sprintf (t3, "%s%s;", t1, t2);
strcpy (t1, t3);
}
sprintf (buf, "%s}", t1);
}
break;
/* Fallthru -- leave UNSPECs to print_exp. */
default:
print_value (buf, x, verbose);
}
} /* print_pattern */
/* This is the main function in rtl visualization mechanism. It
accepts an rtx and tries to recognize it as an insn, then prints it
properly in human readable form, resembling assembler mnemonics.
For every insn it prints its UID and BB the insn belongs too.
(Probably the last "option" should be extended somehow, since it
depends now on sched.c inner variables ...) */
/* This is the main function in slim rtl visualization mechanism.
X is an insn, to be printed into BUF.
This function tries to print it properly in human-readable form,
resembling assembler mnemonics (instead of the older Lisp-style
form).
If VERBOSE is TRUE, insns are printed with more complete (but
longer) pattern names and with extra information, and prefixed
with their INSN_UIDs. */
void
print_insn (char *buf, const_rtx x, int verbose)
{
char t[BUF_LEN];
const_rtx insn = x;
/* Collect the string to output for X in t1. t2 is a scratch area. */
char t1[BUF_LEN], t2[BUF_LEN];
switch (GET_CODE (x))
{
case INSN:
print_pattern (t, PATTERN (x), verbose);
#ifdef INSN_SCHEDULING
if (verbose && current_sched_info)
sprintf (buf, "%s: %s", (*current_sched_info->print_insn) (x, 1),
t);
else
#endif
sprintf (buf, " %4d %s", INSN_UID (x), t);
print_pattern (t1, PATTERN (x), verbose);
break;
case DEBUG_INSN:
{
const char *name = "?";
if (DECL_P (INSN_VAR_LOCATION_DECL (insn)))
if (DECL_P (INSN_VAR_LOCATION_DECL (x)))
{
tree id = DECL_NAME (INSN_VAR_LOCATION_DECL (insn));
tree id = DECL_NAME (INSN_VAR_LOCATION_DECL (x));
char idbuf[32];
if (id)
name = IDENTIFIER_POINTER (id);
else if (TREE_CODE (INSN_VAR_LOCATION_DECL (insn))
else if (TREE_CODE (INSN_VAR_LOCATION_DECL (x))
== DEBUG_EXPR_DECL)
{
sprintf (idbuf, "D#%i",
DEBUG_TEMP_UID (INSN_VAR_LOCATION_DECL (insn)));
DEBUG_TEMP_UID (INSN_VAR_LOCATION_DECL (x)));
name = idbuf;
}
else
{
sprintf (idbuf, "D.%i",
DECL_UID (INSN_VAR_LOCATION_DECL (insn)));
DECL_UID (INSN_VAR_LOCATION_DECL (x)));
name = idbuf;
}
}
if (VAR_LOC_UNKNOWN_P (INSN_VAR_LOCATION_LOC (insn)))
sprintf (buf, " %4d: debug %s optimized away", INSN_UID (insn), name);
if (VAR_LOC_UNKNOWN_P (INSN_VAR_LOCATION_LOC (x)))
sprintf (t1, "debug %s optimized away", name);
else
{
print_pattern (t, INSN_VAR_LOCATION_LOC (insn), verbose);
sprintf (buf, " %4d: debug %s => %s", INSN_UID (insn), name, t);
print_pattern (t2, INSN_VAR_LOCATION_LOC (x), verbose);
sprintf (t1, "debug %s => %s", name, t2);
}
}
break;
case JUMP_INSN:
print_pattern (t, PATTERN (x), verbose);
#ifdef INSN_SCHEDULING
if (verbose && current_sched_info)
sprintf (buf, "%s: jump %s", (*current_sched_info->print_insn) (x, 1),
t);
else
#endif
sprintf (buf, " %4d %s", INSN_UID (x), t);
print_pattern (t1, PATTERN (x), verbose);
break;
case CALL_INSN:
x = PATTERN (insn);
if (GET_CODE (x) == PARALLEL)
{
x = XVECEXP (x, 0, 0);
print_pattern (t, x, verbose);
}
if (GET_CODE (PATTERN (x)) == PARALLEL)
print_pattern (t1, XVECEXP (PATTERN (x), 0, 0), verbose);
else
strcpy (t, "call <...>");
#ifdef INSN_SCHEDULING
if (verbose && current_sched_info)
sprintf (buf, "%s: %s", (*current_sched_info->print_insn) (insn, 1), t);
else
#endif
sprintf (buf, " %4d %s", INSN_UID (insn), t);
print_pattern (t1, PATTERN (x), verbose);
break;
case CODE_LABEL:
sprintf (buf, "L%d:", INSN_UID (x));
sprintf (t1, "L%d:", INSN_UID (x));
break;
case BARRIER:
sprintf (buf, "i%4d: barrier", INSN_UID (x));
sprintf (t1, "barrier");
break;
case NOTE:
{
int uid = INSN_UID (x);
const char *note_name = GET_NOTE_INSN_NAME (NOTE_KIND (x));
switch (NOTE_KIND (x))
{
case NOTE_INSN_EH_REGION_BEG:
case NOTE_INSN_EH_REGION_END:
sprintf (buf, " %4d %s %d", uid, note_name,
NOTE_EH_HANDLER (x));
sprintf (t2, "%d", NOTE_EH_HANDLER (x));
break;
case NOTE_INSN_BLOCK_BEG:
case NOTE_INSN_BLOCK_END:
sprintf (buf, " %4d %s %d", uid, note_name,
BLOCK_NUMBER (NOTE_BLOCK (x)));
sprintf (t2, "%d", BLOCK_NUMBER (NOTE_BLOCK (x)));
break;
case NOTE_INSN_BASIC_BLOCK:
sprintf (buf, " %4d %s %d", uid, note_name,
NOTE_BASIC_BLOCK (x)->index);
sprintf (t2, "%d", NOTE_BASIC_BLOCK (x)->index);
break;
case NOTE_INSN_DELETED_LABEL:
@ -810,26 +756,35 @@ print_insn (char *buf, const_rtx x, int verbose)
const char *label = NOTE_DELETED_LABEL_NAME (x);
if (label == NULL)
label = "";
sprintf (buf, " %4d %s (\"%s\")", uid, note_name, label);
sprintf (t2, "(\"%s\")", label);
}
break;
case NOTE_INSN_VAR_LOCATION:
print_pattern (t, NOTE_VAR_LOCATION (x), verbose);
sprintf (buf, " %4d %s {%s}", uid, note_name, t);
case NOTE_INSN_CALL_ARG_LOCATION:
/* It's safe here to use t1 for scratch because the output
is printed in t2 and put back in t1 at the bottom of
the inner switch statement. */
print_pattern (t1, NOTE_VAR_LOCATION (x), verbose);
sprintf (t2, "{%s}", t1);
break;
default:
sprintf (buf, " %4d %s", uid, note_name);
t2[0] = '\0';
break;
}
sprintf (t1, "%s %s", GET_NOTE_INSN_NAME (NOTE_KIND (x)), t2);
break;
}
default:
sprintf (buf, "i%4d <What %s?>", INSN_UID (x),
GET_RTX_NAME (GET_CODE (x)));
sprintf (t1, "<What %s?>", GET_RTX_NAME (GET_CODE (x)));
break;
}
if (verbose)
sprintf (buf, " %4d: %s", INSN_UID (x), t1);
else
sprintf (buf, "%s", t1);
} /* print_insn */
/* Emit a slim dump of X (an insn) to the file F, including any register
@ -854,20 +809,12 @@ dump_insn_slim (FILE *f, const_rtx x)
}
}
/* Emit a slim dump of X (an insn) to stderr. */
extern void debug_insn_slim (const_rtx);
DEBUG_FUNCTION void
debug_insn_slim (const_rtx x)
{
dump_insn_slim (stderr, x);
}
/* Same as above, but stop at LAST or when COUNT == 0.
If COUNT < 0 it will stop only at LAST or NULL rtx. */
extern void debug_rtl_slim (FILE *, const_rtx, const_rtx, int, int);
DEBUG_FUNCTION void
debug_rtl_slim (FILE *f, const_rtx first, const_rtx last,
int count, int flags ATTRIBUTE_UNUSED)
void
dump_rtl_slim (FILE *f, const_rtx first, const_rtx last,
int count, int flags ATTRIBUTE_UNUSED)
{
const_rtx insn, tail;
@ -882,6 +829,22 @@ debug_rtl_slim (FILE *f, const_rtx first, const_rtx last,
}
}
/* Emit a slim dump of X (an insn) to stderr. */
extern void debug_insn_slim (const_rtx);
DEBUG_FUNCTION void
debug_insn_slim (const_rtx x)
{
dump_insn_slim (stderr, x);
}
/* Same as above, but using dump_rtl_slim. */
extern void debug_rtl_slim (FILE *, const_rtx, const_rtx, int, int);
DEBUG_FUNCTION void
debug_rtl_slim (const_rtx first, const_rtx last, int count, int flags)
{
dump_rtl_slim (stderr, first, last, count, flags);
}
extern void debug_bb_slim (basic_block);
DEBUG_FUNCTION void
debug_bb_slim (basic_block bb)