diff options
Diffstat (limited to 'llvm/lib/Remarks/YAMLRemarkSerializer.cpp')
-rw-r--r-- | llvm/lib/Remarks/YAMLRemarkSerializer.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Remarks/YAMLRemarkSerializer.cpp b/llvm/lib/Remarks/YAMLRemarkSerializer.cpp index 725ac15d7ea..f8ed7407259 100644 --- a/llvm/lib/Remarks/YAMLRemarkSerializer.cpp +++ b/llvm/lib/Remarks/YAMLRemarkSerializer.cpp @@ -149,10 +149,19 @@ template <> struct MappingTraits<Argument> { LLVM_YAML_IS_SEQUENCE_VECTOR(Argument) -YAMLRemarkSerializer::YAMLRemarkSerializer(raw_ostream &OS) - : RemarkSerializer(OS), YAMLOutput(OS, reinterpret_cast<void *>(this)) {} +YAMLRemarkSerializer::YAMLRemarkSerializer(raw_ostream &OS, SerializerMode Mode) + : RemarkSerializer(OS, Mode), YAMLOutput(OS, reinterpret_cast<void *>(this)) {} void YAMLRemarkSerializer::emit(const Remark &Remark) { + // In standalone mode, emit the metadata first and set DidEmitMeta to avoid + // emitting it again. + if (Mode == SerializerMode::Standalone) { + std::unique_ptr<MetaSerializer> MetaSerializer = + metaSerializer(OS, /*ExternalFilename=*/None); + MetaSerializer->emit(); + DidEmitMeta = true; + } + // Again, YAMLTraits expect a non-const object for inputting, but we're not // using that here. auto R = const_cast<remarks::Remark *>(&Remark); |