diff options
-rw-r--r-- | lib/Frontend/CompilerInstance.cpp | 4 | ||||
-rw-r--r-- | test/Modules/mismatch-diagnostics.cpp | 22 |
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 719474dc76..be38c69235 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/lib/Frontend/CompilerInstance.cpp @@ -1727,7 +1727,9 @@ CompilerInstance::loadModule(SourceLocation ImportLoc, // module cache, we don't know how to rebuild modules. unsigned ARRFlags = Source == ModuleCache ? ASTReader::ARR_OutOfDate | ASTReader::ARR_Missing : - ASTReader::ARR_ConfigurationMismatch; + Source == PrebuiltModulePath ? + 0 : + ASTReader::ARR_ConfigurationMismatch; switch (ModuleManager->ReadAST(ModuleFileName, Source == PrebuiltModulePath ? serialization::MK_PrebuiltModule diff --git a/test/Modules/mismatch-diagnostics.cpp b/test/Modules/mismatch-diagnostics.cpp new file mode 100644 index 0000000000..7754bcee73 --- /dev/null +++ b/test/Modules/mismatch-diagnostics.cpp @@ -0,0 +1,22 @@ +// RUN: rm -rf %t +// RUN: mkdir -p %t/prebuilt_modules +// +// RUN: %clang_cc1 -triple %itanium_abi_triple \ +// RUN: -fmodules-ts -fprebuilt-module-path=%t/prebuilt-modules \ +// RUN: -emit-module-interface -pthread -DBUILD_MODULE \ +// RUN: %s -o %t/prebuilt_modules/mismatching_module.pcm +// +// RUN: not %clang_cc1 -triple %itanium_abi_triple -fmodules-ts \ +// RUN: -fprebuilt-module-path=%t/prebuilt_modules -DCHECK_MISMATCH \ +// RUN: %s 2>&1 | FileCheck %s + +#ifdef BUILD_MODULE +export module mismatching_module; +#endif + +#ifdef CHECK_MISMATCH +import mismatching_module; +// CHECK: error: POSIX thread support was enabled in PCH file but is currently disabled +// CHECK-NEXT: module file {{.*}}/mismatching_module.pcm cannot be loaded due to a configuration mismatch with the current compilation +#endif + |