This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gcc 3.2 - float-related errors with -O -march=athlon


I get errors when trying to compile with -march=athlon and at least -O
(-O1, -O2, -O3).
Errors stop appearing after changing optimization to -O0, -Os or
-march=i686.

$ gcc -v
Reading specs from /usr/lib/gcc-lib/athlon-pld-linux/3.2/specs
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++,f77,gcov,java,objc,ksi,ada --enable-c99 --enable-long-long --enable-multilib --enable-nls --with-gnu-as --with-gnu-ld --with-system-zlib --with-slibdir=/lib --without-x athlon-pld-linux
Thread model: posix
gcc version 3.2


This testcase is taken from lbreakout2, but file is cut down to less
than 1kB (and it still triggers bug).
It isn't rare case - I got very similar errors when trying to compile
XFree86 4.2.1 with "-O2 -march=athlon" optimization.
I'm using lbreakout2 code as example because it's simpler.

Example command line is:

$ gcc -c misc-b.i -O -march=athlon

Then errors appear:

misc-b.c: In function `circle_intersect':
misc-b.c:58: unable to find a register to spill in class `FLOAT_REGS'
misc-b.c:58: this is the insn:
(insn 23 21 24 (set (subreg:SF (reg/v:DI 29 rmm0 [65]) 0)
        (minus:SF (subreg:SF (reg/v:DI 61) 0)
            (subreg:SF (reg/v:DI 1 rdx [59]) 0))) 533 {*fop_sf_1_nosse} (insn_list 8 (insn_list 4 (nil)))
    (nil))
misc-b.c:58: confused by earlier errors, bailing out


-- 
Jakub Bogusz    http://prioris.mini.pw.edu.pl/~qboosh/
PLD Linux       http://www.pld.org.pl/

Attachment: misc-b.i
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]