From b2d079379b6c7b3942d728c9b290ae252f7921c5 Mon Sep 17 00:00:00 2001 From: Wenlei He Date: Sat, 24 Apr 2021 10:37:55 -0700 Subject: [PATCH] [CSSPGO] Explicitly disallow Binary and Compact Binary profile format for CSSPGO CSSPGO only supports text and extended binary profile now. Raw binary does not have the metadata section CSSPGO needs, and Compact binary profile needs special handling for GUID based context names, which is not yet implemented. Disasslow these two format for CSSPGO profile writing to avoid silently generating invalid profiles. Differential Revision: https://reviews.llvm.org/D101300 --- llvm/lib/ProfileData/SampleProfWriter.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/llvm/lib/ProfileData/SampleProfWriter.cpp b/llvm/lib/ProfileData/SampleProfWriter.cpp index 43cfb93..73565f2 100644 --- a/llvm/lib/ProfileData/SampleProfWriter.cpp +++ b/llvm/lib/ProfileData/SampleProfWriter.cpp @@ -776,6 +776,11 @@ SampleProfileWriter::create(std::unique_ptr &OS, std::error_code EC; std::unique_ptr Writer; + // Currently only Text and Extended Binary format are supported for CSSPGO. + if ((FunctionSamples::ProfileIsCS || FunctionSamples::ProfileIsProbeBased) && + (Format == SPF_Binary || Format == SPF_Compact_Binary)) + return sampleprof_error::unsupported_writing_format; + if (Format == SPF_Binary) Writer.reset(new SampleProfileWriterRawBinary(OS)); else if (Format == SPF_Ext_Binary) -- 2.7.4