diff options
| author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-07-26 20:54:44 +0000 |
|---|---|---|
| committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-07-26 20:54:44 +0000 |
| commit | cdc74e219782ba36b8e8d2ae60adedbca449574f (patch) | |
| tree | 8295c18db61f0e59233e6b92bbb02dfacb5ba4d6 /llvm/lib/Remarks | |
| parent | c0fc24bb8e0745c7c80157f0e41386d7087e842e (diff) | |
| download | bcm5719-llvm-cdc74e219782ba36b8e8d2ae60adedbca449574f.tar.gz bcm5719-llvm-cdc74e219782ba36b8e8d2ae60adedbca449574f.zip | |
Revert "[Remarks] Support parsing remark metadata in the YAML remark parser"
This reverts r367148.
Seems to fail on
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/27768.
llvm-svn: 367151
Diffstat (limited to 'llvm/lib/Remarks')
| -rw-r--r-- | llvm/lib/Remarks/RemarkParser.cpp | 15 | ||||
| -rw-r--r-- | llvm/lib/Remarks/YAMLRemarkParser.cpp | 105 | ||||
| -rw-r--r-- | llvm/lib/Remarks/YAMLRemarkParser.h | 9 |
3 files changed, 0 insertions, 129 deletions
diff --git a/llvm/lib/Remarks/RemarkParser.cpp b/llvm/lib/Remarks/RemarkParser.cpp index 1ff9cf626b6..e7f174ce02c 100644 --- a/llvm/lib/Remarks/RemarkParser.cpp +++ b/llvm/lib/Remarks/RemarkParser.cpp @@ -80,21 +80,6 @@ llvm::remarks::createRemarkParser(Format ParserFormat, StringRef Buf, llvm_unreachable("unhandled ParseFormat"); } -Expected<std::unique_ptr<RemarkParser>> -llvm::remarks::createRemarkParserFromMeta(Format ParserFormat, StringRef Buf, - Optional<ParsedStringTable> StrTab) { - switch (ParserFormat) { - // Depending on the metadata, the format can be either yaml or yaml-strtab, - // regardless of the input argument. - case Format::YAML: - case Format::YAMLStrTab: - return createYAMLParserFromMeta(Buf, std::move(StrTab)); - case Format::Unknown: - return createStringError(std::make_error_code(std::errc::invalid_argument), - "Unknown remark parser format."); - } -} - // Wrapper that holds the state needed to interact with the C API. struct CParser { std::unique_ptr<RemarkParser> TheParser; diff --git a/llvm/lib/Remarks/YAMLRemarkParser.cpp b/llvm/lib/Remarks/YAMLRemarkParser.cpp index fdd059c7037..f677bfc04ce 100644 --- a/llvm/lib/Remarks/YAMLRemarkParser.cpp +++ b/llvm/lib/Remarks/YAMLRemarkParser.cpp @@ -14,7 +14,6 @@ #include "YAMLRemarkParser.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Remarks/RemarkParser.h" -#include "llvm/Support/Endian.h" using namespace llvm; using namespace llvm::remarks; @@ -55,110 +54,6 @@ static SourceMgr setupSM(std::string &LastErrorMessage) { return SM; } -// Parse the magic number. This function returns true if this represents remark -// metadata, false otherwise. -static Expected<bool> parseMagic(StringRef &Buf) { - if (!Buf.consume_front(remarks::Magic)) - return false; - - if (Buf.size() < 1 || !Buf.consume_front(StringRef("\0", 1))) - return createStringError(std::errc::illegal_byte_sequence, - "Expecting \\0 after magic number."); - return true; -} - -static Expected<uint64_t> parseVersion(StringRef &Buf) { - if (Buf.size() < sizeof(uint64_t)) - return createStringError(std::errc::illegal_byte_sequence, - "Expecting version number."); - - uint64_t Version = - support::endian::read<uint64_t, support::little, support::unaligned>( - Buf.data()); - if (Version != remarks::Version) - return createStringError( - std::errc::illegal_byte_sequence, - "Mismatching remark version. Got %u, expected %u.", Version, - remarks::Version); - Buf = Buf.drop_front(sizeof(uint64_t)); - return Version; -} - -static Expected<uint64_t> parseStrTabSize(StringRef &Buf) { - if (Buf.size() < sizeof(uint64_t)) - return createStringError(std::errc::illegal_byte_sequence, - "Expecting string table size."); - uint64_t StrTabSize = - support::endian::read<uint64_t, support::little, support::unaligned>( - Buf.data()); - Buf = Buf.drop_front(sizeof(uint64_t)); - return StrTabSize; -} - -static Expected<ParsedStringTable> parseStrTab(StringRef &Buf, - uint64_t StrTabSize) { - if (Buf.size() < StrTabSize) - return createStringError(std::errc::illegal_byte_sequence, - "Expecting string table."); - - // Attach the string table to the parser. - ParsedStringTable Result(StringRef(Buf.data(), StrTabSize)); - Buf = Buf.drop_front(StrTabSize); - return Result; -} - -Expected<std::unique_ptr<YAMLRemarkParser>> -remarks::createYAMLParserFromMeta(StringRef Buf, - Optional<ParsedStringTable> StrTab) { - // We now have a magic number. The metadata has to be correct. - Expected<bool> isMeta = parseMagic(Buf); - if (!isMeta) - return isMeta.takeError(); - // If it's not recognized as metadata, roll back. - std::unique_ptr<MemoryBuffer> SeparateBuf; - if (*isMeta) { - Expected<uint64_t> Version = parseVersion(Buf); - if (!Version) - return Version.takeError(); - - Expected<uint64_t> StrTabSize = parseStrTabSize(Buf); - if (!StrTabSize) - return StrTabSize.takeError(); - - // If the size of string table is not 0, try to build one. - if (*StrTabSize != 0) { - if (StrTab) - return createStringError(std::errc::illegal_byte_sequence, - "String table already provided."); - Expected<ParsedStringTable> MaybeStrTab = parseStrTab(Buf, *StrTabSize); - if (!MaybeStrTab) - return MaybeStrTab.takeError(); - StrTab = std::move(*MaybeStrTab); - } - // If it starts with "---", there is no external file. - if (!Buf.startswith("---")) { - // At this point, we expect Buf to contain the external file path. - // Try to open the file and start parsing from there. - ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrErr = - MemoryBuffer::getFile(Buf); - if (std::error_code EC = BufferOrErr.getError()) - return errorCodeToError(EC); - - // Keep the buffer alive. - SeparateBuf = std::move(*BufferOrErr); - Buf = SeparateBuf->getBuffer(); - } - } - - std::unique_ptr<YAMLRemarkParser> Result = - StrTab - ? llvm::make_unique<YAMLStrTabRemarkParser>(Buf, std::move(*StrTab)) - : llvm::make_unique<YAMLRemarkParser>(Buf); - if (SeparateBuf) - Result->SeparateBuf = std::move(SeparateBuf); - return std::move(Result); -} - YAMLRemarkParser::YAMLRemarkParser(StringRef Buf) : YAMLRemarkParser(Buf, None) {} diff --git a/llvm/lib/Remarks/YAMLRemarkParser.h b/llvm/lib/Remarks/YAMLRemarkParser.h index ff03abbb576..e8f0edc50f4 100644 --- a/llvm/lib/Remarks/YAMLRemarkParser.h +++ b/llvm/lib/Remarks/YAMLRemarkParser.h @@ -18,7 +18,6 @@ #include "llvm/Remarks/Remark.h" #include "llvm/Remarks/RemarkParser.h" #include "llvm/Support/Error.h" -#include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/SourceMgr.h" #include "llvm/Support/YAMLParser.h" #include "llvm/Support/YAMLTraits.h" @@ -59,9 +58,6 @@ struct YAMLRemarkParser : public RemarkParser { yaml::Stream Stream; /// Iterator in the YAML stream. yaml::document_iterator YAMLIt; - /// If we parse remark metadata in separate mode, we need to open a new file - /// and parse that. - std::unique_ptr<MemoryBuffer> SeparateBuf; YAMLRemarkParser(StringRef Buf); @@ -108,11 +104,6 @@ protected: /// Parse one value to a string. Expected<StringRef> parseStr(yaml::KeyValueNode &Node) override; }; - -Expected<std::unique_ptr<YAMLRemarkParser>> -createYAMLParserFromMeta(StringRef Buf, - Optional<ParsedStringTable> StrTab = None); - } // end namespace remarks } // end namespace llvm |

