From 75fdb07e3e34acaf54f0a53556eaba866092ef2f Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 12 Jul 2018 15:14:52 +0200 Subject: [PATCH] dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART parameter. * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART parameter. (gcc::dump_manager::get_dump_file_name): likewise. (dump_begin): Likewise. * dumpfile.h (dump_begin): Update prototype. (gcc::dump_manager::get_dump_file_name, gcc::dump_manager::get_dump_file_name): Update prototype. From-SVN: r262591 --- gcc/ChangeLog | 10 ++++++++++ gcc/dumpfile.c | 31 +++++++++++++++++++++---------- gcc/dumpfile.h | 8 ++++---- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03cb0fa4190..ec22e935611 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2018-07-12 Jan Hubicka + + * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART + parameter. + (gcc::dump_manager::get_dump_file_name): likewise. + (dump_begin): Likewise. + * dumpfile.h (dump_begin): Update prototype. + (gcc::dump_manager::get_dump_file_name, + gcc::dump_manager::get_dump_file_name): Update prototype. + 2018-07-12 Richard Sandiford * internal-fn.h (vectorizable_internal_fn_p): New function. diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c index 7ed17960db0..4de7d28895d 100644 --- a/gcc/dumpfile.c +++ b/gcc/dumpfile.c @@ -307,7 +307,7 @@ get_dump_file_info_by_switch (const char *swtch) const char * gcc::dump_manager:: -get_dump_file_name (int phase) const +get_dump_file_name (int phase, int part) const { struct dump_file_info *dfi; @@ -316,7 +316,7 @@ get_dump_file_name (int phase) const dfi = get_dump_file_info (phase); - return get_dump_file_name (dfi); + return get_dump_file_name (dfi, part); } /* Return the name of the dump file for the given dump_file_info. @@ -326,7 +326,7 @@ get_dump_file_name (int phase) const char * gcc::dump_manager:: -get_dump_file_name (struct dump_file_info *dfi) const +get_dump_file_name (struct dump_file_info *dfi, int part) const { char dump_id[10]; @@ -350,7 +350,14 @@ get_dump_file_name (struct dump_file_info *dfi) const dump_id[0] = '\0'; } - return concat (dump_base_name, dump_id, dfi->suffix, NULL); + if (part != -1) + { + char part_id[8]; + snprintf (part_id, sizeof (part_id), ".%i", part); + return concat (dump_base_name, dump_id, part_id, dfi->suffix, NULL); + } + else + return concat (dump_base_name, dump_id, dfi->suffix, NULL); } /* Open a dump file called FILENAME. Some filenames are special and @@ -768,17 +775,19 @@ dump_finish (int phase) /* Begin a tree dump for PHASE. Stores any user supplied flag in *FLAG_PTR and returns a stream to write to. If the dump is not enabled, returns NULL. - Multiple calls will reopen and append to the dump file. */ + PART can be used for dump files which should be split to multiple + parts. PART == -1 indicates dump file with no parts. + If PART is -1, multiple calls will reopen and append to the dump file. */ FILE * -dump_begin (int phase, dump_flags_t *flag_ptr) +dump_begin (int phase, dump_flags_t *flag_ptr, int part) { - return g->get_dumps ()->dump_begin (phase, flag_ptr); + return g->get_dumps ()->dump_begin (phase, flag_ptr, part); } FILE * gcc::dump_manager:: -dump_begin (int phase, dump_flags_t *flag_ptr) +dump_begin (int phase, dump_flags_t *flag_ptr, int part) { char *name; struct dump_file_info *dfi; @@ -787,12 +796,14 @@ dump_begin (int phase, dump_flags_t *flag_ptr) if (phase == TDI_none || !dump_phase_enabled_p (phase)) return NULL; - name = get_dump_file_name (phase); + name = get_dump_file_name (phase, part); if (!name) return NULL; dfi = get_dump_file_info (phase); - stream = dump_open (name, dfi->pstate < 0); + /* We do not support re-opening of dump files with parts. This would require + tracking pstate per part of the dump file. */ + stream = dump_open (name, part != -1 || dfi->pstate < 0); if (stream) dfi->pstate = 1; free (name); diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h index 4a71ef70d24..40e3332217e 100644 --- a/gcc/dumpfile.h +++ b/gcc/dumpfile.h @@ -416,7 +416,7 @@ class dump_location_t }; /* In dumpfile.c */ -extern FILE *dump_begin (int, dump_flags_t *); +extern FILE *dump_begin (int, dump_flags_t *, int part=-1); extern void dump_end (int, FILE *); extern int opt_info_switch_p (const char *); extern const char *dump_flag_name (int); @@ -538,10 +538,10 @@ public: /* Return the name of the dump file for the given phase. If the dump is not enabled, returns NULL. */ char * - get_dump_file_name (int phase) const; + get_dump_file_name (int phase, int part = -1) const; char * - get_dump_file_name (struct dump_file_info *dfi) const; + get_dump_file_name (struct dump_file_info *dfi, int part = -1) const; int dump_switch_p (const char *arg); @@ -560,7 +560,7 @@ public: dump_finish (int phase); FILE * - dump_begin (int phase, dump_flags_t *flag_ptr); + dump_begin (int phase, dump_flags_t *flag_ptr, int part); /* Returns nonzero if tree dump PHASE has been initialized. */ int -- 2.30.2