2525#include " swift/Strings.h"
2626#include " clang/CAS/IncludeTree.h"
2727#include " llvm/CAS/CASProvidingFileSystem.h"
28- #include " llvm/CAS/CachingOnDiskFileSystem.h"
2928#include " llvm/Config/config.h"
3029#include " llvm/Support/FileSystem.h"
3130#include " llvm/Support/Path.h"
@@ -602,13 +601,16 @@ swift::dependencies::registerBackDeployLibraries(
602601}
603602
604603SwiftDependencyTracker::SwiftDependencyTracker (
605- llvm::cas::CachingOnDiskFileSystem &FS , llvm::PrefixMapper *Mapper,
604+ std::shared_ptr< llvm::cas::ObjectStore> CAS , llvm::PrefixMapper *Mapper,
606605 const CompilerInvocation &CI)
607- : FS(FS.createProxyFS() ), Mapper(Mapper) {
606+ : CAS(CAS ), Mapper(Mapper) {
608607 auto &SearchPathOpts = CI.getSearchPathOptions ();
609608
609+ FS = llvm::cas::createCASProvidingFileSystem (
610+ CAS, llvm::vfs::createPhysicalFileSystem ());
611+
610612 auto addCommonFile = [&](StringRef path) {
611- auto file = FS. openFileForRead (path);
613+ auto file = FS-> openFileForRead (path);
612614 if (!file)
613615 return ;
614616 auto status = (*file)->status ();
@@ -679,7 +681,7 @@ SwiftDependencyTracker::createTreeFromDependencies() {
679681 llvm::SmallVector<clang::cas::IncludeTree::FileList::FileEntry> Files;
680682 for (auto &file : TrackedFiles) {
681683 auto includeTreeFile = clang::cas::IncludeTree::File::create (
682- FS-> getCAS () , file.first , file.second .FileRef );
684+ *CAS , file.first , file.second .FileRef );
683685 if (!includeTreeFile) {
684686 return llvm::createStringError (" CASFS createTree failed for " +
685687 file.first + " : " +
@@ -691,7 +693,7 @@ SwiftDependencyTracker::createTreeFromDependencies() {
691693 }
692694
693695 auto includeTreeList =
694- clang::cas::IncludeTree::FileList::create (FS-> getCAS () , Files, {});
696+ clang::cas::IncludeTree::FileList::create (*CAS , Files, {});
695697 if (!includeTreeList)
696698 return llvm::createStringError (" casfs include-tree filelist error: " +
697699 toString (includeTreeList.takeError ()));
@@ -719,14 +721,8 @@ bool SwiftDependencyScanningService::setupCachingDependencyScanningService(
719721 CAS = Instance.getSharedCASInstance ();
720722 ActionCache = Instance.getSharedCacheInstance ();
721723
722- auto CachingFS =
723- llvm::cas::createCachingOnDiskFileSystem (Instance.getObjectStore ());
724- if (!CachingFS) {
725- Instance.getDiags ().diagnose (SourceLoc (), diag::error_cas_fs_creation,
726- toString (CachingFS.takeError ()));
727- return true ;
728- }
729- CacheFS = std::move (*CachingFS);
724+ CacheFS = llvm::cas::createCASProvidingFileSystem (
725+ CAS, llvm::vfs::createPhysicalFileSystem ());
730726
731727 // Setup prefix mapping.
732728 auto &ScannerPrefixMapper =
@@ -744,19 +740,14 @@ bool SwiftDependencyScanningService::setupCachingDependencyScanningService(
744740 Mapper->sort ();
745741 }
746742
747- UseClangIncludeTree =
748- Instance.getInvocation ().getClangImporterOptions ().UseClangIncludeTree ;
749743 const clang::tooling::dependencies::ScanningOutputFormat ClangScanningFormat =
750- UseClangIncludeTree
751- ? clang::tooling::dependencies::ScanningOutputFormat::FullIncludeTree
752- : clang::tooling::dependencies::ScanningOutputFormat::FullTree;
744+ clang::tooling::dependencies::ScanningOutputFormat::FullIncludeTree;
753745
754746 ClangScanningService.emplace (
755747 clang::tooling::dependencies::ScanningMode::DependencyDirectivesScan,
756- ClangScanningFormat,
757- Instance.getInvocation ().getCASOptions ().CASOpts ,
748+ ClangScanningFormat, Instance.getInvocation ().getCASOptions ().CASOpts ,
758749 Instance.getSharedCASInstance (), Instance.getSharedCacheInstance (),
759- UseClangIncludeTree ? nullptr : CacheFS ,
750+ /* CachingOnDiskFileSystem= */ nullptr ,
760751 // The current working directory optimization (off by default)
761752 // should not impact CAS. We set the optization to all to be
762753 // consistent with the non-CAS case.
0 commit comments