ben@cunixc.cc.columbia.edu (Ben Fried) (06/06/89)
System: VaxStation II running a Van TCP-enhanced Ultrix 2.0 kernel. Sources: X11R3, patchlevel 8, with Purdue 2.0 & 2.1 speedups I just compiled the gcc 1.35 sources, and attempted to make Xqvss, with CC set to: "gcc -fcombine-regs -fstrength-reduce -finline-functions \ -fpcc-struct-return -DPURDUE -Dinline=INLINE -DNOSTDHDRS" I got lots of errors in the ddx/mfb subdirectory - so many that I had to compile it with pcc. The rest of the compile went without incident, but I still couldn't generate an Xqvss binary that actually worked. Has anyone done this before? If so, what am I doing wrong? Or is this a gcc bug manifesting itself? Ben -=-=- ben@columbia.edu ben@cunixc.cc.columbia.edu
spa%hara.fctunl.rccn.pt@MITVMA.MIT.EDU (06/06/89)
It's got to do with gcc's asm() thing, I got around the problem by inserting a "=" character before the "g" in the asm() instructions for FASTGETBITS() and FASTPUTBITS() in file ddx/mfb/maskbits.h. Try the following patch (apply with patch -l because BITNET mailers mung tabs...) *** maskbits.h~ Mon Feb 6 15:10:57 1989 --- maskbits.h Mon Jun 5 17:49:11 1989 *************** *** 315,321 #ifdef vax #define FASTGETBITS(psrc,x,w,dst) \ asm ("extzv %1,%2,%3,%0" \ ! : "g" (dst) \ : "g" (x), "g" (w), "m" (*(char *)(psrc))) #define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) --- 315,321 ----- #ifdef vax #define FASTGETBITS(psrc,x,w,dst) \ asm ("extzv %1,%2,%3,%0" \ ! : "=g" (dst) \ : "g" (x), "g" (w), "m" (*(char *)(psrc))) #define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) *************** *** 321,327 #define FASTPUTBITS(src, x, w, pdst) \ asm ("insv %3,%1,%2,%0" \ ! : "m" (*(char *)(pdst)) \ : "g" (x), "g" (w), "g" (src)) #define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) #endif vax --- 321,327 ----- #define FASTPUTBITS(src, x, w, pdst) \ asm ("insv %3,%1,%2,%0" \ ! : "=m" (*(char *)(pdst)) \ : "g" (x), "g" (w), "g" (src)) #define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) #endif vax --- Salvador Pinto Abreu BITNET/Internet: spa@fctunl.rccn.pt +---------------------------------+ UUCP: spa@unl.uucp | Departamento de Informatica +----------------------------------+ | Universidade Nova de Lisboa 2825 Monte Caparica, PORTUGAL | +--------------------------------------------------------------------+
grunwald@flute.cs.uiuc.edu (Dirk Grunwald) (06/06/89)
this is, I think, an Xqvss bug, not a gcc bug. whoever cobbled together the Xqvss driver made unsafe assumptions about the optimizer - in particular, you have to compile everything with -fvolatile & even then I'm not certain it will work properly. -- Dirk Grunwald -- Univ. of Illinois (grunwald@flute.cs.uiuc.edu)
grunwald@flute.cs.uiuc.edu (Dirk Grunwald) (06/06/89)
Whops, I was thinking of the *Xqdss* driver, not Xqvss. I haven't tried Xqdss, since we don't have one. When I did try to compile Xqvss with gcc (about 1.30, I think) it would compile but hang when running because of spin-loops that were to delay while display registers get loaded, etc. -- Dirk Grunwald -- Univ. of Illinois (grunwald@flute.cs.uiuc.edu)