[PING^4][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 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