summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-03-27 01:50:55 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-03-27 01:50:55 +0000
commitb6766f07c87ba14aa647a6193c549f6a3f059ce5 (patch)
tree95dd8019f47ea34cf32e8e67006141b8942e534b /clang/lib/Frontend/CompilerInvocation.cpp
parentaf66980d8ab79ead2f740aba9a93ec41b2f372d1 (diff)
downloadbcm5719-llvm-b6766f07c87ba14aa647a6193c549f6a3f059ce5.tar.gz
bcm5719-llvm-b6766f07c87ba14aa647a6193c549f6a3f059ce5.zip
Add an option to suppress include stack printing on note diagnostics.
These stacks are often less important than those on primary diagnostics. As the number of notes grows, this becomes increasingly important. The include stack printing is clever and doesn't print stacks for adjacent diagnostics from the same file, but when a note is in between a sequence of errors in a header file, and the notes all refer to some other file, we end up getting a worst-case ping-pong of include stacks that take up a great deal of vertical space. Still, for now, the default behavior isn't changed. We can evaluate user feedback with the flag. Patch by Richard Trieu, a couple of style tweaks from me. llvm-svn: 128371
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 980c75200e7..431f5f4d2f4 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -989,6 +989,13 @@ static void ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
Opts.ShowLocation = !Args.hasArg(OPT_fno_show_source_location);
Opts.ShowOptionNames = Args.hasArg(OPT_fdiagnostics_show_option);
+ // Default behavior is to show note include stacks.
+ Opts.ShowNoteIncludeStack = true;
+ if (Arg *A = Args.getLastArg(OPT_fdiagnostics_show_note_include_stack,
+ OPT_fno_diagnostics_show_note_include_stack))
+ if (A->getOption().matches(OPT_fno_diagnostics_show_note_include_stack))
+ Opts.ShowNoteIncludeStack = false;
+
llvm::StringRef ShowOverloads =
Args.getLastArgValue(OPT_fshow_overloads_EQ, "all");
if (ShowOverloads == "best")
OpenPOWER on IntegriCloud