[26860] in Athena Bugs

home help back first fref pref prev next nref lref last post

sun4 9.4.26: gcc 3.4.3

daemon@ATHENA.MIT.EDU (John Hawkinson)
Fri May 19 19:52:47 2006

Message-Id: <200605192352.k4JNqUU0027504@bart-savagewood.mit.edu>
To: bugs@mit.edu
Date: Fri, 19 May 2006 19:52:29 -0400
From: John Hawkinson <jhawk@mit.edu>
X-Spam-Score: 1.217
X-Spam-Level: * (1.217)
X-Spam-Flag: NO
Errors-To: bugs-bounces@mit.edu

System name:		bart-savagewood.mit.edu
Type and version:	Sun-Blade-100 9.4.26 (with mkserv)
Display type:		ifb

Shell:			/bin/sh (/bin/athena/tcsh?)
Window manager:		unknown

What were you trying to do?
	Attempting to compile Mplayer-1.0pre7try2.

What's wrong:
	Gcc has some kind of floating point register allocation
	bug:

gcc -save-temps -v -c -I../libvo -I../../libvo -O2 -mcpu=v9
-ffast-math -fomit-frame-pointer -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I. -I/usr/sfw/include/freetype2
-I/usr/sfw/include -o spudec.o spudec.c

produces:

spudec.s: Assembler messages:
spudec.s:2309: Error: Illegal operands: There are only 32 single precision f reg
isters; [0-31]

And looking at the .s file:

   2294 .LL658:
...
   2309         fmovdug %fcc3, %f18, %f34


and looking at the .c file is unexciting:

    654     case 1:
    655       if (sub_pos < 50) {
    656         bbox[2] = dys*sub_pos/100 - spu->height * scaley / 0x200;
    657         if (bbox[2] < 0) bbox[2] = 0;
    658         bbox[3] = bbox[2] + spu->height;
    659       } else {


Replacing -O4 with -O2 works. Of course, -O4 is what the default
configure invokation came up with.

What should have happened:
	The compiler should not have generated invalid assembly code
	for the current architecture.

Please describe any relevant documentation references:
	/mit/outland/src/MPlayer-1.0pre7try2.tar.bz2

home help back first fref pref prev next nref lref last post