From 17d7d2839f48303087065ceb55cb80c965c3e1a0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 21 Jun 2010 19:10:02 +0200 Subject: [PATCH] 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: r161102 --- gcc/ChangeLog | 10 ++++++++++ gcc/sel-sched-dump.c | 24 +++++++++++++++++++++++- gcc/sel-sched-dump.h | 23 +---------------------- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 739d926d3b19..7b6356e92eaa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2010-06-21 Jakub Jelinek + + 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-20 Gerald Pfeifer Backport from mainline: diff --git a/gcc/sel-sched-dump.c b/gcc/sel-sched-dump.c index 5fce7cf6b9e8..84aa95081829 100644 --- a/gcc/sel-sched-dump.c +++ b/gcc/sel-sched-dump.c @@ -565,7 +565,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] = { "<", ">", "{", "|", "}", "\"", @@ -578,6 +578,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 70750f9cdcd2..c8773e0e3f44 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); -- 2.47.2