[llvm] [BOLT] Improve regexp in link_fdata.py (PR #152694)

Gergely Bálint via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 8 04:52:04 PDT 2025


https://github.com/bgergely0 created https://github.com/llvm/llvm-project/pull/152694

FileCheck accepts both '#' and '//' as leading chars for commands, but link_fdata.py only searched for lines starting with '#'. This changes the regexps in link_fdata.py to mirror FileCheck's behaviour.
The comment syntax in test/timers.c is modified to present this capability.

>From 7a10125dea1d6a96eb2bb598d1b9e3e36c826b2d Mon Sep 17 00:00:00 2001
From: Gergely Balint <gergely.balint at arm.com>
Date: Fri, 8 Aug 2025 11:45:10 +0000
Subject: [PATCH] [BOLT] Improve regexp in link_fdata.py

FileCheck accepts both '#' and '//' as leading chars for commands,
but link_fdata.py only searched for lines starting with '#'.
This changes the regexps in link_fdata.py to mirror FileCheck's
behaviour.
test/timers.c is modified to present this capability.
---
 bolt/test/link_fdata.py |  4 ++--
 bolt/test/timers.c      | 41 ++++++++++++++++++++---------------------
 2 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/bolt/test/link_fdata.py b/bolt/test/link_fdata.py
index 898dce8e3fb5f..0361500ae7194 100755
--- a/bolt/test/link_fdata.py
+++ b/bolt/test/link_fdata.py
@@ -27,7 +27,7 @@
 
 # Regexes to extract FDATA lines from input and parse FDATA and pre-aggregated
 # profile data
-prefix_pat = re.compile(f"^# {args.prefix}: (.*)")
+prefix_pat = re.compile(f"^(#|//) {args.prefix}: (.*)")
 
 # FDATA records:
 # <is symbol?> <closest elf symbol or DSO name> <relative FROM address>
@@ -56,7 +56,7 @@
         prefix_match = prefix_pat.match(line)
         if not prefix_match:
             continue
-        profile_line = prefix_match.group(1)
+        profile_line = prefix_match.group(2)
         fdata_match = fdata_pat.match(profile_line)
         preagg_match = preagg_pat.match(profile_line)
         nolbr_match = nolbr_pat.match(profile_line)
diff --git a/bolt/test/timers.c b/bolt/test/timers.c
index a34958a2a15e9..9a82218de72ad 100644
--- a/bolt/test/timers.c
+++ b/bolt/test/timers.c
@@ -1,22 +1,21 @@
-/* This test checks timers for metadata manager phases.
-# RUN: %clang %cflags %s -o %t.exe
-# RUN: link_fdata %s %t.exe %t.fdata
-# RUN: llvm-bolt %t.exe -o %t.null --data %t.fdata -w %t.yaml --time-rewrite \
-# RUN:   2>&1 | FileCheck %s
-# RUN: link_fdata %s %t.exe %t.preagg PREAGG
-# RUN: perf2bolt %t.exe -o %t.null -p %t.preagg --pa --time-rewrite \
-# RUN:   2>&1 | FileCheck %s --check-prefix=CHECK-P2B
-
-# CHECK-DAG: update metadata post-emit
-# CHECK-DAG: process section metadata
-# CHECK-DAG: process metadata pre-CFG
-# CHECK-DAG: process metadata post-CFG
-# CHECK-DAG: finalize metadata pre-emit
-
-# CHECK-P2B-DAG: process section metadata
-# CHECK-P2B-DAG: process metadata pre-CFG
-
-# FDATA: 0 [unknown] 0 1 main 0 1 0
-# PREAGG: B X:0 #main# 1 0
-*/
+// This test checks timers for metadata manager phases.
+// RUN: %clang %cflags %s -o %t.exe
+// RUN: link_fdata %s %t.exe %t.fdata
+// RUN: llvm-bolt %t.exe -o %t.null --data %t.fdata -w %t.yaml --time-rewrite \
+// RUN:   2>&1 | FileCheck %s
+// RUN: link_fdata %s %t.exe %t.preagg PREAGG
+// RUN: perf2bolt %t.exe -o %t.null -p %t.preagg --pa --time-rewrite \
+// RUN:   2>&1 | FileCheck %s --check-prefix=CHECK-P2B
+//
+// CHECK-DAG: update metadata post-emit
+// CHECK-DAG: process section metadata
+// CHECK-DAG: process metadata pre-CFG
+// CHECK-DAG: process metadata post-CFG
+// CHECK-DAG: finalize metadata pre-emit
+//
+// CHECK-P2B-DAG: process section metadata
+// CHECK-P2B-DAG: process metadata pre-CFG
+//
+// FDATA: 0 [unknown] 0 1 main 0 1 0
+// PREAGG: B X:0 #main# 1 0
 int main() { return 0; }



More information about the llvm-commits mailing list