================
@@ -127,33 +127,39 @@ struct ModuleFile {
   std::string ModuleFilePath;
 };
 
-bool IsModuleFileUpToDate(PathRef ModuleFilePath,
-                          const PrerequisiteModules &RequisiteModules,
-                          llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS) 
{
+bool IsModuleFileUpToDate(
+    PathRef ModuleFilePath,
+    const PrerequisiteModules &RequisiteModules,
+    const CompilerInvocation &CI,
+    llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS) {
+  CompilerInstance Clang;
+  Clang.setInvocation(std::make_shared<CompilerInvocation>(CI));
+
   IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
       CompilerInstance::createDiagnostics(new DiagnosticOptions());
+  Clang.setDiagnostics(Diags.get());
+
+  HeaderSearchOptions &HSOpts = Clang.getHeaderSearchOpts();
+  RequisiteModules.adjustHeaderSearchOptions(HSOpts);
+  HSOpts.ForceCheckCXX20ModulesInputFiles = true;
+  HSOpts.ValidateASTInputFilesContent = true;
 
-  auto HSOpts = std::make_shared<HeaderSearchOptions>();
-  RequisiteModules.adjustHeaderSearchOptions(*HSOpts);
-  HSOpts->ForceCheckCXX20ModulesInputFiles = true;
-  HSOpts->ValidateASTInputFilesContent = true;
-
-  PCHContainerOperations PCHOperations;
-  std::unique_ptr<ASTUnit> Unit = ASTUnit::LoadFromASTFile(
-      ModuleFilePath.str(), PCHOperations.getRawReader(), ASTUnit::LoadASTOnly,
-      Diags, FileSystemOptions(), std::move(HSOpts),
-      /*LangOpts=*/nullptr, /*OnlyLocalDecls=*/false,
-      /*CaptureDiagnostics=*/CaptureDiagsKind::None,
-      /*AllowASTWithCompilerErrors=*/false, /*UserFilesAreVolatile=*/false,
-      VFS);
-
-  if (!Unit)
+  Clang.getLangOpts().SkipODRCheckInGMF = true;
+  Clang.createPreprocessor(TU_Complete);
+
+  FileManager *FM = Clang.createFileManager(VFS);
+  Clang.createSourceManager(*FM);
+  if (!Clang.createTarget())
     return false;
 
-  auto Reader = Unit->getASTReader();
+  auto Reader = Clang.getASTReader();
----------------
kadircet wrote:

i think we should call `Clang.createASTReader()` first. I don't see any of the 
previous call creating that.

https://github.com/llvm/llvm-project/pull/113879
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to