Change ASTFileSignature from a random 32-bit number to the hash of the
PCM content.
- Move definition ASTFileSignature to Basic/Module.h so Module and
ASTSourceDescriptor can use it.
- Change the signature from uint64_t to std::array<uint32_t,5>.
- Stop using (saving/reading) the size and modification time of PCM
files when there is a valid SIGNATURE.
- Add UNHASHED_CONTROL_BLOCK, and use it to store the SIGNATURE record
and other records that shouldn't affect the hash. Because implicit
modules reuses the same file for multiple levels of -Werror, this
includes DIAGNOSTIC_OPTIONS and DIAG_PRAGMA_MAPPINGS.
This helps to solve a PCH + implicit Modules dependency issue: PCH files
are handled by the external build system, whereas implicit modules are
handled by internal compiler build system. This prevents invalidating a
PCH when the compiler overwrites a PCM file with the same content
(modulo the diagnostic differences).
Design and original patch by Manman Ren!
llvm-svn: 297655
51 lines
2.0 KiB
Matlab
51 lines
2.0 KiB
Matlab
|
|
@import DependsOnModule;
|
|
|
|
// RUN: rm -rf %t %t-obj
|
|
// RUN: %clang_cc1 -w -Wunused -fmodules -fmodule-format=raw -fimplicit-module-maps -fdisable-module-hash -fmodules-cache-path=%t -F %S/Inputs -DBLARG -DWIBBLE=WOBBLE -fmodule-feature myfeature %s
|
|
// RUN: %clang_cc1 -module-file-info %t/DependsOnModule.pcm | FileCheck %s
|
|
// RUN: %clang_cc1 -module-file-info %t/DependsOnModule.pcm | FileCheck %s --check-prefix=RAW
|
|
|
|
// RUN: %clang_cc1 -w -Wunused -fmodules -fmodule-format=obj -fimplicit-module-maps -fdisable-module-hash -fmodules-cache-path=%t-obj -F %S/Inputs -DBLARG -DWIBBLE=WOBBLE -fmodule-feature myfeature %s
|
|
// RUN: %clang_cc1 -module-file-info %t-obj/DependsOnModule.pcm | FileCheck %s
|
|
// RUN: %clang_cc1 -module-file-info %t-obj/DependsOnModule.pcm | FileCheck %s --check-prefix=OBJ
|
|
|
|
// RAW: Module format: raw
|
|
// OBJ: Module format: obj
|
|
// CHECK: Generated by this Clang:
|
|
|
|
// CHECK: Module name: DependsOnModule
|
|
// CHECK: Module map file: {{.*}}DependsOnModule.framework{{[/\\]}}module.map
|
|
|
|
// CHECK: Language options:
|
|
// CHECK: C99: Yes
|
|
// CHECK: Objective-C 1: Yes
|
|
// CHECK: modules extension to C: Yes
|
|
// CHECK: Module features:
|
|
// CHECK: myfeature
|
|
|
|
// CHECK: Target options:
|
|
// CHECK: Triple:
|
|
// CHECK: CPU:
|
|
// CHECK: ABI:
|
|
|
|
// CHECK: Header search options:
|
|
// CHECK: System root [-isysroot=]: '/'
|
|
// CHECK: Resource dir [ -resource-dir=]: '{{.*}}clang{{.*}}'
|
|
// CHECK: Use builtin include directories [-nobuiltininc]: Yes
|
|
// CHECK: Use standard system include directories [-nostdinc]: No
|
|
// CHECK: Use standard C++ include directories [-nostdinc++]: Yes
|
|
// CHECK: Use libc++ (rather than libstdc++) [-stdlib=]:
|
|
|
|
// CHECK: Preprocessor options:
|
|
// CHECK: Uses compiler/target-specific predefines [-undef]: Yes
|
|
// CHECK: Uses detailed preprocessing record (for indexing): No
|
|
// CHECK: Predefined macros:
|
|
// CHECK: -DBLARG
|
|
// CHECK: -DWIBBLE=WOBBLE
|
|
|
|
// CHECK: Diagnostic options:
|
|
// CHECK: IgnoreWarnings: Yes
|
|
// CHECK: Diagnostic flags:
|
|
// CHECK: -Wunused
|