Modules: Use hash of PCM content for SIGNATURE
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! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297655 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/AST/ExternalASTSource.h 3 additions, 3 deletionsinclude/clang/AST/ExternalASTSource.h
- include/clang/Basic/Module.h 12 additions, 2 deletionsinclude/clang/Basic/Module.h
- include/clang/Driver/CC1Options.td 2 additions, 0 deletionsinclude/clang/Driver/CC1Options.td
- include/clang/Frontend/PCHContainerOperations.h 2 additions, 1 deletioninclude/clang/Frontend/PCHContainerOperations.h
- include/clang/Lex/HeaderSearchOptions.h 4 additions, 2 deletionsinclude/clang/Lex/HeaderSearchOptions.h
- include/clang/Serialization/ASTBitCodes.h 20 additions, 9 deletionsinclude/clang/Serialization/ASTBitCodes.h
- include/clang/Serialization/ASTReader.h 17 additions, 2 deletionsinclude/clang/Serialization/ASTReader.h
- include/clang/Serialization/ASTWriter.h 20 additions, 9 deletionsinclude/clang/Serialization/ASTWriter.h
- include/clang/Serialization/Module.h 3 additions, 4 deletionsinclude/clang/Serialization/Module.h
- lib/Basic/Module.cpp 1 addition, 1 deletionlib/Basic/Module.cpp
- lib/CodeGen/CGDebugInfo.cpp 5 additions, 1 deletionlib/CodeGen/CGDebugInfo.cpp
- lib/CodeGen/ObjectFilePCHContainerOperations.cpp 7 additions, 2 deletionslib/CodeGen/ObjectFilePCHContainerOperations.cpp
- lib/Frontend/ASTUnit.cpp 2 additions, 2 deletionslib/Frontend/ASTUnit.cpp
- lib/Frontend/CompilerInstance.cpp 3 additions, 1 deletionlib/Frontend/CompilerInstance.cpp
- lib/Frontend/CompilerInvocation.cpp 1 addition, 0 deletionslib/Frontend/CompilerInvocation.cpp
- lib/Serialization/ASTReader.cpp 157 additions, 42 deletionslib/Serialization/ASTReader.cpp
- lib/Serialization/ASTWriter.cpp 92 additions, 58 deletionslib/Serialization/ASTWriter.cpp
- lib/Serialization/GeneratePCH.cpp 1 addition, 1 deletionlib/Serialization/GeneratePCH.cpp
- lib/Serialization/GlobalModuleIndex.cpp 66 additions, 10 deletionslib/Serialization/GlobalModuleIndex.cpp
- test/Modules/diagnostic-options-out-of-date.m 10 additions, 0 deletionstest/Modules/diagnostic-options-out-of-date.m
Loading
Please register or sign in to comment