PCHs (but also modules generated from several implicit invocations like swiftc) previously reported a confusing diagnostic about module caches being mismatched by subdir. This is an implementation detail of the module machinery, and not very useful to the end user. Instead, report this case as a configuration mismatch when the compiler can confirm the module cache was passed the same between the current TU & previously compiled products. Ideally, each argument that could result in this error would be uniquely reported (e.g., O3), but as a starting point, providing something more general is strictly better than pointing the user to the module cache. This patch also includes NFCs for renaming variable names from Module to AST and formatting cleanup in related areas. resolves: rdar://167453135
34 lines
1.6 KiB
C++
34 lines
1.6 KiB
C++
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: split-file %s %t
|
|
// RUN: mkdir -p %t/prebuilt_modules
|
|
//
|
|
// RUN: %clang_cc1 -triple %itanium_abi_triple \
|
|
// RUN: -std=c++20 -fprebuilt-module-path=%t/prebuilt-modules \
|
|
// RUN: -emit-module-interface -pthread -DBUILD_MODULE \
|
|
// RUN: %t/mismatching_module.cppm -o \
|
|
// RUN: %t/prebuilt_modules/mismatching_module.pcm
|
|
//
|
|
// RUN: not %clang_cc1 -triple %itanium_abi_triple -std=c++20 \
|
|
// RUN: -fprebuilt-module-path=%t/prebuilt_modules -DCHECK_MISMATCH \
|
|
// RUN: %t/use.cpp 2>&1 | FileCheck %s
|
|
|
|
// Test again with reduced BMI.
|
|
// RUN: %clang_cc1 -triple %itanium_abi_triple \
|
|
// RUN: -std=c++20 -fprebuilt-module-path=%t/prebuilt-modules \
|
|
// RUN: -emit-reduced-module-interface -pthread -DBUILD_MODULE \
|
|
// RUN: %t/mismatching_module.cppm -o \
|
|
// RUN: %t/prebuilt_modules/mismatching_module.pcm
|
|
//
|
|
// RUN: not %clang_cc1 -triple %itanium_abi_triple -std=c++20 \
|
|
// RUN: -fprebuilt-module-path=%t/prebuilt_modules -DCHECK_MISMATCH \
|
|
// RUN: %t/use.cpp 2>&1 | FileCheck %s
|
|
|
|
//--- mismatching_module.cppm
|
|
export module mismatching_module;
|
|
|
|
//--- use.cpp
|
|
import mismatching_module;
|
|
// CHECK: error: POSIX thread support was enabled in precompiled file '{{.*[/|\\\\]}}mismatching_module.pcm' but is currently disabled
|
|
// CHECK-NEXT: precompiled file '{{.*[/|\\\\]}}mismatching_module.pcm' cannot be loaded due to a configuration mismatch with the current compilation
|