This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/11488] New: Scheduling severely worsens performance
- From: "falk at debian dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Jul 2003 14:05:20 -0000
- Subject: [Bug optimization/11488] New: Scheduling severely worsens performance
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11488
Summary: Scheduling severely worsens performance
Product: gcc
Version: 3.4
Status: UNCONFIRMED
Keywords: pessimizes-code
Severity: normal
Priority: P2
Component: optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: falk at debian dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: alphaev68-unknown-linux-gnu
GCC host triplet: alphaev68-unknown-linux-gnu
GCC target triplet: alphaev68-unknown-linux-gnu
This is a known problem, but there doesn't seem to be any good test case in the
database, and I think it's one of our worst performance problems currently.
Here's a nice test case:
gcc version 3.4 20030705 (experimental)
% gcc -O3 idct3.c && time ./a.out
./a.out 3.30s user 0.04s system 99% cpu 3.347 total
% gcc -fno-schedule-insns -O3 idct3.c && time ./a.out
./a.out 1.19s user 0.00s system 101% cpu 1.171 total
i.e., slowdown of factor 2.7.
The new register allocator doesn't help a lot:
% gcc -O3 -fnew-ra idct3.c && time ./a.out
./a.out 3.09s user 0.04s system 100% cpu 3.128 total
% gcc -fno-schedule-insns -fnew-ra -O3 idct3.c && time ./a.out
./a.out 1.24s user 0.00s system 97% cpu 1.276 total
The problem is that scheduling introduces false dependencies, which leads to
excessive spilling.