From: Jakub Jelinek Date: Mon, 21 Jun 2010 16:26:25 +0000 (+0200) Subject: re PR bootstrap/44426 (gcc 4.5.0 requires c9x compiler to build) X-Git-Tag: releases/gcc-4.6.0~6293 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6747788144887b569ab4fe3e986043e09c986963;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c171ca39fd08..aa4d2a877e49 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 * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define diff --git a/gcc/sel-sched-dump.c b/gcc/sel-sched-dump.c index 1042a6e8e498..e9b486f332b8 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 d4ebd779a7a6..52d7aea693a7 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);