https://gcc.gnu.org/g:36d02e87a1d6f1829489e6de07c56090dc9fafad

commit r17-3890-g36d02e87a1d6f1829489e6de07c56090dc9fafad
Author: Dhruv Chawla <[email protected]>
Date:   Thu Jun 25 05:30:11 2026 +0000

    auto-profile: Avoid hardcoding perf.data filename in gcc-auto-profile 
scripts
    
    As a follow up to r16-7956-g2e3d991ea1855d, this patch passes the perf 
profile
    name from Makefile.tpl to the gcc-auto-profile scripts. I initially
    wanted to do this via the PERF_DATA make variable, however the
    autoprofile stage (which invokes gcc-auto-profile) and the autofeedback
    stage (which defines PERF_DATA) don't share the variable definition, so
    there was no clean way to do it. This at least consolidates the file name 
into
    one location, so that it is easier to modify later on.
    
    Autoprofilebootstrapped and regtested on aarch64-linux-gnu with SPE.
    
    ChangeLog:
    
            * Makefile.in: Regenerate.
            * Makefile.tpl: Pass "--perf perf.data" to gcc-auto-profile. 
Separate
            the make invocation from perf using "--".
    
    contrib/ChangeLog:
    
            * gen_autofdo_event.py: Add missed updates for passing "--inherit" 
and
            "-o $perf_file" to perf.
    
    gcc/ChangeLog:
    
            * config/aarch64/gcc-auto-profile: Replace explicit perf.data
            with perf_file variable. Add parsing for "--perf" flag.
            * config/i386/gcc-auto-profile: Likewise.

Diff:
---
 Makefile.in                         |  2 +-
 Makefile.tpl                        |  2 +-
 contrib/gen_autofdo_event.py        | 10 ++++++++--
 gcc/config/aarch64/gcc-auto-profile | 12 +++++++++---
 gcc/config/i386/gcc-auto-profile    | 10 ++++++++--
 5 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index cb916838ebf0..84d8909730c4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -423,7 +423,7 @@ MAKEINFO = @MAKEINFO@
 EXPECT = @EXPECT@
 RUNTEST = @RUNTEST@
 
-AUTO_PROFILE = gcc-auto-profile --all -c 10000000
+AUTO_PROFILE = gcc-auto-profile --all --perf perf.data -c 10000000 --
 
 # This just becomes part of the MAKEINFO definition passed down to
 # sub-makes.  It lets flags be given on the command line while still
diff --git a/Makefile.tpl b/Makefile.tpl
index 870a82e9118f..02ebed76d470 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -426,7 +426,7 @@ MAKEINFO = @MAKEINFO@
 EXPECT = @EXPECT@
 RUNTEST = @RUNTEST@
 
-AUTO_PROFILE = gcc-auto-profile --all -c 10000000
+AUTO_PROFILE = gcc-auto-profile --all --perf perf.data -c 10000000 --
 
 # This just becomes part of the MAKEINFO definition passed down to
 # sub-makes.  It lets flags be given on the command line while still
diff --git a/contrib/gen_autofdo_event.py b/contrib/gen_autofdo_event.py
index 1fcea0a6d633..751fbc2ffeed 100755
--- a/contrib/gen_autofdo_event.py
+++ b/contrib/gen_autofdo_event.py
@@ -138,6 +138,12 @@ if [ "$1" = "--all" ] ; then
   shift
 fi
 
+perf_file="perf.data"
+if [ "$1" = "--perf" ]; then
+  perf_file="$2"
+  shift 2
+fi
+
 if grep -q AuthenticAMD /proc/cpuinfo ; then
   vendor=AMD
   if ! grep -q " brs" /proc/cpuinfo && ! grep -q amd_lbr_v2 /proc/cpuinfo ; 
then
@@ -175,14 +181,14 @@ echo >&2 "AMD CPU without support for ex_ret_brn_tkn 
event"
         fi ;;''')
     print(r"esac")
     print(r"set -x")
-    print(r'if ! perf record -e $E -b "$@" ; then')
+    print(r'if ! perf record --inherit -o "$perf_file" -e $E -b "$@" ; then')
     print(r'  # PEBS may not actually be working even if the processor 
supports it')
     print(r'  # (e.g., in a virtual machine). Trying to run without /p.')
     print(r'  set +x')
     print(r'  echo >&2 "Retrying without /p."')
     print(r'  E="$(echo "${E}" | sed -e \'s/\/p/\//\ -e s/:p//)"')
     print(r'  set -x')
-    print(r'  exec perf record -e $E -b "$@"')
+    print(r'  exec perf record --inherit -o "$perf_file" -e $E -b "$@"')
     print(r' set +x')
     print(r'fi')
 
diff --git a/gcc/config/aarch64/gcc-auto-profile 
b/gcc/config/aarch64/gcc-auto-profile
index 6e33047698c8..edda710bd389 100755
--- a/gcc/config/aarch64/gcc-auto-profile
+++ b/gcc/config/aarch64/gcc-auto-profile
@@ -38,21 +38,27 @@ elif [ "$1" = "--all" ] ; then
   shift
 fi
 
+perf_file="perf.data"
+if [ "$1" = "--perf" ]; then
+  perf_file="$2"
+  shift 2
+fi
+
 if [ "$use_brbe" = true ] ; then
   if grep -q hypervisor /proc/cpuinfo ; then
     echo >&2 "Warning: branch profiling may not be functional in VMs"
   fi
   set -x
-  perf record --inherit -o perf.data -j any,$FLAGS "$@"
+  perf record --inherit -o "$perf_file" -j any,$FLAGS "$@"
   set +x
 elif [ -n "$(perf list pmu | grep arm_spe)" ]; then
   echo >&2 "Info: Using SPE to collect branch profiles"
   set -x
-  perf record --inherit -o perf.data -e arm_spe_0/branch_filter=1/ "$@"
+  perf record --inherit -o "$perf_file" -e arm_spe_0/branch_filter=1/ "$@"
   set +x
 else
   echo >&2 "Warning: branch profiling may not be functional without BRBE"
   set -x
-  perf record --inherit -o perf.data "$@"
+  perf record --inherit -o "$perf_file" "$@"
   set +x
 fi
diff --git a/gcc/config/i386/gcc-auto-profile b/gcc/config/i386/gcc-auto-profile
index c7772a2800f4..fc07b20f941f 100755
--- a/gcc/config/i386/gcc-auto-profile
+++ b/gcc/config/i386/gcc-auto-profile
@@ -24,6 +24,12 @@ if [ "$1" = "--all" ] ; then
   shift
 fi
 
+perf_file="perf.data"
+if [ "$1" = "--perf" ]; then
+  perf_file="$2"
+  shift 2
+fi
+
 if grep -q AuthenticAMD /proc/cpuinfo ; then
   vendor=AMD
   if ! grep -q " brs" /proc/cpuinfo && ! grep -q amd_lbr_v2 /proc/cpuinfo ; 
then
@@ -117,13 +123,13 @@ echo >&2 "AMD CPU without support for ex_ret_brn_tkn 
event"
         fi ;;
 esac
 set -x
-if ! perf record --inherit -o perf.data -e $E -b "$@" ; then
+if ! perf record --inherit -o "$perf_file" -e $E -b "$@" ; then
   # PEBS may not actually be working even if the processor supports it
   # (e.g., in a virtual machine). Trying to run without /p.
   set +x
   echo >&2 "Retrying without /p."
   E="$(echo "${E}" | sed -e \'s/\/p/\//\ -e s/:p//)"
   set -x
-  exec perf record --inherit -o perf.data -e $E -b "$@"
+  exec perf record --inherit -o "$perf_file" -e $E -b "$@"
  set +x
 fi

Reply via email to