diff options
author | Ivan Murashko <ivan.murashko@gmail.com> | 2024-05-01 09:07:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-01 09:07:57 +0100 |
commit | 9a9cff15a15b103ae1dc1efa98b53901cdda78f1 (patch) | |
tree | 79f036d61ee468006c1cfb42a4e8fcc14698314f /llvm/lib/Bitcode | |
parent | 0c42fa361d57c1f04a1026a83aceec1568baa2f7 (diff) | |
download | llvm-9a9cff15a15b103ae1dc1efa98b53901cdda78f1.zip llvm-9a9cff15a15b103ae1dc1efa98b53901cdda78f1.tar.gz llvm-9a9cff15a15b103ae1dc1efa98b53901cdda78f1.tar.bz2 |
[Modules] Process include files changes (#90319)
There were two diffs that introduced some options useful when you build
modules externally and cannot rely on file modification time as the key
for detecting input file changes:
- [D67249](https://reviews.llvm.org/D67249) introduced the
`-fmodules-validate-input-files-content` option, which allows the use of
file content hash in addition to the modification time.
- [D141632](https://reviews.llvm.org/D141632) propagated the use of
`-fno-pch-timestamps` with Clang modules.
There is a problem when the size of the input file (header) is not
modified but the content is. In this case, Clang cannot detect the file
change when the `-fno-pch-timestamps` option is used. The
`-fmodules-validate-input-files-content` option should help, but there
is an issue with its application: it's not applied when the modification
time is stored as zero that is the case for `-fno-pch-timestamps`.
The issue can be fixed using the same trick that was applied during the
processing of `ForceCheckCXX20ModulesInputFiles`:
```
// When ForceCheckCXX20ModulesInputFiles and ValidateASTInputFilesContent
// enabled, it is better to check the contents of the inputs. Since we can't
// get correct modified time information for inputs from overriden inputs.
if (HSOpts.ForceCheckCXX20ModulesInputFiles && ValidateASTInputFilesContent &&
F.StandardCXXModule && FileChange.Kind == Change::None)
FileChange = HasInputContentChanged(FileChange);
```
The patch suggests the solution similar to the presented above and
includes a LIT test to verify it.
Diffstat (limited to 'llvm/lib/Bitcode')
0 files changed, 0 insertions, 0 deletions