Im setting up a test machine at the moment on a K6-2, and have found with
sys-devel/bison-1.875 that certain compile time errors occur if CFLAGS contains
both -march=k6 (or k6-2) and -funroll-loops.
As this is a test machine I have GCC-3.2.3 and GCC-3.4CVS installed, this bug
occurs on 3.2.3, but not on 3.4, which is not preferable.
emerge info gives the following, im still in the process before emerge system
(so still in the chroot) but my compiler is 3.2.3-r2 or 3.4 depending.
!!! No gcc found. You probably need to 'source /etc/profile' to update
!!! the environment of this terminal and possibly other terminals also.
Portage 2.0.49-r4 (default-x86-1.4, [unavailable], glibc-2.3.2-r4, 2.6.0-test4-bk2)
=================================================================
System uname: 2.6.0-test4-bk2 i586 AMD-K6(tm) 3D processor
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-march=k6-2 -O2 -funroll-loops -pipe -fomit-frame-pointer -mfpmath=387"
CHOST="i586-pc-linux-gnu"
COMPILER="gcc3"
CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config
/usr/kde/2/share/config /usr/kde/3/share/config"
CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"
CXXFLAGS="-march=k6-2 -O2 -funroll-loops -pipe -fomit-frame-pointer -mfpmath=387"
DISTDIR="/mnt/server/portage/distfiles"
FEATURES="ccache autoaddcvs sandbox fixpackages"
GENTOO_MIRRORS="http://gentoo.oregonstate.edu
http://distro.ibiblio.org/pub/Linux/distributions/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="java zlib -3dfx 3dnow aalib -acpi -afs alsa apache2 apm -arts -atlas avi
-berkdb -bonobo -canna -cdr -cjk crypt -cscope cups -curl -debig -dedicated dga
directfb -doc -dvb -dvd -emacs -encode -esd ethereal -ev6 -evo fbcon -firebird
flash foomaticdb -freetds gb gd -gdbm -ggi gif gnome gphoto2 -gpm gps gtk gtk2
-gtkhtml -guile -icc -icc-pgo -imap imlib -innodb -informix -ipv6 -jack jikes
-joystick jpeg junit kde -kerberos -krb4 -ladcca lcms -ldap -leim -libg++
-libgda libwww -lirc -mad -maildir -matrox -mbox -mcal -mikmod memlimit mmx
motif mozilla mpeg mpi -mule -mysql -nas ncurses -nhc98 -nls nocardbus nocd
-oci8 -odbc -oggvorbis -opengl -oss pam -pcmcia -pda ppds pdflib perl -plotutils
png -pnp -postgres -bindist -prelude python qt quicktime -readline -ruby samba
-sasl -scanner sdl slang -slp -snmp -socks5 -spell -sse ssl svga tcltk tcpd
tetex tiff truetype -trusted usb -videos -voodoo3 -wavelan -wmf wxwindows -X
Xaw3d -xface -xinerama xml xml2 -xmms xv -zeo x86"
I tried some manual compilations to find what was causing the bug, here are the
results.
pluto src # if gcc -DHAVE_CONFIG_H -DPKGDATADIR=\"/usr/share/bison\"
-DLOCALEDIR=\"/usr/share/locale\" -I. -I. -I.. -I.. -I../lib -march=k6-2 -O2
-funroll-loops -pipe -fomit-frame-pointer -mfpmath=387 -MT reduce.o -MD -MP -MF
".deps/reduce.Tpo" -c -o reduce.o `test -f 'reduce.c' || echo './'`reduce.c;
then mv ".deps/reduce.Tpo" ".deps/reduce.Po"; else rm -f ".deps/reduce.Tpo";
exit 1; fi
{standard input}: Assembler messages:
{standard input}:1208: Error: value of ffffffffffffff7e too large for field of 1
bytes at 0000000000000d0b
exit
Note: the -funroll-loops and -march=k6-2 above
pluto src # if gcc -DHAVE_CONFIG_H -DPKGDATADIR=\"/usr/share/bison\"
-DLOCALEDIR=\"/usr/share/locale\" -I. -I. -I.. -I.. -I../lib -march=k6-2 -O2
-pipe -fomit-frame-pointer -mfpmath=387 -MT reduce.o -MD -MP -MF
".deps/reduce.Tpo" -c -o reduce.o `test -f 'reduce.c' || echo './'`reduce.c;
then mv ".deps/reduce.Tpo" ".deps/reduce.Po"; else rm -f ".deps/reduce.Tpo";
exit 1; fi
Succeeded.
pluto src # if gcc -DHAVE_CONFIG_H -DPKGDATADIR=\"/usr/share/bison\"
-DLOCALEDIR=\"/usr/share/locale\" -I. -I. -I.. -I.. -I../lib -march=i586 -O2
-funroll-loops -pipe -fomit-frame-pointer -mfpmath=387 -MT reduce.o -MD -MP -MF
".deps/reduce.Tpo" -c -o reduce.o `test -f 'reduce.c' || echo './'`reduce.c;
then mv ".deps/reduce.Tpo" ".deps/reduce.Po"; else rm -f ".deps/reduce.Tpo";
exit 1; fi
Succeeded.
Reproducible: Always
Steps to Reproduce:
1. emerge bison with CFLAGS="-march=k6-2 -funroll-loops" watch it fail.
2. emerge bison with CFLAGS="-march=i586 -funroll-loops" will compile.