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

via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 8 04:52:38 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-bolt

Author: Gergely Bálint (bgergely0)

<details>
<summary>Changes</summary>

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.

---
Full diff: https://github.com/llvm/llvm-project/pull/152694.diff


2 Files Affected:

- (modified) bolt/test/link_fdata.py (+2-2) 
- (modified) bolt/test/timers.c (+20-21) 


``````````diff
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; }

``````````

</details>


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


More information about the llvm-commits mailing list