@@ -73,16 +73,6 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags,
7373 else
7474 Diags.setExtensionHandlingBehavior (diag::Severity::Ignored);
7575
76- if (!Opts.DiagnosticSuppressionMappingsFile .empty ()) {
77- if (auto FileContents =
78- VFS.getBufferForFile (Opts.DiagnosticSuppressionMappingsFile )) {
79- Diags.setDiagSuppressionMapping (**FileContents);
80- } else if (ReportDiags) {
81- Diags.Report (diag::err_drv_no_such_file)
82- << Opts.DiagnosticSuppressionMappingsFile ;
83- }
84- }
85-
8676 SmallVector<diag::kind, 10 > _Diags;
8777 const IntrusiveRefCntPtr< DiagnosticIDs > DiagIDs =
8878 Diags.getDiagnosticIDs ();
@@ -237,4 +227,17 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags,
237227 }
238228 }
239229 }
230+
231+ // Process suppression mappings file after processing other warning flags
232+ // (like -Wno-unknown-warning-option) as we can emit extra warnings during
233+ // processing.
234+ if (!Opts.DiagnosticSuppressionMappingsFile .empty ()) {
235+ if (auto FileContents =
236+ VFS.getBufferForFile (Opts.DiagnosticSuppressionMappingsFile )) {
237+ Diags.setDiagSuppressionMapping (**FileContents);
238+ } else if (ReportDiags) {
239+ Diags.Report (diag::err_drv_no_such_file)
240+ << Opts.DiagnosticSuppressionMappingsFile ;
241+ }
242+ }
240243}
0 commit comments