Hi,
I'm using gcc 3.3 (but this happens as well with gcc 3.2), and the following error occurs when compiling src/fdrivers/svga24.c:
gcc -c -O2 -Wall -DLFB_BY_NEAR_POINTER -pipe -DSVGALIB_DRIVER -DFRAMEBUFFER_DRIVER -DINOUTP_FRAMEDRIVERS -I. -I./include -I../include -I../addons/print fdrivers/svga24.c -o fdrivers/svga24.o fdrivers/svga24.c: In function `drawhline': fdrivers/svga24.c:256: error: can't find a register in class `AD_REGS' while reloading `asm' fdrivers/svga24.c:257: error: can't find a register in class `AD_REGS' while reloading `asm' fdrivers/svga24.c:258: error: can't find a register in class `AD_REGS' while reloading `asm' fdrivers/svga24.c:259: error: can't find a register in class `AD_REGS' while reloading `asm' make[1]: *** [fdrivers/svga24.o] Error 1
I've tracked this down to src/include/gcc/memfill.h to the REPFILL24 macros.
When I use the following patch I'm able to continue compiling. Though this does not fix the bug.
----X<---- --- memfill.h 2003-05-26 03:26:19.000000000 +0200 +++ memfill.h-patched 2003-05-25 20:49:37.000000000 +0200 @@ -262,7 +262,9 @@ #define __INLINE_24_FAR_REPFILL__(P,C,B,FMODE,INS) \ __INLINE_386_REPFILL24__(P,C,B,INS,%%fs:)
+#if 0 #define GRX_HAVE_FAST_REPFILL24 +#endif
#endif /* __i386__ */
----X<----
I don't know if I'll have enough spare time to fix this, so if someone else could fix this properly it would be great :>.
regards, guillem
Guillem Jover wrote:
Hi,
I'm using gcc 3.3 (but this happens as well with gcc 3.2), and the following error occurs when compiling src/fdrivers/svga24.c:
Andris reported this too some time ago (and a workaround):
Guillem Jover wrote:
Hi,
I'm using gcc 3.3 (but this happens as well with gcc 3.2), and the following error occurs when compiling src/fdrivers/svga24.c:
gcc -c -O2 -Wall -DLFB_BY_NEAR_POINTER -pipe -DSVGALIB_DRIVER -DFRAMEBUFFER_DRIVER -DINOUTP_FRAMEDRIVERS -I. -I./include -I../include -I../addons/print fdrivers/svga24.c -o fdrivers/svga24.o fdrivers/svga24.c: In function `drawhline': fdrivers/svga24.c:256: error: can't find a register in class `AD_REGS' while reloading `asm' fdrivers/svga24.c:257: error: can't find a register in class `AD_REGS' while reloading `asm' fdrivers/svga24.c:258: error: can't find a register in class `AD_REGS' while reloading `asm' fdrivers/svga24.c:259: error: can't find a register in class `AD_REGS' while reloading `asm' make[1]: *** [fdrivers/svga24.o] Error 1
At last I have installed a linux distribution with gcc 3.2 andd I have seem the bug (Well, a gcc bug really I think, but...). The problem is in the __INLINE_386_REPFILL24__ macro in src/include/gcc/memfill.h
But, the macro is coded in assembler and I don't know what to do.
There are two possible workarounds:
- Use -O1 as suggested by Andris - Not use the specific gcc macro as suggested by Guillem
Really I don't like any, are there some people here who knows assembler?
M.Alvarez