[llvm-branch-commits] [llvm] 1b1af5a - Revert "[llvm-profgen] Support [buildid:]0xaddr format in perfscript input (#…"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun May 3 13:45:30 PDT 2026


Author: Thurston Dang
Date: 2026-05-03T13:45:25-07:00
New Revision: 1b1af5addfd3b1d4dda453a6ffde411975268559

URL: https://github.com/llvm/llvm-project/commit/1b1af5addfd3b1d4dda453a6ffde411975268559
DIFF: https://github.com/llvm/llvm-project/commit/1b1af5addfd3b1d4dda453a6ffde411975268559.diff

LOG: Revert "[llvm-profgen] Support [buildid:]0xaddr format in perfscript input (#…"

This reverts commit 8f46a9db2fd043c790a2eb579196c71778884053.

Added: 
    

Modified: 
    llvm/tools/llvm-profgen/PerfReader.cpp

Removed: 
    llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript
    llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript
    llvm/test/tools/llvm-profgen/filter-build-id.test


################################################################################
diff  --git a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript b/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript
deleted file mode 100644
index 9dbd2725c8e4d..0000000000000
--- a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript
+++ /dev/null
@@ -1,11 +0,0 @@
-2
-	          aabb1122:4005dc
-	          aabb1122:400634
-	          aabb1122:400684
-	    7f68c5788793
- aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc
-2
-	          aabb1122:4005b0
-	          aabb1122:400684
-	    7f68c5788793
- aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0

diff  --git a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript b/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript
deleted file mode 100644
index fdc5c721b91a6..0000000000000
--- a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript
+++ /dev/null
@@ -1,9 +0,0 @@
-	          aabb1122:4005dc
-	          aabb1122:400634
-	          aabb1122:400684
-	    7f68c5788793
- aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc
-	          aabb1122:4005b0
-	          aabb1122:400684
-	    7f68c5788793
- aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0

diff  --git a/llvm/test/tools/llvm-profgen/filter-build-id.test b/llvm/test/tools/llvm-profgen/filter-build-id.test
deleted file mode 100644
index 498d3b8f7ba4d..0000000000000
--- a/llvm/test/tools/llvm-profgen/filter-build-id.test
+++ /dev/null
@@ -1,57 +0,0 @@
-; REQUIRES: x86_64-linux
-; Test that [buildid:]0xaddr format is correctly parsed in hybrid perfscript
-; input. Both callstack frames and LBR entries may carry buildid prefixes.
-
-;; Test 1: Hybrid perfscript with buildid prefix on callstack frames and
-;; LBR entries, using --filter-build-id to match "aabb1122".
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/buildid-cs-noprobe.aggperfscript --binary=%S/Inputs/noinline-cs-noprobe.perfbin --output=%t --skip-symbolization --profile-summary-cold-count=0 --filter-build-id=aabb1122
-; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-HYBRID
-
-; CHECK-HYBRID:      [foo]
-; CHECK-HYBRID-NEXT:   3
-; CHECK-HYBRID-NEXT:   5ff-62f:6
-; CHECK-HYBRID-NEXT:   634-637:6
-; CHECK-HYBRID-NEXT:   645-645:6
-; CHECK-HYBRID-NEXT:   3
-; CHECK-HYBRID-NEXT:   62f->5b0:6
-; CHECK-HYBRID-NEXT:   637->645:6
-; CHECK-HYBRID-NEXT:   645->5ff:6
-; CHECK-HYBRID-NEXT: [foo:3 @ bar]
-; CHECK-HYBRID-NEXT:   4
-; CHECK-HYBRID-NEXT:   5b0-5c8:2
-; CHECK-HYBRID-NEXT:   5b0-5d7:4
-; CHECK-HYBRID-NEXT:   5dc-5e9:2
-; CHECK-HYBRID-NEXT:   5e5-5e9:4
-; CHECK-HYBRID-NEXT:   3
-; CHECK-HYBRID-NEXT:   5c8->5dc:4
-; CHECK-HYBRID-NEXT:   5d7->5e5:4
-; CHECK-HYBRID-NEXT:   5e9->634:6
-
-;; Test 2: Non-pre-aggregated perfscript with buildid prefix (no leading count).
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/buildid-cs-noprobe.perfscript --binary=%S/Inputs/noinline-cs-noprobe.perfbin --output=%t2 --skip-symbolization --profile-summary-cold-count=0 --filter-build-id=aabb1122
-; RUN: FileCheck %s --input-file %t2 --check-prefix=CHECK-NOAGG
-
-; CHECK-NOAGG:      [foo]
-; CHECK-NOAGG-NEXT:   3
-; CHECK-NOAGG-NEXT:   5ff-62f:3
-; CHECK-NOAGG-NEXT:   634-637:3
-; CHECK-NOAGG-NEXT:   645-645:3
-; CHECK-NOAGG-NEXT:   3
-; CHECK-NOAGG-NEXT:   62f->5b0:3
-; CHECK-NOAGG-NEXT:   637->645:3
-; CHECK-NOAGG-NEXT:   645->5ff:3
-; CHECK-NOAGG-NEXT: [foo:3 @ bar]
-; CHECK-NOAGG-NEXT:   4
-; CHECK-NOAGG-NEXT:   5b0-5c8:1
-; CHECK-NOAGG-NEXT:   5b0-5d7:2
-; CHECK-NOAGG-NEXT:   5dc-5e9:1
-; CHECK-NOAGG-NEXT:   5e5-5e9:2
-; CHECK-NOAGG-NEXT:   3
-; CHECK-NOAGG-NEXT:   5c8->5dc:2
-; CHECK-NOAGG-NEXT:   5d7->5e5:2
-; CHECK-NOAGG-NEXT:   5e9->634:3
-
-;; Test 3: With non-matching filter, callstack frames are filtered out,
-;; resulting in no samples.
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/buildid-cs-noprobe.aggperfscript --binary=%S/Inputs/noinline-cs-noprobe.perfbin --output=%t3 --skip-symbolization --filter-build-id=ccdd3344 2>&1 | FileCheck %s --check-prefix=CHECK-NOMATCH
-; CHECK-NOMATCH: warning: No samples in perf script!

diff  --git a/llvm/tools/llvm-profgen/PerfReader.cpp b/llvm/tools/llvm-profgen/PerfReader.cpp
index 75909f3083e03..d61c70e69d6e9 100644
--- a/llvm/tools/llvm-profgen/PerfReader.cpp
+++ b/llvm/tools/llvm-profgen/PerfReader.cpp
@@ -69,13 +69,6 @@ cl::opt<bool> TimeProfGen("time-profgen", cl::desc("Time llvm-profgen phases"),
 static const char *TimerGroupName = "profgen";
 static const char *TimerGroupDesc = "llvm-profgen";
 
-static cl::opt<std::string> FilterBuildID(
-    "filter-build-id",
-    cl::desc("Override auto-detected build ID for filtering perfscript "
-             "addresses in [buildid:]addr format. When set, only addresses "
-             "with a matching build ID prefix are kept."),
-    cl::cat(ProfGenCategory));
-
 namespace sampleprof {
 
 void VirtualUnwinder::unwindCall(UnwindState &State) {
@@ -672,37 +665,12 @@ void HybridPerfReader::unwindSamples() {
 }
 
 /// Parse a hex address from \p Str.
-/// Parse an optional [buildid:] prefix into \p BuildID.
-static bool parseAddress(StringRef Str, uint64_t &Addr, bool HasPrefix,
-                         StringRef &BuildID) {
-  size_t ColonPos = Str.find(':');
-  if (ColonPos != StringRef::npos) {
-    BuildID = Str.substr(0, ColonPos);
-    Str = Str.substr(ColonPos + 1);
-  }
+static bool parseAddress(StringRef Str, uint64_t &Addr, bool HasPrefix) {
   if (Str.consume_front("0x") != HasPrefix)
     return true;
   return Str.getAsInteger(16, Addr);
 }
 
-/// Return the build ID to use for filtering perfscript addresses.
-/// If --filter-build-id is specified, use it as an override (with a warning
-/// if it doesn't match the binary's auto-detected build ID).
-/// Otherwise, use the auto-detected value from the binary.
-static StringRef getFilterBuildID(const ProfiledBinary *Binary) {
-  StringRef BinaryBuildID = Binary->getFilterBuildID();
-  if (FilterBuildID.getNumOccurrences() == 0)
-    return BinaryBuildID;
-  static bool Warned = false;
-  if (!Warned && !BinaryBuildID.empty() && FilterBuildID != BinaryBuildID) {
-    WithColor::warning() << "--filter-build-id=" << FilterBuildID
-                         << " does not match binary build ID " << BinaryBuildID
-                         << "\n";
-    Warned = true;
-  }
-  return FilterBuildID;
-}
-
 bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
                                        SmallVectorImpl<LBREntry> &LBRStack) {
   // The raw format of LBR stack is like:
@@ -720,9 +688,8 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
   // Skip the leading instruction pointer.
   size_t Index = 0;
   uint64_t LeadingAddr;
-  StringRef LeadingBuildID;
   if (!Records.empty() && !Records[0].contains('/')) {
-    if (parseAddress(Records[0], LeadingAddr, false, LeadingBuildID)) {
+    if (parseAddress(Records[0], LeadingAddr, false)) {
       WarnInvalidLBR(TraceIt);
       TraceIt.advance();
       return false;
@@ -742,12 +709,10 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
     Token.split(Addresses, "/");
     uint64_t Src;
     uint64_t Dst;
-    StringRef SrcBuildID, DstBuildID;
 
     // Stop at broken LBR records.
-    if (Addresses.size() < 2 ||
-        parseAddress(Addresses[0], Src, true, SrcBuildID) ||
-        parseAddress(Addresses[1], Dst, true, DstBuildID)) {
+    if (Addresses.size() < 2 || parseAddress(Addresses[0], Src, true) ||
+        parseAddress(Addresses[1], Dst, true)) {
       WarnInvalidLBR(TraceIt);
       break;
     }
@@ -755,12 +720,8 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
     // Canonicalize to use preferred load address as base address.
     Src = Binary->canonicalizeVirtualAddress(Src);
     Dst = Binary->canonicalizeVirtualAddress(Dst);
-    // Filter by build ID.
-    StringRef BinaryBuildID = getFilterBuildID(Binary);
-    bool SrcIsInternal =
-        SrcBuildID == BinaryBuildID && Binary->addressIsCode(Src);
-    bool DstIsInternal =
-        DstBuildID == BinaryBuildID && Binary->addressIsCode(Dst);
+    bool SrcIsInternal = Binary->addressIsCode(Src);
+    bool DstIsInternal = Binary->addressIsCode(Dst);
     if (!SrcIsInternal)
       Src = ExternalAddr;
     if (!DstIsInternal)
@@ -778,17 +739,16 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
 bool PerfScriptReader::extractCallstack(TraceStream &TraceIt,
                                         SmallVectorImpl<uint64_t> &CallStack) {
   // The raw format of call stack is like:
-  //            4005dc               # leaf frame (no buildid)
+  //            4005dc      # leaf frame
   //	          400634
-  //	          deadbeef:400684      # root frame (with buildid prefix)
+  //	          400684      # root frame
   // It's in bottom-up order with each frame in one line.
 
   // Extract stack frames from sample
   while (!TraceIt.isAtEoF() && !isLBRSample(TraceIt.getCurrentLine(), true)) {
     StringRef FrameStr = TraceIt.getCurrentLine().ltrim();
     uint64_t FrameAddr = 0;
-    StringRef FrameBuildID;
-    if (parseAddress(FrameStr, FrameAddr, false, FrameBuildID)) {
+    if (parseAddress(FrameStr, FrameAddr, false)) {
       // We might parse a non-perf sample line like empty line and comments,
       // skip it
       TraceIt.advance();
@@ -798,9 +758,7 @@ bool PerfScriptReader::extractCallstack(TraceStream &TraceIt,
 
     FrameAddr = Binary->canonicalizeVirtualAddress(FrameAddr);
     // Currently intermixed frame from 
diff erent binaries is not supported.
-    bool IsExternal = FrameBuildID != getFilterBuildID(Binary) ||
-                      !Binary->addressIsCode(FrameAddr);
-    if (IsExternal) {
+    if (!Binary->addressIsCode(FrameAddr)) {
       if (CallStack.empty())
         NumLeafExternalFrame++;
       // Push a special value(ExternalAddr) for the external frames so that
@@ -1213,7 +1171,7 @@ void PerfScriptReader::parseAndAggregateTrace() {
 // A LBR sample is like:
 // 40062f 0x5c6313f/0x5c63170/P/-/-/0  0x5c630e7/0x5c63130/P/-/-/0 ...
 // A heuristic for fast detection by checking whether a
-// leading "  0x" or " buildid:0x" and the '/' exist.
+// leading "  0x" and the '/' exist.
 bool PerfScriptReader::isLBRSample(StringRef Line, bool CheckLineStart) {
   // Skip the leading instruction pointer
   SmallVector<StringRef, 32> Records;
@@ -1222,8 +1180,7 @@ bool PerfScriptReader::isLBRSample(StringRef Line, bool CheckLineStart) {
   Line.split(Records, " ", 2, CheckLineStart);
   if (Records.size() < 2)
     return false;
-  if ((Records[1].starts_with("0x") || Records[1].contains(":0x")) &&
-      Records[1].contains('/'))
+  if (Records[1].starts_with("0x") && Records[1].contains('/'))
     return true;
   return false;
 }
@@ -1261,10 +1218,8 @@ PerfContent PerfScriptReader::checkPerfScriptType(StringRef FileName) {
 
     // Detect sample with call stack
     int32_t Count = 0;
-    StringRef FrameBuildId;
     while (!TraceIt.isAtEoF() &&
-           !parseAddress(TraceIt.getCurrentLine().ltrim(), FrameAddr, false,
-                         FrameBuildId)) {
+           !parseAddress(TraceIt.getCurrentLine().ltrim(), FrameAddr, false)) {
       Count++;
       TraceIt.advance();
     }


        


More information about the llvm-branch-commits mailing list