summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Remarks/RemarkParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Remarks/RemarkParser.cpp')
-rw-r--r--llvm/lib/Remarks/RemarkParser.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/llvm/lib/Remarks/RemarkParser.cpp b/llvm/lib/Remarks/RemarkParser.cpp
index 98f65349065..600f415e9b5 100644
--- a/llvm/lib/Remarks/RemarkParser.cpp
+++ b/llvm/lib/Remarks/RemarkParser.cpp
@@ -12,6 +12,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/Remarks/RemarkParser.h"
+#include "BitstreamRemarkParser.h"
#include "YAMLRemarkParser.h"
#include "llvm-c/Remarks.h"
#include "llvm/ADT/STLExtras.h"
@@ -57,8 +58,7 @@ llvm::remarks::createRemarkParser(Format ParserFormat, StringRef Buf) {
std::make_error_code(std::errc::invalid_argument),
"The YAML with string table format requires a parsed string table.");
case Format::Bitstream:
- return createStringError(std::make_error_code(std::errc::invalid_argument),
- "Parsing bitstream remarks is not supported.");
+ return std::make_unique<BitstreamRemarkParser>(Buf);
case Format::Unknown:
return createStringError(std::make_error_code(std::errc::invalid_argument),
"Unknown remark parser format.");
@@ -77,8 +77,7 @@ llvm::remarks::createRemarkParser(Format ParserFormat, StringRef Buf,
case Format::YAMLStrTab:
return std::make_unique<YAMLStrTabRemarkParser>(Buf, std::move(StrTab));
case Format::Bitstream:
- return createStringError(std::make_error_code(std::errc::invalid_argument),
- "Parsing bitstream remarks is not supported.");
+ return std::make_unique<BitstreamRemarkParser>(Buf, std::move(StrTab));
case Format::Unknown:
return createStringError(std::make_error_code(std::errc::invalid_argument),
"Unknown remark parser format.");
@@ -96,8 +95,7 @@ llvm::remarks::createRemarkParserFromMeta(Format ParserFormat, StringRef Buf,
case Format::YAMLStrTab:
return createYAMLParserFromMeta(Buf, std::move(StrTab));
case Format::Bitstream:
- return createStringError(std::make_error_code(std::errc::invalid_argument),
- "Parsing bitstream remarks is not supported.");
+ return createBitstreamParserFromMeta(Buf, std::move(StrTab));
case Format::Unknown:
return createStringError(std::make_error_code(std::errc::invalid_argument),
"Unknown remark parser format.");
@@ -132,6 +130,12 @@ extern "C" LLVMRemarkParserRef LLVMRemarkParserCreateYAML(const void *Buf,
StringRef(static_cast<const char *>(Buf), Size)));
}
+extern "C" LLVMRemarkParserRef LLVMRemarkParserCreateBitstream(const void *Buf,
+ uint64_t Size) {
+ return wrap(new CParser(Format::Bitstream,
+ StringRef(static_cast<const char *>(Buf), Size)));
+}
+
extern "C" LLVMRemarkEntryRef
LLVMRemarkParserGetNext(LLVMRemarkParserRef Parser) {
CParser &TheCParser = *unwrap(Parser);
OpenPOWER on IntegriCloud