Successfully identified regression in *gcc* in CI configuration 
tcwg_bmk_gnu_tk1/gnu-release-arm-spec2k6-O3_LTO.  So far, this commit has 
regressed CI configurations:
 - tcwg_bmk_gnu_tk1/gnu-release-arm-spec2k6-O3_LTO

Culprit:
<cut>
commit c7207339a7dbce5b68f872064e624dcf1639ba46
Author: Wilco Dijkstra <wdijk...@arm.com>
Date:   Mon Oct 14 12:21:14 2019 +0000

    [ARM] Switch to default sched pressure algorithm
    
    Currently the Arm backend selects the alternative sched pressure algorithm.
    The issue is that this doesn't take register pressure into account, and so
    it causes significant additional spilling on Arm where there are only 14
    allocatable registers.  Building SPEC2006 showed significant codesize gains
    with the default pressure algorithm, so switch back to that.  PR77308 shows
    ~800 fewer instructions.
    
    SPECINT2006 is ~0.6% faster on Cortex-A57 together with the other DImode
    patches. Overall SPEC codesize is 1.1% smaller.
    
        gcc/
            * config/arm/arm.c (arm_option_override): Don't override sched
            pressure algorithm.
    
    From-SVN: r276960
</cut>

Results regressed to (for first_bad == c7207339a7dbce5b68f872064e624dcf1639ba46)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_abe stage1 -- --set gcc_override_configure=--with-mode=arm --set 
gcc_override_configure=--disable-libsanitizer:
-8
# build_abe linux:
-7
# build_abe glibc:
-6
# build_abe stage2 -- --set gcc_override_configure=--with-mode=arm --set 
gcc_override_configure=--disable-libsanitizer:
-5
# true:
0
# benchmark -O3_LTO_marm -- 
artifacts/build-c7207339a7dbce5b68f872064e624dcf1639ba46/results_id:
1
# 410.bwaves,bwaves_base.default                                regressed by 108
# 454.calculix,calculix_base.default                            regressed by 105
# 482.sphinx3,sphinx_livepretend_base.default                   regressed by 104
# 436.cactusADM,cactusADM_base.default                          regressed by 116
# 444.namd,namd_base.default                                    regressed by 103
# 435.gromacs,gromacs_base.default                              regressed by 106

from (for last_good == 7bd8bec53f0e43c7a7852c54650746e65324514b)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_abe stage1 -- --set gcc_override_configure=--with-mode=arm --set 
gcc_override_configure=--disable-libsanitizer:
-8
# build_abe linux:
-7
# build_abe glibc:
-6
# build_abe stage2 -- --set gcc_override_configure=--with-mode=arm --set 
gcc_override_configure=--disable-libsanitizer:
-5
# true:
0
# benchmark -O3_LTO_marm -- 
artifacts/build-7bd8bec53f0e43c7a7852c54650746e65324514b/results_id:
1

Artifacts of last_good build: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-release-arm-spec2k6-O3_LTO/27/artifact/artifacts/build-7bd8bec53f0e43c7a7852c54650746e65324514b/
Results ID of last_good: 
tk1_32/tcwg_bmk_gnu_tk1/bisect-gnu-release-arm-spec2k6-O3_LTO/1468
Artifacts of first_bad build: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-release-arm-spec2k6-O3_LTO/27/artifact/artifacts/build-c7207339a7dbce5b68f872064e624dcf1639ba46/
Results ID of first_bad: 
tk1_32/tcwg_bmk_gnu_tk1/bisect-gnu-release-arm-spec2k6-O3_LTO/1469
Build top page/logs: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-release-arm-spec2k6-O3_LTO/27/

Configuration details:


Reproduce builds:
<cut>
mkdir investigate-gcc-c7207339a7dbce5b68f872064e624dcf1639ba46
cd investigate-gcc-c7207339a7dbce5b68f872064e624dcf1639ba46

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_tk1-gnu-release-arm-spec2k6-O3_LTO/27/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_tk1-gnu-release-arm-spec2k6-O3_LTO/27/artifact/artifacts/manifests/build-parameters.sh
 --fail
curl -o artifacts/test.sh 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-release-arm-spec2k6-O3_LTO/27/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 c7207339a7dbce5b68f872064e624dcf1639ba46
../artifacts/test.sh

# Reproduce last_good build
git checkout --detach 7bd8bec53f0e43c7a7852c54650746e65324514b
../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_tk1/gnu-release-arm-spec2k6-O3_LTO

Artifacts: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-release-arm-spec2k6-O3_LTO/27/artifact/artifacts/
Build log: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-release-arm-spec2k6-O3_LTO/27/consoleText

Full commit (up to 1000 lines):
<cut>
commit c7207339a7dbce5b68f872064e624dcf1639ba46
Author: Wilco Dijkstra <wdijk...@arm.com>
Date:   Mon Oct 14 12:21:14 2019 +0000

    [ARM] Switch to default sched pressure algorithm
    
    Currently the Arm backend selects the alternative sched pressure algorithm.
    The issue is that this doesn't take register pressure into account, and so
    it causes significant additional spilling on Arm where there are only 14
    allocatable registers.  Building SPEC2006 showed significant codesize gains
    with the default pressure algorithm, so switch back to that.  PR77308 shows
    ~800 fewer instructions.
    
    SPECINT2006 is ~0.6% faster on Cortex-A57 together with the other DImode
    patches. Overall SPEC codesize is 1.1% smaller.
    
        gcc/
            * config/arm/arm.c (arm_option_override): Don't override sched
            pressure algorithm.
    
    From-SVN: r276960
---
 gcc/ChangeLog        | 5 +++++
 gcc/config/arm/arm.c | 5 -----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c2cbd4274ca..f07a0e61e6b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2019-10-14  Wilco Dijkstra  <wdijk...@arm.com>
+
+       * config/arm/arm.c (arm_option_override): Don't override sched
+       pressure algorithm.
+
 2019-10-14  Richard Biener  <rguent...@suse.de>
 
        PR tree-optimization/92069
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 39e1a1ef9a2..394b1dd1902 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3555,11 +3555,6 @@ arm_option_override (void)
                           global_options.x_param_values,
                           global_options_set.x_param_values);
 
-  /* Use the alternative scheduling-pressure algorithm by default.  */
-  maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, SCHED_PRESSURE_MODEL,
-                        global_options.x_param_values,
-                        global_options_set.x_param_values);
-
   /* Look through ready list and all of queue for instructions
      relevant for L2 auto-prefetcher.  */
   int param_sched_autopref_queue_depth;
</cut>
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to