blob: 73cec4fbf9ba7530a7b771d612bf4077ff867947 [file] [log] [blame]
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +00001//===- RemarkSerializer.cpp -----------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file provides tools for serializing remarks.
10//
11//===----------------------------------------------------------------------===//
12
13#include "llvm/Remarks/RemarkSerializer.h"
14#include "llvm/Remarks/YAMLRemarkSerializer.h"
15
16using namespace llvm;
17using namespace llvm::remarks;
18
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000019Expected<std::unique_ptr<RemarkSerializer>>
Francis Visoiu Mistrih5ed3d142019-07-30 16:01:40 +000020remarks::createRemarkSerializer(Format RemarksFormat, SerializerMode Mode,
21 raw_ostream &OS) {
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000022 switch (RemarksFormat) {
23 case Format::Unknown:
24 return createStringError(std::errc::invalid_argument,
25 "Unknown remark serializer format.");
26 case Format::YAML:
Francis Visoiu Mistrih5ed3d142019-07-30 16:01:40 +000027 return llvm::make_unique<YAMLRemarkSerializer>(OS, Mode);
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000028 case Format::YAMLStrTab:
Francis Visoiu Mistrih5ed3d142019-07-30 16:01:40 +000029 return llvm::make_unique<YAMLStrTabRemarkSerializer>(OS, Mode);
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000030 }
31 llvm_unreachable("Unknown remarks::Format enum");
32}
33
Francis Visoiu Mistrihff4b5152019-07-24 19:47:57 +000034Expected<std::unique_ptr<RemarkSerializer>>
Francis Visoiu Mistrih5ed3d142019-07-30 16:01:40 +000035remarks::createRemarkSerializer(Format RemarksFormat, SerializerMode Mode,
36 raw_ostream &OS, remarks::StringTable StrTab) {
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000037 switch (RemarksFormat) {
38 case Format::Unknown:
39 return createStringError(std::errc::invalid_argument,
40 "Unknown remark serializer format.");
41 case Format::YAML:
42 return createStringError(std::errc::invalid_argument,
43 "Unable to use a string table with the yaml "
44 "format. Use 'yaml-strtab' instead.");
45 case Format::YAMLStrTab:
Francis Visoiu Mistrih5ed3d142019-07-30 16:01:40 +000046 return llvm::make_unique<YAMLStrTabRemarkSerializer>(OS, Mode,
47 std::move(StrTab));
Francis Visoiu Mistrihc5cc9ef2019-07-24 16:36:35 +000048 }
49 llvm_unreachable("Unknown remarks::Format enum");
50}