Files
llvm-project/clang/test/Modules/mismatch-diagnostics.cpp
Cyndy Ishida 5089f63460 [clang][modules] Diagnose config mismatches more generally from precompiled files (#174260)
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
2026-01-05 12:06:24 -08:00

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