aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2018-04-30 11:47:04 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2018-04-30 11:47:04 +0000
commitbd9918c41171a12b7fc05e9432808edbe6a2db55 (patch)
treebbe81a739c007828382a36d8df1193bad166d65a
parente693ebce815cd4d29cb0e438e61a692624423628 (diff)
downloadgcc-bd9918c41171a12b7fc05e9432808edbe6a2db55.zip
gcc-bd9918c41171a12b7fc05e9432808edbe6a2db55.tar.gz
gcc-bd9918c41171a12b7fc05e9432808edbe6a2db55.tar.bz2
[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 <sandra@codesourcery.com> From-SVN: r259760
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/doc/invoke.texi58
-rw-r--r--gcc/dumpfile.c3
3 files changed, 31 insertions, 37 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0949337..532d49e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-04-30 Nathan Sidwell <nathan@acm.org>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * 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 <andrew.sadek.se@gmail.com>
Microblaze Target: PIC data text relative
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index e45f467..e953b21 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 75e2a7d..0f16d4f 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");