diff options
Diffstat (limited to 'llvm/lib/Remarks/RemarkFormat.cpp')
-rw-r--r-- | llvm/lib/Remarks/RemarkFormat.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Remarks/RemarkFormat.cpp b/llvm/lib/Remarks/RemarkFormat.cpp index f2d0331ec6a8..5006421a3c63 100644 --- a/llvm/lib/Remarks/RemarkFormat.cpp +++ b/llvm/lib/Remarks/RemarkFormat.cpp @@ -12,6 +12,7 @@ #include "llvm/Remarks/RemarkFormat.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/Remarks/BitstreamRemarkContainer.h" using namespace llvm; using namespace llvm::remarks; @@ -30,3 +31,17 @@ Expected<Format> llvm::remarks::parseFormat(StringRef FormatStr) { return Result; } + +Expected<Format> llvm::remarks::magicToFormat(StringRef MagicStr) { + auto Result = + StringSwitch<Format>(MagicStr) + .StartsWith("--- ", Format::YAML) // This is only an assumption. + .StartsWith(remarks::Magic, Format::YAMLStrTab) + .StartsWith(remarks::ContainerMagic, Format::Bitstream) + .Default(Format::Unknown); + + if (Result == Format::Unknown) + return createStringError(std::make_error_code(std::errc::invalid_argument), + "Unknown remark magic: '%s'", MagicStr.data()); + return Result; +} |