================
@@ -175,8 +192,19 @@ static void sanitizeDiagOpts(DiagnosticOptions &DiagOpts) {
   DiagOpts.ShowCarets = false;
   // Don't write out diagnostic file.
   DiagOpts.DiagnosticSerializationFile.clear();
-  // Don't emit warnings as errors (and all other warnings too).
-  DiagOpts.IgnoreWarnings = true;
+  // Don't emit warnings except for scanning specific warnings.
+  // TODO: It would be useful to add a more principled way to ignore all
+  //       warnings that come from source code. The issue is that we need to
+  //       ignore warnings that could be surpressed by
+  //       `#pragma clang diagnostic`, while still allowing some scanning
+  //       warnings for things we're not ready to turn into errors yet.
----------------
benlangmuir wrote:

> The scanner never sees #pragma clang diagnostic, so there's no issue with 
> code that uses that to turn warnings on.

Ah sorry, I forgot we skipped over most pragmas.

> so you're just left with default warnings.
>
> The goal here was to keep driver warnings (which are lost otherwise) and 
> allow us to have dedicated scanner warnings. I do think we want more control 
> over this, possibly add a scanner bit to diagnostics so we can be explicit 
> about which warnings we expect from the scanner, but I think this change is 
> fine for now.

This goal makes some sense to me, but I'm not sure that using the default 
warnings are a good idea. The default warnings can just as easily cause us to 
emit a driver warning that the user was explicitly trying to hide.

https://github.com/llvm/llvm-project/pull/82294
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to