Hi Richard,

This report was sent out accidentally, due to a mistake in email preferences in 
our bisection scripts.

It appears that your patch regresses code-speed of a single function -- 
447.dealII,[.] _ZNK12SparseMatrixIdE5vmultI6VectorIdES3_EEvRT -- by 12%.  I 
don't there is anything worth investigating here.

Regards,

--
Maxim Kuvyrkov
https://www.linaro.org




> On Jul 11, 2021, at 8:17 PM, ci_not...@linaro.org wrote:
> 
> Successfully identified regression in *gcc* in CI configuration 
> tcwg_bmk_gnu_tx1/gnu-release-aarch64-spec2k6-O2.  So far, this commit has 
> regressed CI configurations:
> - tcwg_bmk_gnu_tx1/gnu-release-aarch64-spec2k6-O2
> 
> Culprit:
> <cut>
> commit a4dfaad2e5594d871fe00a1116005e28f95d644e
> Author: Richard Sandiford <richard.sandif...@arm.com>
> Date:   Mon Sep 30 16:20:44 2019 +0000
> 
>    Remove global call sets: gcse.c
> 
>    This is another case in which we can conservatively treat partial
>    kills as full kills.  Again this is in principle a bug fix for
>    TARGET_HARD_REGNO_CALL_PART_CLOBBERED targets, but in practice
>    it probably doesn't make a difference.
> 
>    2019-09-30  Richard Sandiford  <richard.sandif...@arm.com>
> 
>    gcc/
>            * gcse.c: Include function-abi.h.
>            (compute_hash_table_work): Use insn_callee_abi to get the ABI of
>            the call insn target.  Invalidate partially call-clobbered
>            registers as well as fully call-clobbered ones.
> 
>    From-SVN: r276323
> </cut>
> 
> Results regressed to (for first_bad == 
> a4dfaad2e5594d871fe00a1116005e28f95d644e)
> # reset_artifacts:
> -10
> # build_abe binutils:
> -9
> # build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer:
> -8
> # build_abe linux:
> -7
> # build_abe glibc:
> -6
> # build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer:
> -5
> # true:
> 0
> # benchmark -O2 -- 
> artifacts/build-a4dfaad2e5594d871fe00a1116005e28f95d644e/results_id:
> 1
> # 447.dealII,[.] _ZNK12SparseMatrixIdE5vmultI6VectorIdES3_EEvRT regressed by 
> 112
> 
> from (for last_good == c1b582720a39c3cb944aaff0298f721cdd034e3f)
> # reset_artifacts:
> -10
> # build_abe binutils:
> -9
> # build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer:
> -8
> # build_abe linux:
> -7
> # build_abe glibc:
> -6
> # build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer:
> -5
> # true:
> 0
> # benchmark -O2 -- 
> artifacts/build-c1b582720a39c3cb944aaff0298f721cdd034e3f/results_id:
> 1
> 
> Artifacts of last_good build: 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/artifact/artifacts/build-c1b582720a39c3cb944aaff0298f721cdd034e3f/
> Results ID of last_good: 
> tx1_64/tcwg_bmk_gnu_tx1/bisect-gnu-release-aarch64-spec2k6-O2/1425
> Artifacts of first_bad build: 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/artifact/artifacts/build-a4dfaad2e5594d871fe00a1116005e28f95d644e/
> Results ID of first_bad: 
> tx1_64/tcwg_bmk_gnu_tx1/bisect-gnu-release-aarch64-spec2k6-O2/1421
> Build top page/logs: 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/
> 
> Configuration details:
> 
> 
> Reproduce builds:
> <cut>
> mkdir investigate-gcc-a4dfaad2e5594d871fe00a1116005e28f95d644e
> cd investigate-gcc-a4dfaad2e5594d871fe00a1116005e28f95d644e
> 
> git clone https://git.linaro.org/toolchain/jenkins-scripts
> 
> mkdir -p artifacts/manifests
> curl -o artifacts/manifests/build-baseline.sh 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/artifact/artifacts/manifests/build-baseline.sh
>  --fail
> curl -o artifacts/manifests/build-parameters.sh 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/artifact/artifacts/manifests/build-parameters.sh
>  --fail
> curl -o artifacts/test.sh 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/artifact/artifacts/test.sh
>  --fail
> chmod +x artifacts/test.sh
> 
> # Reproduce the baseline build (build all pre-requisites)
> ./jenkins-scripts/tcwg_bmk-build.sh @@ artifacts/manifests/build-baseline.sh
> 
> cd gcc
> 
> # Reproduce first_bad build
> git checkout --detach a4dfaad2e5594d871fe00a1116005e28f95d644e
> ../artifacts/test.sh
> 
> # Reproduce last_good build
> git checkout --detach c1b582720a39c3cb944aaff0298f721cdd034e3f
> ../artifacts/test.sh
> 
> cd ..
> </cut>
> 
> History of pending regressions and results: 
> https://git.linaro.org/toolchain/ci/base-artifacts.git/log/?h=linaro-local/ci/tcwg_bmk_gnu_tx1/gnu-release-aarch64-spec2k6-O2
> 
> Artifacts: 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/artifact/artifacts/
> Build log: 
> https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-release-aarch64-spec2k6-O2/15/consoleText
> 
> Full commit (up to 1000 lines):
> <cut>
> commit a4dfaad2e5594d871fe00a1116005e28f95d644e
> Author: Richard Sandiford <richard.sandif...@arm.com>
> Date:   Mon Sep 30 16:20:44 2019 +0000
> 
>    Remove global call sets: gcse.c
> 
>    This is another case in which we can conservatively treat partial
>    kills as full kills.  Again this is in principle a bug fix for
>    TARGET_HARD_REGNO_CALL_PART_CLOBBERED targets, but in practice
>    it probably doesn't make a difference.
> 
>    2019-09-30  Richard Sandiford  <richard.sandif...@arm.com>
> 
>    gcc/
>            * gcse.c: Include function-abi.h.
>            (compute_hash_table_work): Use insn_callee_abi to get the ABI of
>            the call insn target.  Invalidate partially call-clobbered
>            registers as well as fully call-clobbered ones.
> 
>    From-SVN: r276323
> ---
> gcc/ChangeLog |  7 +++++++
> gcc/gcse.c    | 10 ++++++++--
> 2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/gcc/ChangeLog b/gcc/ChangeLog
> index 9d8b083d539..1b1c31cf009 100644
> --- a/gcc/ChangeLog
> +++ b/gcc/ChangeLog
> @@ -1,3 +1,10 @@
> +2019-09-30  Richard Sandiford  <richard.sandif...@arm.com>
> +
> +     * gcse.c: Include function-abi.h.
> +     (compute_hash_table_work): Use insn_callee_abi to get the ABI of
> +     the call insn target.  Invalidate partially call-clobbered
> +     registers as well as fully call-clobbered ones.
> +
> 2019-09-30  Richard Sandiford  <richard.sandif...@arm.com>
> 
>       * function.c (aggregate_value_p): Work out which ABI the
> diff --git a/gcc/gcse.c b/gcc/gcse.c
> index 9bde8619b7b..aeb59c645e1 100644
> --- a/gcc/gcse.c
> +++ b/gcc/gcse.c
> @@ -160,6 +160,7 @@ along with GCC; see the file COPYING3.  If not see
> #include "dbgcnt.h"
> #include "gcse.h"
> #include "gcse-common.h"
> +#include "function-abi.h"
> 
> /* We support GCSE via Partial Redundancy Elimination.  PRE optimizations
>    are a superset of those done by classic GCSE.
> @@ -1528,8 +1529,13 @@ compute_hash_table_work (struct gcse_hash_table_d 
> *table)
>         if (CALL_P (insn))
>           {
>             hard_reg_set_iterator hrsi;
> -           EXECUTE_IF_SET_IN_HARD_REG_SET (regs_invalidated_by_call,
> -                                           0, regno, hrsi)
> +
> +           /* We don't track modes of hard registers, so we need
> +              to be conservative and assume that partial kills
> +              are full kills.  */
> +           HARD_REG_SET callee_clobbers
> +             = insn_callee_abi (insn).full_and_partial_reg_clobbers ();
> +           EXECUTE_IF_SET_IN_HARD_REG_SET (callee_clobbers, 0, regno, hrsi)
>               record_last_reg_set_info (insn, regno);
> 
>             if (! RTL_CONST_OR_PURE_CALL_P (insn)
> </cut>

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to