diff options
Diffstat (limited to 'llvm/lib/Support/SourceMgr.cpp')
-rw-r--r-- | llvm/lib/Support/SourceMgr.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/lib/Support/SourceMgr.cpp b/llvm/lib/Support/SourceMgr.cpp index 2eb2989b..42982b4 100644 --- a/llvm/lib/Support/SourceMgr.cpp +++ b/llvm/lib/Support/SourceMgr.cpp @@ -40,6 +40,17 @@ static const size_t TabStop = 8; unsigned SourceMgr::AddIncludeFile(const std::string &Filename, SMLoc IncludeLoc, std::string &IncludedFile) { + ErrorOr<std::unique_ptr<MemoryBuffer>> NewBufOrErr = + OpenIncludeFile(Filename, IncludedFile); + if (!NewBufOrErr) + return 0; + + return AddNewSourceBuffer(std::move(*NewBufOrErr), IncludeLoc); +} + +ErrorOr<std::unique_ptr<MemoryBuffer>> +SourceMgr::OpenIncludeFile(const std::string &Filename, + std::string &IncludedFile) { IncludedFile = Filename; ErrorOr<std::unique_ptr<MemoryBuffer>> NewBufOrErr = MemoryBuffer::getFile(IncludedFile); @@ -52,10 +63,7 @@ unsigned SourceMgr::AddIncludeFile(const std::string &Filename, NewBufOrErr = MemoryBuffer::getFile(IncludedFile); } - if (!NewBufOrErr) - return 0; - - return AddNewSourceBuffer(std::move(*NewBufOrErr), IncludeLoc); + return NewBufOrErr; } unsigned SourceMgr::FindBufferContainingLoc(SMLoc Loc) const { |