[26860] in Athena Bugs
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