Our setup:

	Sun 3/60 with cgfour
	SunOS 4.0 (plus what Sun calls their "general hygiene" patch tape)
	XV11R3 + MIT fixes 1 through 8 + "Purdue enhancements" + one local
		"ANSIfication" fix (previously reported to MIT,
		and attached below)

I installed gcc 1.34 (plus the expr.c fix) and also ran the "fixincludes"
script.

I built the X stuff with with the "CC" line in the "Sun.macros" file set to:

             CC = gcc -fcombine-regs -fstrength-reduce -finline-functions -fpcc-struct-return -DPURDUE -Dinline=INLINE -DNOSTDHDRS

where -fcombine-regs, -fstrength-reduce, and -finline-functions
specify desired optimizations, -fpcc-struct-return makes things
compatible with the dbm library, -DPURDUE buys the Purdue speedups,
-Dinline=INLINE avoids a problem with a variable named "inline" in the
X file "fonts/bdftosnf/fontutil.c", and -DNOSTDHDRS avoids a problem
with multiple (and conflicting) typedef'ing of "size_t" in the
gcc-provided STDDEF_H and Sun's "sys/types.h".

Some clients may need -fwritable-strings.  twm is said to need it.

The ANSIfication fix:

> From ado Mon Dec 26 10:55:28 1988
> To: xbugs@expo.lcs.mit.edu
> Subject: Xlibint and __STDC__ don't mix
> 
> 
> 			  X Window System Bug Report
> 			    xbugs@expo.lcs.mit.edu
> 
> 
> 
> 
> VERSION:
> 	R3
> 
> CLIENT MACHINE and OPERATING SYSTEM:
> 	Sun 3/60 running SunOS 4.0
> 
> DISPLAY:
> 	Sun CG4
> 
> WINDOW MANAGER:
> 	uwm
> 
> AREA:
> 	Xlib
> 
> SYNOPSIS:
> 	Xlibint.h and __STDC__ don't mix
> 
> DESCRIPTION:
> 	If __STDC__ is defined (and UNIXCPP is not defined),
> 	code that uses the GetReqExtra macro defined in Xlibint.h
> 	is uncompilable.
> 
> REPEAT BY:
> 	Script started on Mon Dec 26 10:52:58 1988
> 	elsie$ cd lib/X
> 	elsie$ rm Xbackgnd.o
> 	rm: Xbackgnd.o: No such file or directory
> 	elsie$ rm XBackgnd.o
> 	elsie$ make XBackgnd.o CC=/usr/local/bin/gcc
> 	rm -f XBackgnd.o
> 	/usr/local/bin/gcc -c -O -I. -I../../. -I../.././X11  -DTCPCONN -DUNIXCONN XBackgnd.c
> 	XBackgnd.c: In function XSetWindowBackground:
> 	XBackgnd.c:16: undeclared variable `sz_' (first use here)
> 	*** Error code 1
> 	make: Fatal error: Command failed for target `XBackgnd.o'
> 	elsie$ exit
> 
> 	script done on Mon Dec 26 10:53:51 1988
> 
> SAMPLE FIX:
> 	*** 1.1/Xlibint.h	Mon Dec 26 10:39:37 1988
> 	--- 1.2/Xlibint.h	Mon Dec 26 10:39:37 1988
> 	***************
> 	*** 122,133 ****
> 	  #if defined(__STDC__) && !defined(UNIXCPP)
> 	  #define GetReqExtra(name, n, req) \
> 		  WORD64ALIGN\
> 	! 	if ((dpy->bufptr + SIZEOF(*req) + n) > dpy->bufmax)\
> 			_XFlush(dpy);\
> 		req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\
> 		req->reqType = X_##name;\
> 	! 	req->length = (SIZEOF(*req) + n)>>2;\
> 	! 	dpy->bufptr += SIZEOF(*req) + n;\
> 		dpy->request++
> 	  #else
> 	  #define GetReqExtra(name, n, req) \
> 	--- 122,133 ----
> 	  #if defined(__STDC__) && !defined(UNIXCPP)
> 	  #define GetReqExtra(name, n, req) \
> 		  WORD64ALIGN\
> 	! 	if ((dpy->bufptr + SIZEOF(x##name##Req) + n) > dpy->bufmax)\
> 			_XFlush(dpy);\
> 		req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\
> 		req->reqType = X_##name;\
> 	! 	req->length = (SIZEOF(x##name##Req) + n)>>2;\
> 	! 	dpy->bufptr += SIZEOF(x##name##Req) + n;\
> 		dpy->request++
> 	  #else
> 	  #define GetReqExtra(name, n, req) \
> -- 
> 	Arthur David Olson    ado@ncifcrf.gov    ADO is a trademark of Ampex.

