Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Unified Diff: gcc/gcc/sel-sched-dump.c

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gcc/sel-sched.c ('k') | gcc/gcc/sel-sched-ir.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gcc/sel-sched-dump.c
diff --git a/gcc/gcc/sel-sched-dump.c b/gcc/gcc/sel-sched-dump.c
index 5fce7cf6b9e88a8887d1d56cc7c1d0a8bf6040d2..724ab4269cff8582d9a772de4511a59e1ae9fb58 100644
--- a/gcc/gcc/sel-sched-dump.c
+++ b/gcc/gcc/sel-sched-dump.c
@@ -1,5 +1,5 @@
/* Instruction scheduling pass. Log dumping infrastructure.
- Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "basic-block.h"
#include "cselib.h"
+#include "target.h"
#ifdef INSN_SCHEDULING
#include "sel-sched-ir.h"
@@ -74,7 +75,7 @@ static void
switch_dump (FILE *to)
{
gcc_assert (saved_sched_dump == NULL);
-
+
saved_sched_dump = sched_dump;
sched_dump = to;
}
@@ -88,7 +89,7 @@ restore_dump (void)
}
-/* Functions for dumping instructions, av sets, and exprs. */
+/* Functions for dumping instructions, av sets, and exprs. */
/* Default flags for dumping insns. */
static int dump_insn_rtx_flags = DUMP_INSN_RTX_PATTERN;
@@ -218,7 +219,7 @@ debug_vinsn (vinsn_t vi)
{
switch_dump (stderr);
dump_vinsn_1 (vi, debug_vinsn_flags);
- sel_print ("\n");
+ sel_print ("\n");
restore_dump ();
}
@@ -280,7 +281,7 @@ dump_expr_1 (expr_t expr, int flags)
if (orig_bb != 0)
sel_print ("orig_bb:%d;", orig_bb);
}
-
+
if (EXPR_TARGET_AVAILABLE (expr) < 1)
sel_print ("target:%d;", EXPR_TARGET_AVAILABLE (expr));
sel_print ("]");
@@ -367,10 +368,10 @@ dump_av_set (av_set_t av)
{
av_set_iterator i;
expr_t expr;
-
+
if (!sched_dump_to_dot_p)
sel_print ("{");
-
+
FOR_EACH_EXPR (expr, i, av)
{
dump_expr (expr);
@@ -379,7 +380,7 @@ dump_av_set (av_set_t av)
else
sel_print ("\n");
}
-
+
if (!sched_dump_to_dot_p)
sel_print ("}");
}
@@ -390,7 +391,7 @@ dump_lv_set (regset lv)
{
sel_print ("{");
- /* This code was adapted from flow.c: dump_regset (). */
+ /* This code was adapted from cfg.c: dump_regset (). */
if (lv == NULL)
sel_print ("nil");
else
@@ -398,7 +399,7 @@ dump_lv_set (regset lv)
unsigned i;
reg_set_iterator rsi;
int count = 0;
-
+
EXECUTE_IF_SET_IN_REG_SET (lv, 0, i, rsi)
{
sel_print (" %d", i);
@@ -407,9 +408,9 @@ dump_lv_set (regset lv)
sel_print (" [%s]", reg_names[i]);
++count;
}
-
+
++count;
-
+
if (sched_dump_to_dot_p && count == 12)
{
count = 0;
@@ -417,7 +418,7 @@ dump_lv_set (regset lv)
}
}
}
-
+
sel_print ("}\n");
}
@@ -439,7 +440,7 @@ dump_blist (blist_t bnds)
for (; bnds; bnds = BLIST_NEXT (bnds))
{
bnd_t bnd = BLIST_BND (bnds);
-
+
sel_print ("[to: %d; ptr: ", INSN_UID (BND_TO (bnd)));
dump_ilist (BND_PTR (bnd));
sel_print ("] ");
@@ -464,7 +465,7 @@ dump_insn_vector (rtx_vec_t succs)
{
int i;
rtx succ;
-
+
for (i = 0; VEC_iterate (rtx, succs, i, succ); i++)
if (succ)
dump_insn (succ);
@@ -500,16 +501,16 @@ sel_print_insn (const_rtx insn, int aligned ATTRIBUTE_UNUSED)
{
static char buf[80];
- /* '+' before insn means it is a new cycle start and it's not been
+ /* '+' 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 (GET_MODE (insn) == TImode)
- sprintf (buf, "%s %4d",
- INSN_SCHED_TIMES (insn) > 0 ? "> " : "< ",
+ sprintf (buf, "%s %4d",
+ INSN_SCHED_TIMES (insn) > 0 ? "> " : "< ",
INSN_UID (insn));
else
- sprintf (buf, "%s %4d",
- INSN_SCHED_TIMES (insn) > 0 ? "! " : " ",
+ sprintf (buf, "%s %4d",
+ INSN_SCHED_TIMES (insn) > 0 ? "! " : " ",
INSN_UID (insn));
else
if (GET_MODE (insn) == TImode)
@@ -537,7 +538,7 @@ replace_str_in_buf (char *buf, const char *str1, const char *str2)
do
{
p = strstr (p, str1);
- if (p)
+ if (p)
{
char *p1 = p + str1_len;
/* Copy the rest of buf and '\0'. */
@@ -555,7 +556,7 @@ replace_str_in_buf (char *buf, const char *str1, const char *str2)
/* Copy str2. */
for (i = 0; i < str2_len; i++)
p[i] = str2[i];
-
+
p += str2_len;
buf_len += diff;
}
@@ -565,12 +566,12 @@ replace_str_in_buf (char *buf, const char *str1, const char *str2)
}
/* Replace characters in BUF that have special meaning in .dot file. */
-void
+static void
sel_prepare_string_for_dot_label (char *buf)
{
static char specials_from[7][2] = { "<", ">", "{", "|", "}", "\"",
"\n" };
- static char specials_to[7][3] = { "\\<", "\\>", "\\{", "\\|", "\\}",
+ static char specials_to[7][3] = { "\\<", "\\>", "\\{", "\\|", "\\}",
"\\\"", "\\l" };
unsigned i;
@@ -578,6 +579,28 @@ sel_prepare_string_for_dot_label (char *buf)
replace_str_in_buf (buf, specials_from[i], specials_to[i]);
}
+/* This function acts like printf but dumps to the sched_dump file. */
+void
+sel_print (const char *fmt, ...)
+{
+ va_list ap;
+ va_start (ap, fmt);
+ if (sched_dump_to_dot_p)
+ {
+ char *message;
+ if (vasprintf (&message, fmt, ap) >= 0 && message != NULL)
+ {
+ message = (char *) xrealloc (message, 2 * strlen (message) + 1);
+ sel_prepare_string_for_dot_label (message);
+ fprintf (sched_dump, "%s", message);
+ free (message);
+ }
+ }
+ else
+ vfprintf (sched_dump, fmt, ap);
+ va_end (ap);
+}
+
/* Dump INSN with FLAGS. */
static void
sel_dump_cfg_insn (insn_t insn, int flags)
@@ -800,7 +823,7 @@ sel_dump_cfg_2 (FILE *f, int flags)
sched_dump_to_dot_p = false;
}
-/* Dump a cfg region to the file specified by TAG honoring flags.
+/* Dump a cfg region to the file specified by TAG honoring flags.
The file is created by the function. */
static void
sel_dump_cfg_1 (const char *tag, int flags)
@@ -931,10 +954,13 @@ rtx
debug_mem_addr_value (rtx x)
{
rtx t, addr;
+ enum machine_mode address_mode;
gcc_assert (MEM_P (x));
+ address_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x));
+
t = shallow_copy_rtx (x);
- if (cselib_lookup (XEXP (t, 0), Pmode, 0))
+ if (cselib_lookup (XEXP (t, 0), address_mode, 0))
XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0));
t = canon_rtx (t);
« no previous file with comments | « gcc/gcc/sel-sched.c ('k') | gcc/gcc/sel-sched-ir.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698