llvm-project/clang/test/Modules/module-pch-different-cache-path.c
Jan Svoboda 78668c822a [clang][modules][pch] Allow loading PCH with different modules cache path
It's useful to be able to load explicitly-built PCH files into an implicit build (e.g. during dependency scanning). That's currently impossible, since the explicitly-built PCH has an empty modules cache path, while the current compilation has (and needs to have) a valid path, triggering an error in the `PCHValidator`.

This patch adds a preprocessor option and command-line flag that can be used to omit this check.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D103802
2021-06-14 11:04:56 +02:00

19 lines
942 B
C

// RUN: rm -rf %t
// RUN: mkdir %t
//
// RUN: %clang_cc1 -x objective-c-header -emit-pch %S/Inputs/pch-typedef.h -o %t/pch-typedef.h.gch \
// RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/one
//
// RUN: not %clang_cc1 -x objective-c -fsyntax-only %s -include-pch %t/pch-typedef.h.gch \
// RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/two 2>&1 \
// RUN: | FileCheck %s -check-prefixes=CHECK-ERROR
//
// RUN: %clang_cc1 -x objective-c -fsyntax-only %s -include-pch %t/pch-typedef.h.gch \
// RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/two 2>&1 -fallow-pch-with-different-modules-cache-path \
// RUN: | FileCheck %s -check-prefixes=CHECK-SUCCESS -allow-empty
pch_int x = 0;
// CHECK-ERROR: PCH was compiled with module cache path '{{.*}}', but the path is currently '{{.*}}'
// CHECK-SUCCESS-NOT: PCH was compiled with module cache path '{{.*}}', but the path is currently '{{.*}}'