71910784b3
When there is an error introduced by #include-ing a file we should be able to hit the disk (in cling's context) the next time. The user could fix it in the meanwhile. Newer clang supports a flag which can be used to mark the user files as volatile. This means that the file stat will be invalidated, causing clang to hit the disk and fetch the new content of the FileEntry. The complication comes from the fact that when the file size of the file entry is invalidated the cache in the SourceManager is not syncronized, thus clang issued an error. The patch in clang checks if the file size == 0 and the modification time == 0 this means that we are in cling's context and have to sync the cache and continue with no errors. This fixes an issue exposed by Jerome's implementation. Before we removed the entire FileEntry to achieve the same behavior, however the SourceManager kept the reference to it. This leads to seg faults when iterating over the included files (eg. .files or .storeState) |
||
---|---|---|
.. | ||
clang_diags.diff | ||
clang_multi_parsers.diff | ||
clang_root_autoloading_fwd_declares.diff | ||
clang_SourceManager_invalidPCHSourceFiles.diff | ||
clang_SourceManager_uncachefiles.diff | ||
clang-ASTReaderDecl-friendDeclBug.diff | ||
clang-CodeGen.diff | ||
clang-Decl-clearLinkageCache.diff | ||
clang-HeaderSearch-cygwin.diff | ||
clang-ModuleBuilder-ConvertType.diff | ||
clang-Parser-Multiple-AndActOnEndOfTU.diff | ||
clang-Sema-enable_ActOnEndOfTU_cling.diff | ||
clang-ToolChains-Mageia.diff | ||
cleanup_template_ids.diff | ||
llvm-dso_handle.diff | ||
llvm-DyLib-from-handle.diff | ||
llvm-lib-ROOT-autoload-missing-symbol-non-function.diff | ||
llvm-Makefile.diff | ||
llvm-PathMagicDLL.diff | ||
llvm-test-Makefile.diff | ||
llvm-tools-CMakeLists.txt.diff | ||
llvm-tools-Makefile.diff |