13 clang::FileManager* Files,
14 std::shared_ptr<clang::PCHContainerOperations> PCHContainerOps,
15 clang::DiagnosticConsumer* DiagConsumer)
17 spdlog::debug(
"Processing {}",
file);
19 spdlog::debug(
"cached={}", is_cached_on_disk);
20 if(is_cached_on_disk) {
21 clang::CompilerInstance CI;
22 CI.setInvocation(Invocation);
23 CI.createDiagnostics(DiagConsumer,
false);
24 clang::DiagnosticsEngine* DiagEngine = &CI.getDiagnostics();
25#if INSTANTIATOR_LLVM_MAJOR > 16
26 AST = clang::ASTUnit::LoadFromASTFile((
tmpdir /
file.filename().replace_extension(
"ast")).string(),
27 CI.getPCHContainerReader(),
28 clang::ASTUnit::WhatToLoad::LoadEverything,
29 llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>(DiagEngine),
30 CI.getFileSystemOpts(),
31 CI.getHeaderSearchOptsPtr());
33 AST = clang::ASTUnit::LoadFromASTFile((
tmpdir /
file.filename().replace_extension(
"ast")).string(),
34 CI.getPCHContainerReader(),
35 clang::ASTUnit::WhatToLoad::LoadEverything,
36 llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>(DiagEngine),
37 CI.getFileSystemOpts());
40 AST = clang::ASTUnit::LoadFromCompilerInvocation(Invocation,
41 std::move(PCHContainerOps),
42 clang::CompilerInstance::createDiagnostics(&Invocation->getDiagnosticOpts(),
46 AST->Save((
tmpdir /
file.filename().replace_extension(
"ast")).string());
48 if(!
AST or
AST->getDiagnostics().hasUncompilableErrorOccurred())
return false;