[llvm] [NFC][SampleFDO] Re-apply "In text sample prof reader, report more concrete parsing errors for different line types" (PR #155124)

Mingming Liu via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 23 17:06:59 PDT 2025


https://github.com/mingmingl-llvm updated https://github.com/llvm/llvm-project/pull/155124

>From f19f3f75ca3754f8d777665dd4457e3737879e7e Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Thu, 21 Aug 2025 21:42:54 -0700
Subject: [PATCH 1/3] [NFC]In text sample prof reader, report dreport more
 concrete parsing errors for different line types

---
 llvm/lib/ProfileData/SampleProfReader.cpp | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp
index d147222fe2ce6..c4cba62524ed6 100644
--- a/llvm/lib/ProfileData/SampleProfReader.cpp
+++ b/llvm/lib/ProfileData/SampleProfReader.cpp
@@ -357,6 +357,7 @@ std::error_code SampleProfileReaderText::readImpl() {
       uint64_t NumSamples, NumHeadSamples;
       StringRef FName;
       if (!ParseHead(*LineIt, FName, NumSamples, NumHeadSamples)) {
+
         reportError(LineIt.line_number(),
                     "Expected 'mangled_name:NUM:NUM', found " + *LineIt);
         return sampleprof_error::malformed;
@@ -382,9 +383,16 @@ std::error_code SampleProfileReaderText::readImpl() {
       if (!ParseLine(*LineIt, LineTy, Depth, NumSamples, LineOffset,
                      Discriminator, FName, TargetCountMap, FunctionHash,
                      Attributes, IsFlat)) {
-        reportError(LineIt.line_number(),
-                    "Expected 'NUM[.NUM]: NUM[ mangled_name:NUM]*', found " +
-                        *LineIt);
+        switch (LineTy) {
+        case LineType::Metadata:
+          reportError(LineIt.line_number(),
+                      "Cannot parse metadata: " + *LineIt);
+          break;
+        default:
+          reportError(LineIt.line_number(),
+                      "Expected 'NUM[.NUM]: NUM[ mangled_name:NUM]*', found " +
+                          *LineIt);
+        }
         return sampleprof_error::malformed;
       }
       if (LineTy != LineType::Metadata && Depth == DepthMetadata) {

>From 4fd84dbc4eb7553fec9763a0e9007c38df499e34 Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Thu, 21 Aug 2025 21:53:46 -0700
Subject: [PATCH 2/3] undo empty line

---
 llvm/lib/ProfileData/SampleProfReader.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp
index c4cba62524ed6..15eb1d174d6fa 100644
--- a/llvm/lib/ProfileData/SampleProfReader.cpp
+++ b/llvm/lib/ProfileData/SampleProfReader.cpp
@@ -357,7 +357,6 @@ std::error_code SampleProfileReaderText::readImpl() {
       uint64_t NumSamples, NumHeadSamples;
       StringRef FName;
       if (!ParseHead(*LineIt, FName, NumSamples, NumHeadSamples)) {
-
         reportError(LineIt.line_number(),
                     "Expected 'mangled_name:NUM:NUM', found " + *LineIt);
         return sampleprof_error::malformed;

>From bcb3d012f910f4d5c635b76f49eb7e4d5706af2e Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Sat, 23 Aug 2025 16:31:53 -0700
Subject: [PATCH 3/3] initialize LineTy before using it

---
 llvm/lib/ProfileData/SampleProfReader.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp
index 15eb1d174d6fa..12769a391286c 100644
--- a/llvm/lib/ProfileData/SampleProfReader.cpp
+++ b/llvm/lib/ProfileData/SampleProfReader.cpp
@@ -375,7 +375,7 @@ std::error_code SampleProfileReaderText::readImpl() {
       StringRef FName;
       DenseMap<StringRef, uint64_t> TargetCountMap;
       uint32_t Depth, LineOffset, Discriminator;
-      LineType LineTy;
+      LineType LineTy = LineType::BodyProfile;
       uint64_t FunctionHash = 0;
       uint32_t Attributes = 0;
       bool IsFlat = false;



More information about the llvm-commits mailing list