diff options
author | River Riddle <riddleriver@gmail.com> | 2022-02-15 14:32:37 -0800 |
---|---|---|
committer | River Riddle <riddleriver@gmail.com> | 2022-03-03 16:14:03 -0800 |
commit | 81f2f4dfb2922e4f7af8bbfd8b653eda7c1f1339 (patch) | |
tree | bed970abd8c198ed055c62a55420140c33692bfb /llvm/lib/Support/SourceMgr.cpp | |
parent | e865fa75308aa8dc103ed2ac559e678b5531fa30 (diff) | |
download | llvm-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.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 { |