]> granicus.if.org Git - clang/commitdiff
add a new driver-level -ferror-limit=412 option, which causes clang to stop
authorChris Lattner <sabre@nondot.org>
Wed, 7 Apr 2010 20:49:23 +0000 (20:49 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 7 Apr 2010 20:49:23 +0000 (20:49 +0000)
emitting diagnostics after it has produced that many errors.  Give this a
default value of 20 which produces plenty of errors for people to fix before
recompiling but not so many that their entire console scrolls away when the
compiler gets confused.  The experience looks like this:

$ clang foo.c
<tons of crap>
foo.c:102:3: error: unknown type name 'somethingbad'
  somethingbad x;
  ^
fatal error: too many errors emitted, stopping now
36 warnings and 20 errors generated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100689 91177308-0d34-0410-b5e6-96231b3b80d8

docs/UsersManual.html
include/clang/Driver/Options.td
lib/Driver/Tools.cpp

index e7ea133ce91aa2105ddc0914ce6c5f9155c8c97d..f6651b167806d8616a76a99a9d648f58f118b708 100644 (file)
@@ -189,6 +189,10 @@ introduces the language selection and other high level options like -c, -g, etc.
 <p><b>-pedantic-errors</b>: Error on language extensions.</p>
 <p><b>-Wsystem-headers</b>: Enable warnings from system headers.</p>
 
+<p><b>-ferror-limit=123</b>: Stop emitting diagnostics after 123 errors have
+   been produced.  The default is 20, and the error limit can be disabled with
+   -ferror-limit=0.</p>
+
 <!-- ================================================= -->
 <h4 id="cl_diag_formatting">Formatting of Diagnostics</h4>
 <!-- ================================================= -->
index ed68d68dd62106e892b9e9caa6eb67fc17dd9dc0..dd4586e6196c966b3289e02a59fc1c0c5aad7587 100644 (file)
@@ -356,6 +356,7 @@ def fstack_protector : Flag<"-fstack-protector">, Group<f_Group>;
 def fstrict_aliasing : Flag<"-fstrict-aliasing">, Group<clang_ignored_f_Group>;
 def fsyntax_only : Flag<"-fsyntax-only">, Flags<[DriverOption]>;
 def ftabstop_EQ : Joined<"-ftabstop=">, Group<f_Group>;
+def ferror_limit_EQ : Joined<"-ferror-limit=">, Group<f_Group>;
 def ftemplate_depth_ : Joined<"-ftemplate-depth-">, Group<f_Group>;
 def fterminated_vtables : Flag<"-fterminated-vtables">, Group<f_Group>;
 def fthreadsafe_statics : Flag<"-fthreadsafe-statics">, Group<f_Group>;
index 2a3799152ac88cb31372aceec92d54d879f076d9..cd38c4d9fd37426d67a30320f94342418ce67d4f 100644 (file)
@@ -1073,6 +1073,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
     CmdArgs.push_back(A->getValue(Args));
   }
 
+  CmdArgs.push_back("-ferror-limit");
+  if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ))
+    CmdArgs.push_back(A->getValue(Args));
+  else
+    CmdArgs.push_back("19");
+  
   // Pass -fmessage-length=.
   CmdArgs.push_back("-fmessage-length");
   if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) {