@@ -279,9 +279,7 @@ ASTReaderListener::~ASTReaderListener() = default;
279279// / \param Diags If non-NULL, diagnostics will be emitted via this engine.
280280// / \param AllowCompatibleDifferences If true, differences between compatible
281281// / language options will be permitted.
282- // /
283- // / \returns true if the languagae options mis-match, false otherwise.
284- static bool checkLanguageOptions (const LangOptions &LangOpts,
282+ static void checkLanguageOptions (const LangOptions &LangOpts,
285283 const LangOptions &ExistingLangOpts,
286284 StringRef ModuleFilename,
287285 DiagnosticsEngine *Diags,
@@ -290,30 +288,27 @@ static bool checkLanguageOptions(const LangOptions &LangOpts,
290288 if (ExistingLangOpts.Name != LangOpts.Name ) { \
291289 if (Diags) { \
292290 if (Bits == 1 ) \
293- Diags->Report (diag::err_ast_file_langopt_mismatch) \
291+ Diags->Report (diag::warn_ast_file_langopt_mismatch) \
294292 << Description << LangOpts.Name << ExistingLangOpts.Name \
295293 << ModuleFilename; \
296294 else \
297- Diags->Report (diag::err_ast_file_langopt_value_mismatch) \
295+ Diags->Report (diag::warn_ast_file_langopt_value_mismatch) \
298296 << Description << ModuleFilename; \
299297 } \
300- return true ; \
301298 }
302299
303300#define VALUE_LANGOPT (Name, Bits, Default, Description ) \
304301 if (ExistingLangOpts.Name != LangOpts.Name ) { \
305302 if (Diags) \
306- Diags->Report (diag::err_ast_file_langopt_value_mismatch) \
303+ Diags->Report (diag::warn_ast_file_langopt_value_mismatch) \
307304 << Description << ModuleFilename; \
308- return true ; \
309305 }
310306
311307#define ENUM_LANGOPT (Name, Type, Bits, Default, Description ) \
312308 if (ExistingLangOpts.get ##Name () != LangOpts.get ##Name ()) { \
313309 if (Diags) \
314- Diags->Report (diag::err_ast_file_langopt_value_mismatch) \
310+ Diags->Report (diag::warn_ast_file_langopt_value_mismatch) \
315311 << Description << ModuleFilename; \
316- return true ; \
317312 }
318313
319314#define COMPATIBLE_LANGOPT (Name, Bits, Default, Description ) \
@@ -335,24 +330,21 @@ static bool checkLanguageOptions(const LangOptions &LangOpts,
335330
336331 if (ExistingLangOpts.ModuleFeatures != LangOpts.ModuleFeatures ) {
337332 if (Diags)
338- Diags->Report (diag::err_ast_file_langopt_value_mismatch )
333+ Diags->Report (diag::warn_ast_file_langopt_value_mismatch )
339334 << " module features" << ModuleFilename;
340- return true ;
341335 }
342336
343337 if (ExistingLangOpts.ObjCRuntime != LangOpts.ObjCRuntime ) {
344338 if (Diags)
345- Diags->Report (diag::err_ast_file_langopt_value_mismatch )
339+ Diags->Report (diag::warn_ast_file_langopt_value_mismatch )
346340 << " target Objective-C runtime" << ModuleFilename;
347- return true ;
348341 }
349342
350343 if (ExistingLangOpts.CommentOpts .BlockCommandNames !=
351344 LangOpts.CommentOpts .BlockCommandNames ) {
352345 if (Diags)
353- Diags->Report (diag::err_ast_file_langopt_value_mismatch )
346+ Diags->Report (diag::warn_ast_file_langopt_value_mismatch )
354347 << " block command names" << ModuleFilename;
355- return true ;
356348 }
357349
358350 // Sanitizer feature mismatches are treated as compatible differences. If
@@ -378,11 +370,8 @@ static bool checkLanguageOptions(const LangOptions &LangOpts,
378370 }
379371#include " clang/Basic/Sanitizers.def"
380372 }
381- return true ;
382373 }
383374 }
384-
385- return false ;
386375}
387376
388377// / Compare the given set of target options against an existing set of
@@ -459,9 +448,10 @@ bool PCHValidator::ReadLanguageOptions(const LangOptions &LangOpts,
459448 StringRef ModuleFilename, bool Complain,
460449 bool AllowCompatibleDifferences) {
461450 const LangOptions &ExistingLangOpts = PP.getLangOpts ();
462- return checkLanguageOptions (LangOpts, ExistingLangOpts, ModuleFilename,
463- Complain ? &Reader.Diags : nullptr ,
464- AllowCompatibleDifferences);
451+ checkLanguageOptions (LangOpts, ExistingLangOpts, ModuleFilename,
452+ Complain ? &Reader.Diags : nullptr ,
453+ AllowCompatibleDifferences);
454+ return false ;
465455}
466456
467457bool PCHValidator::ReadTargetOptions (const TargetOptions &TargetOpts,
@@ -5401,8 +5391,9 @@ namespace {
54015391 bool ReadLanguageOptions (const LangOptions &LangOpts,
54025392 StringRef ModuleFilename, bool Complain,
54035393 bool AllowCompatibleDifferences) override {
5404- return checkLanguageOptions (ExistingLangOpts, LangOpts, ModuleFilename,
5405- nullptr , AllowCompatibleDifferences);
5394+ checkLanguageOptions (ExistingLangOpts, LangOpts, ModuleFilename, nullptr ,
5395+ AllowCompatibleDifferences);
5396+ return false ;
54065397 }
54075398
54085399 bool ReadTargetOptions (const TargetOptions &TargetOpts,
0 commit comments