summaryrefslogtreecommitdiff
path: root/gcc/sel-sched-dump.c
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2014-10-30 09:35:42 +0000
committer <>2015-01-09 11:51:27 +0000
commitc27a97d04853380f1e80525391b3f0d156ed4c84 (patch)
tree68ffaade7c605bc80cffa18360799c98a810976f /gcc/sel-sched-dump.c
parent6af3fdec2262dd94954acc5e426ef71cbd4521d3 (diff)
downloadgcc-tarball-c27a97d04853380f1e80525391b3f0d156ed4c84.tar.gz
Imported from /home/lorry/working-area/delta_gcc-tarball/gcc-4.9.2.tar.bz2.gcc-4.9.2
Diffstat (limited to 'gcc/sel-sched-dump.c')
-rw-r--r--gcc/sel-sched-dump.c121
1 files changed, 106 insertions, 15 deletions
diff --git a/gcc/sel-sched-dump.c b/gcc/sel-sched-dump.c
index 27b06ad169..97dcb9396e 100644
--- a/gcc/sel-sched-dump.c
+++ b/gcc/sel-sched-dump.c
@@ -1,5 +1,5 @@
/* Instruction scheduling pass. Log dumping infrastructure.
- Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006-2014 Free Software Foundation, Inc.
This file is part of GCC.
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "insn-attr.h"
#include "params.h"
-#include "output.h"
#include "basic-block.h"
#include "cselib.h"
#include "target.h"
@@ -92,7 +91,7 @@ restore_dump (void)
/* Functions for dumping instructions, av sets, and exprs. */
/* Default flags for dumping insns. */
-static int dump_insn_rtx_flags = DUMP_INSN_RTX_PATTERN;
+static int dump_insn_rtx_flags = DUMP_INSN_RTX_UID | DUMP_INSN_RTX_PATTERN;
/* Default flags for dumping vinsns. */
static int dump_vinsn_flags = (DUMP_VINSN_INSN_RTX | DUMP_VINSN_TYPE
@@ -137,12 +136,7 @@ dump_insn_rtx_1 (rtx insn, int flags)
sel_print ("%d;", INSN_UID (insn));
if (flags & DUMP_INSN_RTX_PATTERN)
- {
- char buf[2048];
-
- print_insn (buf, insn, 0);
- sel_print ("%s;", buf);
- }
+ sel_print ("%s;", str_pattern_slim (PATTERN (insn)));
if (flags & DUMP_INSN_RTX_BBN)
{
@@ -213,6 +207,42 @@ dump_vinsn (vinsn_t vi)
dump_vinsn_1 (vi, dump_vinsn_flags);
}
+DEBUG_FUNCTION void
+debug (vinsn_def &ref)
+{
+ switch_dump (stderr);
+ dump_vinsn_1 (&ref, dump_vinsn_flags);
+ sel_print ("\n");
+ restore_dump ();
+}
+
+DEBUG_FUNCTION void
+debug (vinsn_def *ptr)
+{
+ if (ptr)
+ debug (*ptr);
+ else
+ fprintf (stderr, "<nil>\n");
+}
+
+DEBUG_FUNCTION void
+debug_verbose (vinsn_def &ref)
+{
+ switch_dump (stderr);
+ dump_vinsn_1 (&ref, debug_vinsn_flags);
+ sel_print ("\n");
+ restore_dump ();
+}
+
+DEBUG_FUNCTION void
+debug_verbose (vinsn_def *ptr)
+{
+ if (ptr)
+ debug (*ptr);
+ else
+ fprintf (stderr, "<nil>\n");
+}
+
/* Dump vinsn VI to stderr. */
DEBUG_FUNCTION void
debug_vinsn (vinsn_t vi)
@@ -304,6 +334,46 @@ debug_expr (expr_t expr)
restore_dump ();
}
+/* Dump expression REF. */
+
+DEBUG_FUNCTION void
+debug (expr_def &ref)
+{
+ switch_dump (stderr);
+ dump_expr_1 (&ref, 0);
+ sel_print ("\n");
+ restore_dump ();
+}
+
+DEBUG_FUNCTION void
+debug (expr_def *ptr)
+{
+ if (ptr)
+ debug (*ptr);
+ else
+ fprintf (stderr, "<nil>\n");
+}
+
+/* Dump expression REF verbosely. */
+
+DEBUG_FUNCTION void
+debug_verbose (expr_def &ref)
+{
+ switch_dump (stderr);
+ dump_expr_1 (&ref, DUMP_EXPR_ALL);
+ sel_print ("\n");
+ restore_dump ();
+}
+
+DEBUG_FUNCTION void
+debug_verbose (expr_def *ptr)
+{
+ if (ptr)
+ debug_verbose (*ptr);
+ else
+ fprintf (stderr, "<nil>\n");
+}
+
/* Dump insn I honoring FLAGS. */
void
dump_insn_1 (insn_t i, int flags)
@@ -466,7 +536,7 @@ dump_insn_vector (rtx_vec_t succs)
int i;
rtx succ;
- FOR_EACH_VEC_ELT (rtx, succs, i, succ)
+ FOR_EACH_VEC_ELT (succs, i, succ)
if (succ)
dump_insn (succ);
else
@@ -503,7 +573,7 @@ sel_print_insn (const_rtx insn, int aligned ATTRIBUTE_UNUSED)
/* '+' before insn means it is a new cycle start and it's not been
scheduled yet. '>' - has been scheduled. */
- if (s_i_d && INSN_LUID (insn) > 0)
+ if (s_i_d.exists () && INSN_LUID (insn) > 0)
if (GET_MODE (insn) == TImode)
sprintf (buf, "%s %4d",
INSN_SCHED_TIMES (insn) > 0 ? "> " : "< ",
@@ -523,6 +593,7 @@ sel_print_insn (const_rtx insn, int aligned ATTRIBUTE_UNUSED)
/* Functions for pretty printing of CFG. */
+/* FIXME: Using pretty-print here could simplify this stuff. */
/* Replace all occurencies of STR1 to STR2 in BUF.
The BUF must be large enough to hold the result. */
@@ -565,7 +636,8 @@ replace_str_in_buf (char *buf, const char *str1, const char *str2)
while (p);
}
-/* Replace characters in BUF that have special meaning in .dot file. */
+/* Replace characters in BUF that have special meaning in .dot file.
+ Similar to pp_write_text_as_dot_label_to_stream. */
static void
sel_prepare_string_for_dot_label (char *buf)
{
@@ -607,7 +679,7 @@ sel_dump_cfg_insn (insn_t insn, int flags)
{
int insn_flags = DUMP_INSN_UID | DUMP_INSN_PATTERN;
- if (sched_luids != NULL && INSN_LUID (insn) > 0)
+ if (sched_luids.exists () && INSN_LUID (insn) > 0)
{
if (flags & SEL_DUMP_CFG_INSN_SEQNO)
insn_flags |= DUMP_INSN_SEQNO | DUMP_INSN_SCHED_CYCLE | DUMP_INSN_EXPR;
@@ -678,7 +750,7 @@ sel_dump_cfg_2 (FILE *f, int flags)
if (flags & SEL_DUMP_CFG_FUNCTION_NAME)
fprintf (f, "function [label = \"%s\"];\n", current_function_name ());
- FOR_EACH_BB (bb)
+ FOR_EACH_BB_FN (bb, cfun)
{
insn_t insn = BB_HEAD (bb);
insn_t next_tail = NEXT_INSN (BB_END (bb));
@@ -922,6 +994,25 @@ debug_blist (blist_t bnds)
restore_dump ();
}
+/* Dump a rtx vector REF. */
+DEBUG_FUNCTION void
+debug (vec<rtx> &ref)
+{
+ switch_dump (stderr);
+ dump_insn_vector (ref);
+ sel_print ("\n");
+ restore_dump ();
+}
+
+DEBUG_FUNCTION void
+debug (vec<rtx> *ptr)
+{
+ if (ptr)
+ debug (*ptr);
+ else
+ fprintf (stderr, "<nil>\n");
+}
+
/* Dump an insn vector SUCCS. */
DEBUG_FUNCTION void
debug_insn_vector (rtx_vec_t succs)
@@ -957,7 +1048,7 @@ debug_mem_addr_value (rtx x)
enum machine_mode address_mode;
gcc_assert (MEM_P (x));
- address_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x));
+ address_mode = get_address_mode (x);
t = shallow_copy_rtx (x);
if (cselib_lookup (XEXP (t, 0), address_mode, 0, GET_MODE (t)))