[llvm] [memprof] Add YAML read/write support to llvm-profdata (PR #118915)
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 6 08:19:11 PST 2024
================
@@ -755,6 +755,36 @@ Error RawMemProfReader::readNextRecord(
return MemProfReader::readNextRecord(GuidRecord, IdToFrameCallback);
}
+Expected<std::unique_ptr<YAMLMemProfReader>>
+YAMLMemProfReader::create(const Twine &Path) {
+ auto BufferOr = MemoryBuffer::getFileOrSTDIN(Path);
+ if (std::error_code EC = BufferOr.getError())
+ return report(errorCodeToError(EC), Path.getSingleStringRef());
+
+ std::unique_ptr<MemoryBuffer> Buffer(BufferOr.get().release());
+ return create(std::move(Buffer));
+}
+
+Expected<std::unique_ptr<YAMLMemProfReader>>
+YAMLMemProfReader::create(std::unique_ptr<MemoryBuffer> Buffer) {
+ std::unique_ptr<YAMLMemProfReader> Reader(new YAMLMemProfReader());
+ Reader->parse(Buffer->getBuffer());
+ return std::move(Reader);
+}
+
+bool YAMLMemProfReader::hasFormat(const StringRef Path) {
+ auto BufferOr = MemoryBuffer::getFileOrSTDIN(Path);
+ if (!BufferOr)
+ return false;
+
+ std::unique_ptr<MemoryBuffer> Buffer(BufferOr.get().release());
+ return hasFormat(*Buffer);
+}
+
+bool YAMLMemProfReader::hasFormat(const MemoryBuffer &Buffer) {
+ return Buffer.getBuffer().starts_with("---");
----------------
teresajohnson wrote:
Is this specific enough of a check? Would this give a false positive for other Yaml files?
https://github.com/llvm/llvm-project/pull/118915
More information about the llvm-commits
mailing list