diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-10-30 09:35:42 +0000 |
---|---|---|
committer | <> | 2015-01-09 11:51:27 +0000 |
commit | c27a97d04853380f1e80525391b3f0d156ed4c84 (patch) | |
tree | 68ffaade7c605bc80cffa18360799c98a810976f /gcc/sel-sched-dump.c | |
parent | 6af3fdec2262dd94954acc5e426ef71cbd4521d3 (diff) | |
download | gcc-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.c | 121 |
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))) |