Hi, This patch fixes a problem with the new dump infrastructure as discussed in http://gcc.gnu.org/ml/gcc/2012-10/msg00227.html.
It removes a check for current_function_decl so that dumps will work for IPA passes. In addition, this patch also adds a new inline function to check if any dump files are available. I have bootstrapped and tested on x86_64. Okay for trunk? Thanks, Sharad 2012-10-18 Sharad Singhai <sing...@google.com> * dumpfile.c (dump_enabled_phase): New function. (dump_enabled_p): Rename to dump_enabled_phase. Update all callers. A new function with the same name to check if any of the dump files is available. (dump_kind_p): Remove check for current_function_decl. Add check for dumpfile and alt_dump_file. * dumpfile.h: Add declaration of dump_enabled_p. Index: dumpfile.c =================================================================== --- dumpfile.c (revision 192549) +++ dumpfile.c (working copy) @@ -35,7 +35,7 @@ static int alt_flags; /* current op static FILE *alt_dump_file = NULL; static void dump_loc (int, FILE *, source_location); -static int dump_enabled_p (int); +static int dump_enabled_phase (int); static FILE *dump_open_alternate_stream (struct dump_file_info *); /* Table of tree dump switches. This must be consistent with the @@ -380,7 +380,7 @@ dump_start (int phase, int *flag_ptr) char *name; struct dump_file_info *dfi; FILE *stream; - if (phase == TDI_none || !dump_enabled_p (phase)) + if (phase == TDI_none || !dump_enabled_phase (phase)) return 0; dfi = get_dump_file_info (phase); @@ -461,7 +461,7 @@ dump_begin (int phase, int *flag_ptr) struct dump_file_info *dfi; FILE *stream; - if (phase == TDI_none || !dump_enabled_p (phase)) + if (phase == TDI_none || !dump_enabled_phase (phase)) return NULL; name = get_dump_file_name (phase); @@ -493,8 +493,8 @@ dump_begin (int phase, int *flag_ptr) If PHASE is TDI_tree_all, return nonzero if any dump is enabled for any phase. */ -int -dump_enabled_p (int phase) +static int +dump_enabled_phase (int phase) { if (phase == TDI_tree_all) { @@ -514,6 +514,14 @@ dump_begin (int phase, int *flag_ptr) } } +/* Return true if any of the dumps are enabled, false otherwise. */ + +inline bool +dump_enabled_p (void) +{ + return (dump_file || alt_dump_file); +} + /* Returns nonzero if tree dump PHASE has been initialized. */ int @@ -834,9 +842,8 @@ opt_info_switch_p (const char *arg) bool dump_kind_p (int msg_type) { - if (!current_function_decl) - return 0; - return ((msg_type & pflags) || (msg_type & alt_flags)); + return (dump_file && (msg_type & pflags)) + || (alt_dump_file && (msg_type & alt_flags)); } /* Print basic block on the dump streams. */ Index: dumpfile.h =================================================================== --- dumpfile.h (revision 192549) +++ dumpfile.h (working copy) @@ -121,6 +121,7 @@ extern int dump_switch_p (const char *); extern int opt_info_switch_p (const char *); extern const char *dump_flag_name (int); extern bool dump_kind_p (int); +extern inline bool dump_enabled_p (void); extern void dump_printf (int, const char *, ...) ATTRIBUTE_PRINTF_2; extern void dump_printf_loc (int, source_location, const char *, ...) ATTRIBUTE_PRINTF_3;