[PING^5][PATCH v3] auto-profile: Avoid hardcoding perf.data filename in gcc-auto-profile scripts

Dhruv Chawla <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
On 10/08/26 09:57, Dhruv Chawla wrote:
> External email: Use caution opening links or attachments
> 
> 
> On 03/08/26 10:42, Dhruv Chawla wrote:
>> External email: Use caution opening links or attachments
>>
>>
>> On 27/07/26 10:12, Dhruv Chawla wrote:
>>> External email: Use caution opening links or attachments
>>>
>>>
>>> On 20/07/26 14:47, Dhruv Chawla wrote:
>>>> External email: Use caution opening links or attachments
>>>>
>>>>
>>>> On 09/07/26 14:29, [email protected] wrote:
>>>>> External email: Use caution opening links or attachments
>>>>>
>>>>>
>>>>> From: Dhruv Chawla <[email protected]>
>>>>>
>>>>> Thanks Andi, I was not aware of this script. I have updated it thusly as
>>>>> well. (The prior incorrect change was mine too...)
>>>>>
>>>>> --- >8 ---
>>>>>
>>>>> 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.
>>>>> ---
>>>>>   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 f34142cc077..584705aeb44 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 5891b67b697..eb26dc14c55 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 1fcea0a6d63..751fbc2ffee 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 8f7502b30e3..6902ce82a5a 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 | 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 c7772a2800f..fc07b20f941 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
>>>>> -- 
>>>>> 2.43.0
>>>>>
>>>>
>>>> Ping (https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723299.html).
>>>>
>>>> -- 
>>>> Regards,
>>>> Dhruv
>>>
>>> Ping (https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723299.html).
>>>
>>> -- 
>>> Regards,
>>> Dhruv
>>
>> Ping (https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723299.html).
>>
>> -- 
>> Regards,
>> Dhruv
> 
> Ping (https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723299.html).
> 
> -- 
> Regards,
> Dhruv

Ping (https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723299.html).

-- 
Regards,
Dhruv
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.