From bd9918c41171a12b7fc05e9432808edbe6a2db55 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Mon, 30 Apr 2018 11:47:04 +0000 Subject: [PATCH] [patch] allow '-' for stdout dump https://gcc.gnu.org/ml/gcc-patches/2018-04/msg01303.html * dumpfile.c (dump_open): Allow '-' for stdout. * doc/invoke.texi (Developer Options): Document dump filename determination early. Document stdin/stdout selection. Co-Authored-By: Sandra Loosemore From-SVN: r259760 --- gcc/ChangeLog | 7 ++++++ gcc/doc/invoke.texi | 58 +++++++++++++++++---------------------------- gcc/dumpfile.c | 3 ++- 3 files changed, 31 insertions(+), 37 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0949337a684..532d49ea333 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-04-30 Nathan Sidwell + Sandra Loosemore + + * dumpfile.c (dump_open): Allow '-' for stdout. + * doc/invoke.texi (Developer Options): Document dump filename + determination early. Document stdin/stdout selection. + 2018-04-30 Andrew Sadek Microblaze Target: PIC data text relative diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e45f467155a..e953b21b10c 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -13358,6 +13358,26 @@ configuration, such as where it searches for libraries. You should rarely need to use any of these options for ordinary compilation and linking tasks. +Many developer options that cause GCC to dump output to a file take an +optional @samp{=@var{filename}} suffix. You can specify @samp{stdout} +or @samp{-} to dump to standard output, and @samp{stderr} for standard +error. + +If @samp{=@var{filename}} is omitted, a default dump file name is +constructed by concatenating the base dump file name, a pass number, +phase letter, and pass name. The base dump file name is the name of +output file produced by the compiler if explicitly specified and not +an executable; otherwise it is the source file name. +The pass number is determined by the order passes are registered with +the compiler's pass manager. +This is generally the same as the order of execution, but passes +registered by plugins, target-specific passes, or passes that are +otherwise registered late are numbered higher than the pass named +@samp{final}, even if they are executed earlier. The phase letter is +one of @samp{i} (inter-procedural analysis), @samp{l} +(language-specific), @samp{r} (RTL), or @samp{t} (tree). +The files are created in the directory of the output file. + @table @gcctabopt @item -d@var{letters} @@ -13367,20 +13387,7 @@ linking tasks. @opindex fdump-rtl-@var{pass} Says to make debugging dumps during compilation at times specified by @var{letters}. This is used for debugging the RTL-based passes of the -compiler. The file names for most of the dumps are made by appending -a pass number and a word to the @var{dumpname}, and the files are -created in the directory of the output file. In case of -@option{=@var{filename}} option, the dump is output on the given file -instead of the pass numbered dump files. Note that the pass number is -assigned as passes are registered into the pass manager. Most passes -are registered in the order that they will execute and for these passes -the number corresponds to the pass execution order. However, passes -registered by plugins, passes specific to compilation targets, or -passes that are otherwise registered after all the other passes are -numbered higher than a pass named "final", even if they are executed -earlier. @var{dumpname} is generated from the name of the output -file if explicitly specified and not an executable, otherwise it is -the basename of the source file. +compiler. Some @option{-d@var{letters}} switches have different meaning when @option{-E} is used for preprocessing. @xref{Preprocessor Options}, @@ -13768,11 +13775,7 @@ counters for each function compiled. @opindex fdump-tree-all @opindex fdump-tree Control the dumping at various stages of processing the intermediate -language tree to a file. The file name is generated by appending a -switch-specific suffix to the source file name, and the file is -created in the same directory as the output file. In case of -@option{=@var{filename}} option, the dump is output on the given file -instead of the auto named dump files. If the @samp{-@var{options}} +language tree to a file. If the @samp{-@var{options}} form is used, @var{options} is a list of @samp{-} separated options which control the details of the dump. Not all options are applicable to all dumps; those that are not meaningful are ignored. The @@ -13839,26 +13842,9 @@ passes). @item note Enable other detailed optimization information (only available in certain passes). -@item =@var{filename} -Instead of an auto named dump file, output into the given file -name. The file names @file{stdout} and @file{stderr} are treated -specially and are considered already open standard streams. For -example, - -@smallexample -gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks=foo.dump - -fdump-tree-pre=/dev/stderr file.c -@end smallexample - -outputs vectorizer dump into @file{foo.dump}, while the PRE dump is -output on to @file{stderr}. If two conflicting dump filenames are -given for the same pass, then the latter option overrides the earlier -one. - @item all Turn on all options, except @option{raw}, @option{slim}, @option{verbose} and @option{lineno}. - @item optall Turn on all optimization options, i.e., @option{optimized}, @option{missed}, and @option{note}. diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c index 75e2a7d792f..0f16d4f044f 100644 --- a/gcc/dumpfile.c +++ b/gcc/dumpfile.c @@ -323,7 +323,8 @@ dump_open (const char *filename, bool trunc) if (strcmp ("stderr", filename) == 0) return stderr; - if (strcmp ("stdout", filename) == 0) + if (strcmp ("stdout", filename) == 0 + || strcmp ("-", filename) == 0) return stdout; FILE *stream = fopen (filename, trunc ? "w" : "a"); -- 2.30.2