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 <rguent...@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 <rguent...@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 <rguent...@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 <rguent...@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)