[clang] [llvm] [mlir] [support] Use VFS in `SourceMgr` for loading includes (PR #162903)

Hideto Ueno via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 21 10:15:03 PDT 2025


================
@@ -378,8 +378,10 @@ struct SourceMgrDiagnosticHandlerImpl {
     }
 
     // Otherwise, try to load the source file.
-    std::string ignored;
-    unsigned id = mgr.AddIncludeFile(std::string(filename), SMLoc(), ignored);
+    auto bufferOrErr = llvm::MemoryBuffer::getFile(filename);
+    if (!bufferOrErr)
+      return 0;
+    unsigned id = mgr.AddNewSourceBuffer(std::move(*bufferOrErr), SMLoc());
     filenameToBufId[filename] = id;
----------------
uenoku wrote:

mlir/lib/IR/Diagnostics.cpp specifically. AddIncludeFile uses [OpenIncludeFile](https://github.com/llvm/llvm-project/blob/8dbc1527f7ad4197dfff8ea598634a8063bb6083/llvm/lib/Support/SourceMgr.cpp#L62) which [searches](https://github.com/llvm/llvm-project/blob/8dbc1527f7ad4197dfff8ea598634a8063bb6083/llvm/lib/Support/SourceMgr.cpp#L79-L85.) files under include directories. I understand the intention of the PR but the change in mlir/lib/IR/Diagnostics.cpp looks rather unrelated to VFS. I think AddIncludeFile also uses VFS now (https://github.com/llvm/llvm-project/pull/163862) so I don't think this change is necessary. Maybe I'm missing something?  


Note that setting setVirtualFileSystem(llvm::vfs::getRealFileSystem()) didn't fix our issue. 

https://github.com/llvm/llvm-project/pull/162903


More information about the llvm-commits mailing list