xref: /llvm-project/llvm/lib/Remarks/RemarkSerializer.cpp (revision 77383d83eb3fd5db26f985d7a9404d7a00f86bc0)
1c5cc9efaSFrancis Visoiu Mistrih //===- RemarkSerializer.cpp -----------------------------------------------===//
2c5cc9efaSFrancis Visoiu Mistrih //
3c5cc9efaSFrancis Visoiu Mistrih // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4c5cc9efaSFrancis Visoiu Mistrih // See https://llvm.org/LICENSE.txt for license information.
5c5cc9efaSFrancis Visoiu Mistrih // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6c5cc9efaSFrancis Visoiu Mistrih //
7c5cc9efaSFrancis Visoiu Mistrih //===----------------------------------------------------------------------===//
8c5cc9efaSFrancis Visoiu Mistrih //
9c5cc9efaSFrancis Visoiu Mistrih // This file provides tools for serializing remarks.
10c5cc9efaSFrancis Visoiu Mistrih //
11c5cc9efaSFrancis Visoiu Mistrih //===----------------------------------------------------------------------===//
12c5cc9efaSFrancis Visoiu Mistrih 
13c5cc9efaSFrancis Visoiu Mistrih #include "llvm/Remarks/RemarkSerializer.h"
1484e80979SFrancis Visoiu Mistrih #include "llvm/Remarks/BitstreamRemarkSerializer.h"
15c5cc9efaSFrancis Visoiu Mistrih #include "llvm/Remarks/YAMLRemarkSerializer.h"
16c5cc9efaSFrancis Visoiu Mistrih 
17c5cc9efaSFrancis Visoiu Mistrih using namespace llvm;
18c5cc9efaSFrancis Visoiu Mistrih using namespace llvm::remarks;
19c5cc9efaSFrancis Visoiu Mistrih 
20ff4b515aSFrancis Visoiu Mistrih Expected<std::unique_ptr<RemarkSerializer>>
createRemarkSerializer(Format RemarksFormat,SerializerMode Mode,raw_ostream & OS)215ed3d146SFrancis Visoiu Mistrih remarks::createRemarkSerializer(Format RemarksFormat, SerializerMode Mode,
225ed3d146SFrancis Visoiu Mistrih                                 raw_ostream &OS) {
23c5cc9efaSFrancis Visoiu Mistrih   switch (RemarksFormat) {
24c5cc9efaSFrancis Visoiu Mistrih   case Format::Unknown:
25c5cc9efaSFrancis Visoiu Mistrih     return createStringError(std::errc::invalid_argument,
26c5cc9efaSFrancis Visoiu Mistrih                              "Unknown remark serializer format.");
27c5cc9efaSFrancis Visoiu Mistrih   case Format::YAML:
280eaee545SJonas Devlieghere     return std::make_unique<YAMLRemarkSerializer>(OS, Mode);
29c5cc9efaSFrancis Visoiu Mistrih   case Format::YAMLStrTab:
300eaee545SJonas Devlieghere     return std::make_unique<YAMLStrTabRemarkSerializer>(OS, Mode);
3184e80979SFrancis Visoiu Mistrih   case Format::Bitstream:
320eaee545SJonas Devlieghere     return std::make_unique<BitstreamRemarkSerializer>(OS, Mode);
33c5cc9efaSFrancis Visoiu Mistrih   }
34c5cc9efaSFrancis Visoiu Mistrih   llvm_unreachable("Unknown remarks::Format enum");
35c5cc9efaSFrancis Visoiu Mistrih }
36c5cc9efaSFrancis Visoiu Mistrih 
37ff4b515aSFrancis Visoiu Mistrih Expected<std::unique_ptr<RemarkSerializer>>
createRemarkSerializer(Format RemarksFormat,SerializerMode Mode,raw_ostream & OS,remarks::StringTable StrTab)385ed3d146SFrancis Visoiu Mistrih remarks::createRemarkSerializer(Format RemarksFormat, SerializerMode Mode,
395ed3d146SFrancis Visoiu Mistrih                                 raw_ostream &OS, remarks::StringTable StrTab) {
40c5cc9efaSFrancis Visoiu Mistrih   switch (RemarksFormat) {
41c5cc9efaSFrancis Visoiu Mistrih   case Format::Unknown:
42c5cc9efaSFrancis Visoiu Mistrih     return createStringError(std::errc::invalid_argument,
43c5cc9efaSFrancis Visoiu Mistrih                              "Unknown remark serializer format.");
44c5cc9efaSFrancis Visoiu Mistrih   case Format::YAML:
45*77383d83SFrancis Visoiu Mistrih     return std::make_unique<YAMLRemarkSerializer>(OS, Mode, std::move(StrTab));
46c5cc9efaSFrancis Visoiu Mistrih   case Format::YAMLStrTab:
470eaee545SJonas Devlieghere     return std::make_unique<YAMLStrTabRemarkSerializer>(OS, Mode,
485ed3d146SFrancis Visoiu Mistrih                                                         std::move(StrTab));
4984e80979SFrancis Visoiu Mistrih   case Format::Bitstream:
500eaee545SJonas Devlieghere     return std::make_unique<BitstreamRemarkSerializer>(OS, Mode,
5184e80979SFrancis Visoiu Mistrih                                                        std::move(StrTab));
52c5cc9efaSFrancis Visoiu Mistrih   }
53c5cc9efaSFrancis Visoiu Mistrih   llvm_unreachable("Unknown remarks::Format enum");
54c5cc9efaSFrancis Visoiu Mistrih }
55