[Bug tree-optimization/94373] New: 548.exchange2_r run time is 7-12% worse than GCC 9 at -O2 and generic march/mtune
jamborm at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 27 21:49:19 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94373
Bug ID: 94373
Summary: 548.exchange2_r run time is 7-12% worse than GCC 9 at
-O2 and generic march/mtune
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: jamborm at gcc dot gnu.org
CC: rguenth at gcc dot gnu.org
Blocks: 26163
Target Milestone: ---
Host: x86_64-linux
Target: x86_64-linux
When compiled with just -O2, SPEC 2017 INTrate benchmark
548.exchange2_r runs slower than when compiled with GCC 9.2. It is:
- 8% slower on AMD Zen2-based server CPU (rev. 26b3e568a60)
- 12% slower on Intel Cascade Lake server CPU (rev. abe13e1847f)
- 7% slower on AMD Zen1-based server CPU (rev. 26b3e568a60)
During GCC 10 development cycle the benchmark was relatively noisy and
the run time was increasing in many small steps, but between October 7
and November 15 we were doing 3% better than GCC 9 (on Zen2).
Specifically the following commit brought about the improvement:
commit 806bdf4e40d31cf55744c876eb9f17654de36b99
Author: Richard Biener <rguenther@suse.de>
Date: Mon Oct 7 07:53:45 2019 +0000
re PR tree-optimization/91975 (worse code for small array copy using
pointer arithmetic than array indexing)
2019-10-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/91975
* tree-ssa-loop-ivcanon.c (constant_after_peeling): Consistently
handle invariants.
From-SVN: r276645
But it was undone by its revert:
commit f0af4848ac40d2342743c9b16416310d61db85b5
Author: Richard Biener <rguenther@suse.de>
Date: Fri Nov 15 09:09:16 2019 +0000
re PR tree-optimization/92039 (Spurious -Warray-bounds warnings building
32-bit glibc)
2019-11-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/92039
PR tree-optimization/91975
* tree-ssa-loop-ivcanon.c (constant_after_peeling): Revert
previous change, treat invariants consistently as non-constant.
(tree_estimate_loop_size): Ternary ops with just the first op
constant are not optimized away.
* gcc.dg/tree-ssa/cunroll-2.c: Revert to state previous to
unroller adjustment.
* g++.dg/tree-ssa/ivopts-3.C: Likewise.
From-SVN: r278281
On the Intel machine, reverting the revert fixes the regression too.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26163
[Bug 26163] [meta-bug] missed optimization in SPEC (2k17, 2k and 2k6 and 95)
More information about the Gcc-bugs
mailing list