[Bug c/56580] New: Internal compiler error when trying to compile a sequence of NOPs inside a loop
ahyangyi at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Mar 9 17:34:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56580
Bug #: 56580
Summary: Internal compiler error when trying to compile a
sequence of NOPs inside a loop
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: trivial
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ahyangyi@gmail.com
Created attachment 29629
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29629
The code that triggers the bug.
I am trying to do a silly thing: to produce a program that's bigger than my L1
Instruction cache but smaller than my L2 cache, so the speed of the L2 cache
can be measured.
My implementation is simple: I put a sequence of NOPs as inline assembly,
inside a for-loop. When I compile the code (see attachment) with -O2 or -O3
option, gcc 4.7.2 throws out internal error.
Not that the bug is anywhere harmful. I can happily do without any optimization
flags in this case. But I still think it's worth reporting, as fixing it may be
helpful to prevent other potential bugs. By the way, my other versions of gcc
(4.2.4, 4.4.7, 4.5.4) all work without any problems.
The code in the attachment uses 12288 NOPS inside the for-loop, which loops
1000 times. Lowering the former to 10240 or lowering the latter to 500 both
seem to eliminate the problem.
I am using Gentoo Linux. When I compile my gcc-4.7.2 using Portage, I didn't
set any optimization flags other than -O2 and -march=native. My machine is an
i7 box.
Finally, the following is the output of `gcc -v -save-temps -O2 GCC4.7-bug.c`:
Using built-in specs.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.2/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with:
/var/tmp/portage/sys-devel/gcc-4.7.2-r1/work/gcc-4.7.2/configure --prefix=/usr
--bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.2
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.2/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.2/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
--disable-fixed-point --without-ppl --without-cloog --enable-lto --enable-nls
--without-included-gettext --with-system-zlib --enable-obsolete
--disable-werror --enable-secureplt --enable-multilib
--with-multilib-list=m32,m64 --enable-libmudflap --disable-libssp
--enable-libgomp
--with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.7.2/python
--enable-checking=release --enable-libstdcxx-time
--enable-languages=c,c++,java,go,fortran --enable-shared --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all
--with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.7.2-r1 p1.4,
pie-0.5.5' --enable-plugin
Thread model: posix
gcc version 4.7.2 (Gentoo 4.7.2-r1 p1.4, pie-0.5.5)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-mtune=generic' '-march=x86-64'
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.2/cc1 -E -quiet -v GCC4.7-bug.c
-mtune=generic -march=x86-64 -O2 -fpch-preprocess -o GCC4.7-bug.i
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include-fixed
/usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-mtune=generic' '-march=x86-64'
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.2/cc1 -fpreprocessed GCC4.7-bug.i
-quiet -dumpbase GCC4.7-bug.c -mtune=generic -march=x86-64 -auxbase GCC4.7-bug
-O2 -version -o GCC4.7-bug.s
GNU C (Gentoo 4.7.2-r1 p1.4, pie-0.5.5) version 4.7.2 (x86_64-pc-linux-gnu)
compiled by GNU C version 4.7.2, GMP version 5.0.2, MPFR version 3.1.1,
MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C (Gentoo 4.7.2-r1 p1.4, pie-0.5.5) version 4.7.2 (x86_64-pc-linux-gnu)
compiled by GNU C version 4.7.2, GMP version 5.0.2, MPFR version 3.1.1,
MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: b73b2677ca23c504b32a2ee915f40344
GCC4.7-bug.c: In function ‘main’:
GCC4.7-bug.c:12303:1: internal compiler error: in account_size_time, at
ipa-inline-analysis.c:601
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.gentoo.org/> for instructions.
More information about the Gcc-bugs
mailing list