aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/SourceMgr.cpp
diff options
context:
space:
mode:
authorRiver Riddle <riddleriver@gmail.com>2022-02-15 14:32:37 -0800
committerRiver Riddle <riddleriver@gmail.com>2022-03-03 16:14:03 -0800
commit81f2f4dfb2922e4f7af8bbfd8b653eda7c1f1339 (patch)
treebed970abd8c198ed055c62a55420140c33692bfb /llvm/lib/Support/SourceMgr.cpp
parente865fa75308aa8dc103ed2ac559e678b5531fa30 (diff)
downloadllvm-81f2f4dfb2922e4f7af8bbfd8b653eda7c1f1339.zip
llvm-81f2f4dfb2922e4f7af8bbfd8b653eda7c1f1339.tar.gz
llvm-81f2f4dfb2922e4f7af8bbfd8b653eda7c1f1339.tar.bz2
[PDLL] Add support for tablegen includes and importing ODS information
This commit adds support for processing tablegen include files, and importing various information from ODS. This includes operations, attribute+type constraints, attribute/operation/type interfaces, etc. This will allow for much more robust tooling, and also allows for referencing ODS constructs directly within PDLL (imported interfaces can be used as constraints, operation result names can be used for member access, etc). Differential Revision: https://reviews.llvm.org/D119900
Diffstat (limited to 'llvm/lib/Support/SourceMgr.cpp')
-rw-r--r--llvm/lib/Support/SourceMgr.cpp16
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 {