P8000/WEGA/contrib/lcc/cmd/comp/u8k/macdefs.h

329 lines
8.0 KiB
C

#define ARGINIT 32 /* initial offset, in bits, of first argument on
the stack */
#define AUTOINIT 0 /* initial offset of first automatic variable */
/* alignments, in bits, of fundamental types */
#define ALCHAR 8
#define ALINT 16 /* 16 or 32 bit ints aligned thus */
#define ALDOUBLE 16
#define ALPOINT 16
#define ALSTRUCT 16
#define ALSTACK 16
#define ALINIT 16 /* alignment of an initialized quantity */
/* size in bits of fundamental types */
#define SZCHAR 8
# define SZINT 16
# define SZLONG 32
# define ALLONG ALINT
/* if defined, float and double are treated as long */
#undef NOFLOAT
#define DOUBLES
#ifndef NOFLOAT
/* Assume compiler switch DOUBLES that selects single/double precision*/
# ifdef DOUBLES
/* two floating point tupes, i.e. float != double */
# undef ONEFLOAT
# else
/* only one floating point type, i.e. float == double */
# define ONEFLOAT
# endif /* DOUBLES */
#endif /* NOFLOAT */
#ifdef ONEFLOAT
# define SZDOUBLE 32
# else
# define SZDOUBLE 64
# define SZFLOAT 32
# define ALFLOAT 16
#endif
#define SZPOINT 32
/* use common declarations for all unitialized declarations */
#define ALLCOMM
/* is &a[0] a constant when "a" is auto */
#undef ANDABLE
/* set aside argument space for return value */
#undef ARGALLRET
/* set aside argument space for returning structure value */
#undef ARGSRET
/* size in chars of assembly language buffer for in-line as code */
#undef ASMBUF
/* permit -Xs option that puts C line of code in assembler output */
#define ASSYCOMMENT
/* arguments run backward (downwards) on the stack */
#undef BACKARGS
/* automatics run backward (downwards) on the stack */
#undef BACKAUTO
/* temporaries run backward (downwards) on the stack */
#undef BACKTEMP
/* default cost of testing a register for condition codes */
#undef CCTEST
/* charged cost for load, store */
#define CLOAD(x) 4
#define CSTORE(x) 4
/* character-set translation; default: do nothing */
#undef CCTRANS
/* name of function so user can get control after arguments are declared
in a function*/
#undef CENDARG
/* characters are signed */
#define CHSIGN
/* name of function to reprocess tree before it is optimized */
#undef CLOCAL
/* string that introduces a comment to the assembler, double-quoted */
#define COMMENTSTR "//"
/* size in which constants are converted */
/* should be long if feasable - from VAX pcc for two-pass conversion */
/* CONSZ defined in manifest.h */
#define CONFMT "%ld"
/* a function or macro called with indication of errors
at the end of mainp1() */
#undef ENDJOB
/* make available the address of the end of a structure, useful when
copying one onto the stack */
#undef ENDSTRUCT
/* allow for enum type to depend on range of values; default INT */
#undef ENUMSIZE
/* define class of external variables */
#undef EXCLASS
/* alternate routine to be called by cerror(); default exit */
#undef EXIT
/* user-level fix-up at symbol definition time */
#define FIXDEF(p) fixdef(p)
/* support for structure debug info */
#define FIXSTRUCT(p,q) strend(p)
/* routine to convert string to float; default atof() */
#undef FLOATCVT
/* manifest.h, determines default TREESZ; Fortran can have huge trees */
#undef FORT
/* for fields within structures of types that are not long/short/char;
i.e. Honeywell addresses are 18 bits */
#undef FUNNYFLDS
/* format for compiler-generated labels */
#define LABFMT "L%d"
/* defined if magic lint comments are to be recognized */
#undef LINT
/* defined if fields are permitted to be long data type if int < long */
#define LONGFIELDS
/* number of bits from Least Significant Bit of a long in a register to
the LSB of an int */
#undef LOWINT
/* if defined, arguments are evaluated left to right;
default is right to left */
#undef LTORARGS
/* optional translation on a character constant */
#undef MAKECC
/* converstion nodes from long to ptr or ptr to long should be kept */
#define MEMONLY
/* if defined, asmout() in scan.c ignored and user provides one */
#undef MYASMOUT
/* optional C statements to be run near end of bccode() in optim.c */
#undef MYBCCODE
/* if defined, ccast() in trees.c ignored and user provides one */
#undef MYCCAST
/* if defined, sconvert() in optim.c ignored and user provides one */
#undef MYCONVERT
/* if defined, ctype() in pftn.c ignored and user provides one */
#undef MYCTYPE
/* if defined, ecode() in trees.c ignored and user provides one */
#undef MYECODE
/* my own initialization routine, for speed */
#define MYINIT(a,b) myinit(a,b)
/* if defined, getlab() in trees.c ignored and user provides one */
#undef MYLABELS
/* if defined, locctr() in trees.c ignored and user provides one */
#undef MYLOCCTR
/* used to define alternate printf() for printing mask in expand() */
#undef MYMASK
/* if defined, myoffcon() in optim.c ignored and user provides one */
#undef MYOFFCON
/* if defined, used in buildtree() to modifiy actions */
#undef MYOPACT
/* if defined, replaces action of p2tree; should end with return */
#undef MYP2TREE
/* to produce power-of-two divide or multiply */
#undef MYPDIV
#undef MYPMUL
/* if defined, replaces action of prtree; should end with return */
#undef MYPRTREE
/* escape within p2compile() in reader.c to "launder input" */
#undef MYREADER
/* if defined, where() in common ignored and user provides one */
#undef MYWHERE
/* if defined, not debug code is included */
#undef NODBG
/* if defined as "return(class)" this will disable FORTRAN types */
/* may need to be resolved with FORT */
#undef NOFORTRAN
/* short => int */
# define NOSHORT
# undef NOLONG
/* if defined, function calls of the form f(g(x)) can not have their
argument lists nested */
#undef NONEST
/* if defined, function calls of the form f(g()) where g() returns
a structure can not have their arguments nested */
#undef STCALLBAD
/* if defined, like STCALLBAD, except for cases where g() is unary,
i.e. takes no arguments */
#undef UCALLBAD
/* if defined, like UCALLBAD, except for cases where g() is a unary
Fortran function */
#undef UFCALLBAD
/* turn on optimization (may be out of date) */
#undef NOOPT
/* number of op table entries */
#undef NOPTB
/* if defined, no register arguments */
#undef NOREGARGS
/* unsigned quantities are forbidden */
#undef NOUNSIGNED
/* no longer used */
#undef NPSH
/* number of scratch registers */
#define NRGS 8
/* size of a string in sty.y */
#undef NSTRING
/* number of sty shapes */
#undef NSTYSHPS
/* output register number for SDB */
#define OUTREGNO(p) (ISPTR(p->stype)?p->offset+8:p->offset)
/* with PTR+INT, put the PTR on the left, or right */
#undef PTRLEFT
#define PTRRIGHT
/* except that, with PTR+CONST, put the constant on the right */
#define CONSRIGHT
/* type of a pointer, may be LONG or UNSIGNED; default INT */
# define PTRTYPE LONG
/* alternate putchar(), e.g. for uppercase-only assemblers */
#undef PUTCHAR
/* the name of the (shared) return area for structures; must collide
with user names! */
#define RNODNAME "__StRet"
/* right to left bytes */
#undef RTOLBYTES
/* sdb is enabled */
#undef SDB
/* used to construct register masks */
#define SETREGS(x) { extern int rsmask; rsmask |= x; }
/* define the shared structure return area */
#define SRETNAME(sz) printf( "\tcomm\t%s,%d\n", RNODNAME, sz/SZCHAR );
/* if defined, this is a stack machine and register allocation is
different */
#undef STACK
/* structures returned in static areas */
#define STATSRET
/* we want the standard prtree() or p2tree() included */
#define STDPRTREE
/* symbol table size */
#define SYMTSZ 2729
/* tree size */
#undef TREESZ
/* create a two-pass compiler */
#ifdef TWOPASS
# undef ONEPASS /* for ported VAX code from pcc */
#else
# undef TWOPASS
# define ONEPASS
#endif
/* pointer are not all alike (currently can only handle 2 types */
#undef TWOPTRS
/* turn on debugging in yacc functions */
#undef YYDEBUG
/* ??? */
#undef YYMAXDEPTH
/* if defined, user defines their own routine to pass structures shorter
than or equal to longs as longs */
#undef simpstr
/* number of registers needed to hold an object of type; default 1 */
#undef szty