diff options
author | David Malcolm <dmalcolm@redhat.com> | 2018-06-28 14:55:42 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2018-06-28 14:55:42 +0000 |
commit | 29b54a9d2d9fbefe57589a69d8e992d3e3b4bd99 (patch) | |
tree | 8ba0845992be0c8d1b9334cd9db5504de34f8a67 /gcc/dumpfile.c | |
parent | f601629c61e2361bab49eecbcf89703f8fb33e98 (diff) | |
download | gcc-29b54a9d2d9fbefe57589a69d8e992d3e3b4bd99.zip gcc-29b54a9d2d9fbefe57589a69d8e992d3e3b4bd99.tar.gz gcc-29b54a9d2d9fbefe57589a69d8e992d3e3b4bd99.tar.bz2 |
Hide alt_dump_file within dumpfile.c
This patch removes alt_dump_file from dumpfile.h, making it static
within dumpfile.c. This allows for changing how -fopt-info is
implemented, and potentially adding other kinds of dump target, such
as remarks or optimization records.
Doing so requires changing the implementation of dump_enabled_p, so
the patch changes this to a simple lookup of a boolean global, which
is updated any time dump_file or alt_dump_file change.
gcc/ChangeLog:
* cgraph.c (cgraph_node::get_body): Replace assignments to
"dump_file" with calls to set_dump_file.
* dumpfile.c (alt_dump_file): Make static, and group with...
(alt_flags): ...this definition.
(dumps_are_enabled): New variable.
(refresh_dumps_are_enabled): New function.
(set_dump_file): New function.
(set_alt_dump_file): New function.
(gcc::dump_manager::dump_start): Replace assignments to
"dump_file" and "alt_dump_file" with calls to set_dump_file and
set_alt_dump_file.
(gcc::dump_manager::dump_finish): Likewise.
* dumpfile.h (alt_dump_file): Delete decl.
(dumps_are_enabled): New variable decl.
(set_dump_file): New function decl.
(dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
global.
* tree-nested.c (lower_nested_functions): Replace assignments to
"dump_file" with calls to set_dump_file.
From-SVN: r262220
Diffstat (limited to 'gcc/dumpfile.c')
-rw-r--r-- | gcc/dumpfile.c | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c index d4e1477..06a6673 100644 --- a/gcc/dumpfile.c +++ b/gcc/dumpfile.c @@ -40,18 +40,52 @@ along with GCC; see the file COPYING3. If not see (strncmp (whole, part, strlen (part)) ? NULL : whole + strlen (part)) static dump_flags_t pflags; /* current dump_flags */ -static dump_flags_t alt_flags; /* current opt_info flags */ static void dump_loc (dump_flags_t, FILE *, source_location); + +/* Current -fopt-info output stream, if any, and flags. */ +static FILE *alt_dump_file = NULL; +static dump_flags_t alt_flags; + static FILE *dump_open_alternate_stream (struct dump_file_info *); /* These are currently used for communicating between passes. However, instead of accessing them directly, the passes can use dump_printf () for dumps. */ FILE *dump_file = NULL; -FILE *alt_dump_file = NULL; const char *dump_file_name; dump_flags_t dump_flags; +bool dumps_are_enabled = false; + + +/* Update the "dumps_are_enabled" global; to be called whenever dump_file + or alt_dump_file change. */ + +static void +refresh_dumps_are_enabled () +{ + dumps_are_enabled = (dump_file || alt_dump_file); +} + +/* Set global "dump_file" to NEW_DUMP_FILE, refreshing the "dumps_are_enabled" + global. */ + +void +set_dump_file (FILE *new_dump_file) +{ + dump_file = new_dump_file; + refresh_dumps_are_enabled (); +} + +/* Set "alt_dump_file" to NEW_ALT_DUMP_FILE, refreshing the "dumps_are_enabled" + global. */ + +static void +set_alt_dump_file (FILE *new_alt_dump_file) +{ + alt_dump_file = new_alt_dump_file; + refresh_dumps_are_enabled (); +} #define DUMP_FILE_INFO(suffix, swtch, dkind, num) \ {suffix, swtch, NULL, NULL, NULL, NULL, NULL, dkind, TDF_NONE, TDF_NONE, \ @@ -568,7 +602,7 @@ dump_start (int phase, dump_flags_t *flag_ptr) } free (name); dfi->pstream = stream; - dump_file = dfi->pstream; + set_dump_file (dfi->pstream); /* Initialize current dump flags. */ pflags = dfi->pflags; } @@ -578,7 +612,7 @@ dump_start (int phase, dump_flags_t *flag_ptr) { dfi->alt_stream = stream; count++; - alt_dump_file = dfi->alt_stream; + set_alt_dump_file (dfi->alt_stream); /* Initialize current -fopt-info flags. */ alt_flags = dfi->alt_flags; } @@ -609,8 +643,8 @@ dump_finish (int phase) dfi->alt_stream = NULL; dfi->pstream = NULL; - dump_file = NULL; - alt_dump_file = NULL; + set_dump_file (NULL); + set_alt_dump_file (NULL); dump_flags = TDF_NONE; alt_flags = TDF_NONE; pflags = TDF_NONE; |