summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Remarks/YAMLRemarkSerializer.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/llvm/lib/Remarks/YAMLRemarkSerializer.cpp b/llvm/lib/Remarks/YAMLRemarkSerializer.cpp
index 28f9150cb9f..a4d67cc6715 100644
--- a/llvm/lib/Remarks/YAMLRemarkSerializer.cpp
+++ b/llvm/lib/Remarks/YAMLRemarkSerializer.cpp
@@ -153,15 +153,6 @@ 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);
@@ -174,6 +165,20 @@ YAMLRemarkSerializer::metaSerializer(raw_ostream &OS,
return std::make_unique<YAMLMetaSerializer>(OS, ExternalFilename);
}
+void YAMLStrTabRemarkSerializer::emit(const Remark &Remark) {
+ // In standalone mode, for the serializer with a string table, emit the
+ // metadata first and set DidEmitMeta to avoid emitting it again.
+ if (Mode == SerializerMode::Standalone && !DidEmitMeta) {
+ std::unique_ptr<MetaSerializer> MetaSerializer =
+ metaSerializer(OS, /*ExternalFilename=*/None);
+ MetaSerializer->emit();
+ DidEmitMeta = true;
+ }
+
+ // Then do the usual remark emission.
+ YAMLRemarkSerializer::emit(Remark);
+}
+
std::unique_ptr<MetaSerializer> YAMLStrTabRemarkSerializer::metaSerializer(
raw_ostream &OS, Optional<StringRef> ExternalFilename) {
assert(StrTab);
OpenPOWER on IntegriCloud