aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-06-21 18:26:25 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-06-21 18:26:25 +0200
commit6747788144887b569ab4fe3e986043e09c986963 (patch)
tree86fc98f46a0126cc9517263e47a96f27eb9f412e /gcc
parentd34b4f64c879442fb29b59301425fc0087fea5dd (diff)
downloadgcc-6747788144887b569ab4fe3e986043e09c986963.zip
gcc-6747788144887b569ab4fe3e986043e09c986963.tar.gz
gcc-6747788144887b569ab4fe3e986043e09c986963.tar.bz2
re PR bootstrap/44426 (gcc 4.5.0 requires c9x compiler to build)
PR bootstrap/44426 * sel-sched-dump.h (sel_prepare_string_for_dot_label): Remove prototype. (sel_print_to_dot): Remove macro. (sel_print): Likewise. New prototype. * sel-sched-dump.c (sel_prepare_string_for_dot_label): Make static. (sel_print): New function. From-SVN: r161092
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/sel-sched-dump.c24
-rw-r--r--gcc/sel-sched-dump.h23
3 files changed, 32 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c171ca3..aa4d2a8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -3,6 +3,14 @@
* stmt.c (resolve_asm_operand_names): Fix handling
of %%.
+ PR bootstrap/44426
+ * sel-sched-dump.h (sel_prepare_string_for_dot_label): Remove
+ prototype.
+ (sel_print_to_dot): Remove macro.
+ (sel_print): Likewise. New prototype.
+ * sel-sched-dump.c (sel_prepare_string_for_dot_label): Make static.
+ (sel_print): New function.
+
2010-06-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
diff --git a/gcc/sel-sched-dump.c b/gcc/sel-sched-dump.c
index 1042a6e..e9b486f 100644
--- a/gcc/sel-sched-dump.c
+++ b/gcc/sel-sched-dump.c
@@ -566,7 +566,7 @@ 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] = { "<", ">", "{", "|", "}", "\"",
@@ -579,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)
diff --git a/gcc/sel-sched-dump.h b/gcc/sel-sched-dump.h
index d4ebd77..52d7aea 100644
--- a/gcc/sel-sched-dump.h
+++ b/gcc/sel-sched-dump.h
@@ -177,34 +177,13 @@ extern void dump_insn_1 (insn_t, int);
extern void dump_insn (insn_t);
extern void debug_insn (insn_t);
-extern void sel_prepare_string_for_dot_label (char *);
-
/* When this flag is on, we are dumping to the .dot file.
When it is off, we are dumping to log. */
extern bool sched_dump_to_dot_p;
-
-/* This macro acts like printf but dumps information to the .dot file.
- Used when dumping control flow. */
-#define sel_print_to_dot(...) \
- do { \
- int __j = 1 + 2 * snprintf (NULL, 0, __VA_ARGS__); \
- char *__s = XALLOCAVEC (char, __j); \
- snprintf (__s, __j, __VA_ARGS__); \
- sel_prepare_string_for_dot_label (__s); \
- fprintf (sched_dump, "%s", __s); \
- } while (0)
-
-/* This macro acts like printf but dumps to the sched_dump file. */
-#define sel_print(...) \
- do { \
- if (sched_dump_to_dot_p) \
- sel_print_to_dot (__VA_ARGS__); \
- else \
- fprintf (sched_dump, __VA_ARGS__); \
- } while (0)
/* Functions from sel-sched-dump.c. */
+extern void sel_print (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
extern const char * sel_print_insn (const_rtx, int);
extern void free_sel_dump_data (void);