1 //===- 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/BitstreamRemarkSerializer.h" 15 #include "llvm/Remarks/YAMLRemarkSerializer.h" 16 17 using namespace llvm; 18 using namespace llvm::remarks; 19 20 Expected<std::unique_ptr<RemarkSerializer>> 21 remarks::createRemarkSerializer(Format RemarksFormat, SerializerMode Mode, 22 raw_ostream &OS) { 23 switch (RemarksFormat) { 24 case Format::Unknown: 25 return createStringError(std::errc::invalid_argument, 26 "Unknown remark serializer format."); 27 case Format::YAML: 28 return std::make_unique<YAMLRemarkSerializer>(OS, Mode); 29 case Format::YAMLStrTab: 30 return std::make_unique<YAMLStrTabRemarkSerializer>(OS, Mode); 31 case Format::Bitstream: 32 return std::make_unique<BitstreamRemarkSerializer>(OS, Mode); 33 } 34 llvm_unreachable("Unknown remarks::Format enum"); 35 } 36 37 Expected<std::unique_ptr<RemarkSerializer>> 38 remarks::createRemarkSerializer(Format RemarksFormat, SerializerMode Mode, 39 raw_ostream &OS, remarks::StringTable StrTab) { 40 switch (RemarksFormat) { 41 case Format::Unknown: 42 return createStringError(std::errc::invalid_argument, 43 "Unknown remark serializer format."); 44 case Format::YAML: 45 return std::make_unique<YAMLRemarkSerializer>(OS, Mode, std::move(StrTab)); 46 case Format::YAMLStrTab: 47 return std::make_unique<YAMLStrTabRemarkSerializer>(OS, Mode, 48 std::move(StrTab)); 49 case Format::Bitstream: 50 return std::make_unique<BitstreamRemarkSerializer>(OS, Mode, 51 std::move(StrTab)); 52 } 53 llvm_unreachable("Unknown remarks::Format enum"); 54 } 55