This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/50164] New: [IRA, 4.7 Regression] Performance degradation due to increased memory instructions count
- From: "enkovich.gnu at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 23 Aug 2011 14:28:22 +0000
- Subject: [Bug target/50164] New: [IRA, 4.7 Regression] Performance degradation due to increased memory instructions count
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50164
Bug #: 50164
Summary: [IRA, 4.7 Regression] Performance degradation due to
increased memory instructions count
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: enkovich.gnu@gmail.com
Created attachment 25083
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25083
Reproducer
Problem occurs with -march=atom option used on the following part of test case:
xc = (e_u8) (xc - xk);
xm = (e_u8) (xm - xk);
xy = (e_u8) (xy - xk);
*EritePtr++ = xc;
*EritePtr++ = xm;
*EritePtr++ = xy;
*EritePtr++ = xk;
xk has the most usages here and GCC 4.6 keeps it on register but GCC 4.7 keeps
it on stack which leads to increased number of memory instructions for that
code. On Core i7 GCC 4.7 generates code x1.5 slower than GCC 4.6. On Atom it is
~10% slower.
GCC 4.6 info:
Configured with: /export/users/mstester/stability/svn/gcc-4_6-branch/configure
--with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib
--enable-shared --with-demangler-in-ld --enable-cloog-backend=isl
--with-fpmath=sse
--prefix=/export/users/mstester/stability/work/gcc-4_6-branch/64/install
--enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.6.2 20110822 (prerelease) (GCC)
COLLECT_GCC_OPTIONS='-O2' '-march=atom' '-m32' '-o' 'test.4.6' '-v'
/nfs/ims/proj/icl/gcc/gnu/compilers/gcc/gcc-4_6-branch/64/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.2/cc1
-quiet -v -imultilib 32 -iprefix
/nfs/ims/proj/icl/gcc/gnu/compilers/gcc/gcc-4_6-branch/64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.2/
test.c -quiet -dumpbase test.c -march=atom -m32 -auxbase test -O2 -version -o
/tmp/ccM2NIHU.s
GNU C (GCC) version 4.6.2 20110822 (prerelease) (x86_64-unknown-linux-gnu)
compiled by GNU C version 4.6.2 20110822 (prerelease), GMP version
4.3.1, MPFR version 2.4.2, MPC version 0.8.1
GCC 4.7 info:
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-master/configure --prefix=/export/gcc-master-build
Thread model: posix
gcc version 4.7.0 20110822 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-O2' '-march=atom' '-m32' '-o' 'test.4.7' '-v'
/export/gcc-master-build/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/cc1 -quiet
-v -imultilib 32 test.c -quiet -dumpbase test.c -march=atom -m32 -auxbase test
-O2 -version -o /tmp/cc5DRHOU.s
GNU C (GCC) version 4.7.0 20110822 (experimental) (x86_64-unknown-linux-gnu)
compiled by GNU C version 4.7.0 20110822 (experimental), GMP version
4.3.2, MPFR version 3.0.0, MPC version 0.8.3-dev