lib/libc/sys/syslib
lib/libc/sys/syslib_p
lib/libc/xx*
+lib/pcc/ccom
+lib/pcc/cgram.c
scripts/newline
scripts/nocomment
scripts/nostring
$(RM) *.o ccom sccom f1 $(DUMMIES)
clean:
# $(RM) *.o ccom sccom f1 cgram.c rodata.c pcctokens pcclocal.h gram.in $(DUMMIES)
- $(RM) *.o ccom
+ $(RM) *.o ccom cgram.c
sfix:
$(RM) $(SFILES)
sclean:
int maxa, mina, maxb, minb;
# ifndef ALLO0
-int allo0() { /* free everything */
+void allo0() { /* free everything */
register i;
return(0);
}
-int recl2(p) register NODE *p; {
+void recl2(p) register NODE *p; {
register r = p->tn.rval;
#ifndef OLD
int op = p->in.op;
int rdebug = 0;
# ifndef RFREE
-int rfree(r, t) int r; TWORD t; {
+void rfree(r, t) int r; TWORD t; {
/* mark register r free, if it is legal to do so */
/* t is the type */
# endif
# ifndef RBUSY
-int rbusy(r, t) int r; TWORD t; {
+void rbusy(r, t) int r; TWORD t; {
/* mark register r busy */
/* t is the type */
# endif
# ifndef BUG3
-int rwprint(rw) int rw; { /* print rewriting rule */
+void rwprint(rw) int rw; { /* print rewriting rule */
register i, flag;
static char * rwnames[] = {
}
# endif
-int reclaim(p, rw, cookie) NODE *p; int rw; int cookie; {
+void reclaim(p, rw, cookie) NODE *p; int rw; int cookie; {
register NODE **qq;
register NODE *q;
register i;
return(q);
}
-int allchk() {
+void allchk() {
/* check to ensure that all register are free */
register i;
+++ /dev/null
-#include <stdio.h>
-/*#include "config.h" manifest.h*/
-/*#include "macdefs.h" manifest.h*/
-/*#include "manifest.h" pass1.h*/
-/*#include "ndu.h" manifest.h*/
-#include "pass1.h"
-/*#include "pcclocal.h" macdefs.h*/
-
-# define TOKENS 0
-# define ERROR 1
-# define FREE 2
-# define STRING 3
-# define ICON 4
-# define FCON 5
-# define DCON 6
-# define NAME 7
-# define REG 8
-# define OREG 9
-# define CCODES 10
-# define FLD 11
-# define PLUS 12
-# define PLUSEQ 13
-# define UPLUS 14
-# define MINUS 15
-# define MINUSEQ 16
-# define UMINUS 17
-# define MUL 18
-# define MULEQ 19
-# define DIV 21
-# define DIVEQ 22
-# define MOD 23
-# define MODEQ 24
-# define INCR 25
-# define DECR 26
-# define ASSIGN 27
-# define AND 28
-# define ANDEQ 29
-# define OR 31
-# define OREQ 32
-# define ER 33
-# define EREQ 34
-# define LS 35
-# define LSEQ 36
-# define RS 37
-# define RSEQ 38
-# define COMPL 39
-# define EQ 40
-# define NE 41
-# define LE 42
-# define LT 43
-# define GE 44
-# define GT 45
-# define ULE 46
-# define ULT 47
-# define UGE 48
-# define UGT 49
-# define QUEST 50
-# define COLON 51
-# define ANDAND 52
-# define OROR 53
-# define NOT 54
-# define CALL 55
-# define UCALL 57
-# define FORTCALL 58
-# define UFORTCALL 60
-# define INLINE 61
-# define UINLINE 63
-# define DEREF 20
-# define ADDROF 30
-# define DOT 64
-# define STREF 65
-# define STASG 66
-# define STARG 67
-# define STCALL 68
-# define USTCALL 70
-# define SCONV 71
-# define PCONV 72
-# define PMCONV 73
-# define PVCONV 74
-# define CAST 75
-# define LB 76
-# define RB 77
-# define COMOP 78
-# define CM 79
-# define FORCE 80
-# define GOTO 81
-# define CBRANCH 82
-# define RETURN 83
-# define INIT 84
-# define TYPE 85
-# define CLASS 86
-# define MAXOP 86
-# define LOCALTOKENS 100
-# define ASOP 100
-# define RELOP 101
-# define EQUOP 102
-# define DIVOP 103
-# define SHIFTOP 104
-# define INCOP 105
-# define UNOP 106
-# define STROP 107
-# define LP 108
-# define RP 109
-# define LC 110
-# define RC 111
-# define STRUCT 112
-# define IF 113
-# define ELSE 114
-# define SWITCH 115
-# define BREAK 116
-# define CONTINUE 117
-# define WHILE 118
-# define DO 119
-# define FOR 120
-# define DEFAULT 121
-# define CASE 122
-# define SIZEOF 123
-# define ENUM 124
-# define SM 125
-
-# line 146 "cgram.y"
-/*# include "pass1.h"*/
-#define yyclearin yychar = -1
-#define yyerrok yyerrflag = 0
-extern int yychar;
-extern short yyerrflag;
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 150
-#endif
-YYSTYPE yylval, yyval;
-
-# line 165 "cgram.y"
- static int fake = 0;
-#ifndef FLEXNAMES
- static char fakename[NCHNAM+1];
-#else
- static char fakename[24];
-#endif
-# define YYERRCODE 256
-
-# line 899 "cgram.y"
-
-NODE *mkty(t, d, s) unsigned t; int d; int s; {
- return( block( TYPE, NIL, NIL, t, d, s ) );
- }
-
-NODE *bdty(op, p, v) int op; NODE *p; int v; {
- register NODE *q;
-
- q = block( op, p, NIL, INT, 0, INT );
-
- switch( op ){
-
- case UNARY MUL:
- case UNARY CALL:
- break;
-
- case LB:
- q->in.right = bcon(v);
- break;
-
- case NAME:
- q->tn.rval = v;
- break;
-
- default:
- cerror( "bad bdty" );
- }
-
- return( q );
- }
-
-int dstash(n) int n; { /* put n into the dimension table */
- if( curdim >= DIMTABSZ-1 ){
- cerror( "dimension table overflow");
- }
- dimtab[ curdim++ ] = n;
- }
-
-int savebc() {
- if( psavbc > & asavbc[BCSZ-4 ] ){
- cerror( "whiles, fors, etc. too deeply nested");
- }
- *psavbc++ = brklab;
- *psavbc++ = contlab;
- *psavbc++ = flostat;
- *psavbc++ = swx;
- flostat = 0;
- }
-
-int resetbc(mask) int mask; {
-
- swx = *--psavbc;
- flostat = *--psavbc | (flostat&mask);
- contlab = *--psavbc;
- brklab = *--psavbc;
-
- }
-
-int addcase(p) NODE *p; { /* add case to switch */
-
- p = optim( p ); /* change enum to ints */
- if( p->in.op != ICON ){
- uerror( "non-constant case expression");
- return;
- }
- if( swp == swtab ){
- uerror( "case not in switch");
- return;
- }
- if( swp >= &swtab[SWITSZ] ){
- cerror( "switch table overflow");
- }
- swp->sval = p->tn.lval;
- deflab( swp->slab = getlab() );
- ++swp;
- tfree(p);
- }
-
-int adddef() { /* add default case to switch */
- if( swtab[swx].slab >= 0 ){
- uerror( "duplicate default in switch");
- return;
- }
- if( swp == swtab ){
- uerror( "default not inside switch");
- return;
- }
- deflab( swtab[swx].slab = getlab() );
- }
-
-int swstart() {
- /* begin a switch block */
- if( swp >= &swtab[SWITSZ] ){
- cerror( "switch table overflow");
- }
- swx = swp - swtab;
- swp->slab = -1;
- ++swp;
- }
-
-int swend() { /* end a switch block */
-
- register struct sw *swbeg, *p, *q, *r, *r1;
- CONSZ temp;
- int tempi;
-
- swbeg = &swtab[swx+1];
-
- /* sort */
-
- r1 = swbeg;
- r = swp-1;
-
- while( swbeg < r ){
- /* bubble largest to end */
- for( q=swbeg; q<r; ++q ){
- if( q->sval > (q+1)->sval ){
- /* swap */
- r1 = q+1;
- temp = q->sval;
- q->sval = r1->sval;
- r1->sval = temp;
- tempi = q->slab;
- q->slab = r1->slab;
- r1->slab = tempi;
- }
- }
- r = r1;
- r1 = swbeg;
- }
-
- /* it is now sorted */
-
- for( p = swbeg+1; p<swp; ++p ){
- if( p->sval == (p-1)->sval ){
- uerror( "duplicate case in switch, %d", tempi=p->sval );
- return;
- }
- }
-
- genswitch( swbeg-1, swp-swbeg );
- swp = swbeg-1;
- }
-short yyexca[] ={
--1, 1,
- 0, -1,
- 7, 23,
- 18, 23,
- 108, 23,
- 125, 23,
- -2, 0,
--1, 19,
- 79, 82,
- 125, 82,
- -2, 7,
--1, 24,
- 79, 81,
- 125, 81,
- -2, 79,
--1, 26,
- 79, 85,
- 125, 85,
- -2, 80,
--1, 32,
- 110, 46,
- -2, 44,
--1, 34,
- 110, 38,
- -2, 36,
--1, 110,
- 85, 18,
- 86, 18,
- 112, 18,
- 124, 18,
- -2, 13,
--1, 281,
- 85, 16,
- 86, 16,
- 112, 16,
- 124, 16,
- -2, 14,
--1, 298,
- 85, 17,
- 86, 17,
- 112, 17,
- 124, 17,
- -2, 15,
- };
-# define YYNPROD 188
-# define YYLAST 1291
-short yyact[]={
-
- 212, 27, 263, 10, 9, 27, 46, 10, 9, 210,
- 77, 66, 21, 94, 201, 27, 21, 95, 133, 99,
- 18, 148, 167, 19, 6, 132, 21, 36, 111, 312,
- 14, 311, 157, 27, 14, 10, 27, 36, 272, 41,
- 43, 24, 16, 289, 21, 97, 16, 21, 10, 9,
- 8, 75, 271, 305, 292, 267, 266, 165, 28, 97,
- 92, 74, 14, 40, 42, 288, 138, 284, 113, 203,
- 245, 160, 155, 298, 16, 14, 203, 134, 208, 103,
- 53, 251, 57, 35, 33, 149, 153, 16, 108, 141,
- 142, 143, 144, 145, 146, 137, 31, 139, 140, 96,
- 27, 307, 22, 59, 290, 249, 22, 122, 45, 159,
- 204, 21, 71, 162, 287, 278, 22, 169, 170, 171,
- 173, 175, 177, 179, 181, 182, 184, 186, 188, 189,
- 190, 191, 192, 164, 22, 150, 134, 22, 93, 196,
- 205, 119, 70, 57, 120, 199, 72, 122, 149, 64,
- 96, 281, 193, 39, 17, 158, 301, 124, 39, 202,
- 125, 195, 126, 300, 49, 277, 202, 252, 276, 198,
- 207, 275, 154, 236, 109, 237, 49, 238, 4, 239,
- 49, 240, 274, 154, 241, 38, 242, 52, 243, 209,
- 38, 69, 118, 235, 9, 134, 48, 68, 150, 54,
- 119, 22, 56, 120, 161, 255, 122, 30, 48, 194,
- 250, 157, 48, 246, 100, 247, 124, 253, 254, 264,
- 256, 126, 299, 269, 259, 260, 261, 262, 285, 265,
- 116, 123, 118, 121, 279, 115, 273, 90, 87, 88,
- 89, 232, 112, 73, 65, 283, 251, 163, 96, 80,
- 98, 280, 78, 103, 26, 47, 282, 101, 51, 213,
- 250, 270, 79, 286, 98, 20, 197, 60, 90, 87,
- 88, 89, 232, 114, 34, 293, 294, 264, 296, 295,
- 80, 119, 26, 78, 120, 26, 32, 122, 7, 116,
- 123, 118, 121, 79, 67, 156, 226, 29, 110, 107,
- 302, 119, 308, 106, 120, 135, 264, 122, 309, 90,
- 87, 88, 89, 86, 50, 223, 25, 222, 90, 87,
- 88, 89, 232, 104, 61, 44, 206, 102, 91, 55,
- 80, 58, 168, 78, 166, 105, 63, 62, 37, 82,
- 81, 3, 84, 79, 111, 257, 223, 227, 222, 231,
- 220, 221, 228, 229, 230, 234, 233, 83, 119, 224,
- 2, 120, 152, 85, 122, 11, 12, 5, 23, 13,
- 82, 81, 118, 84, 124, 111, 211, 15, 227, 219,
- 231, 220, 221, 228, 229, 230, 234, 233, 83, 217,
- 224, 218, 118, 121, 216, 214, 223, 215, 222, 1,
- 0, 0, 0, 119, 0, 0, 120, 0, 0, 122,
- 0, 82, 81, 0, 84, 0, 0, 0, 131, 124,
- 82, 81, 125, 84, 126, 111, 0, 0, 227, 83,
- 231, 220, 221, 228, 229, 230, 234, 233, 83, 119,
- 224, 129, 120, 127, 128, 122, 0, 116, 123, 118,
- 121, 0, 0, 0, 131, 124, 0, 0, 125, 0,
- 126, 90, 87, 88, 89, 86, 0, 0, 0, 119,
- 117, 0, 120, 80, 0, 122, 78, 129, 0, 127,
- 128, 0, 0, 0, 0, 0, 79, 0, 0, 0,
- 225, 130, 116, 123, 118, 121, 0, 90, 87, 88,
- 89, 86, 0, 0, 0, 0, 117, 0, 0, 80,
- 0, 0, 78, 0, 0, 0, 291, 0, 0, 0,
- 119, 225, 79, 120, 0, 0, 122, 130, 116, 123,
- 118, 121, 90, 87, 88, 89, 86, 0, 0, 0,
- 0, 0, 0, 10, 80, 0, 0, 78, 0, 0,
- 0, 0, 258, 0, 0, 0, 0, 79, 116, 123,
- 118, 121, 0, 82, 81, 0, 84, 0, 0, 0,
- 14, 225, 90, 87, 88, 89, 86, 0, 0, 0,
- 0, 83, 16, 0, 80, 0, 0, 78, 0, 0,
- 0, 90, 87, 88, 89, 86, 187, 79, 0, 82,
- 81, 0, 84, 80, 0, 0, 78, 0, 0, 116,
- 0, 118, 121, 0, 0, 185, 79, 83, 0, 268,
- 0, 90, 87, 88, 89, 86, 90, 87, 88, 89,
- 86, 0, 0, 80, 82, 81, 78, 84, 80, 136,
- 0, 78, 0, 0, 0, 183, 79, 0, 0, 0,
- 180, 79, 83, 0, 90, 87, 88, 89, 86, 0,
- 0, 90, 87, 88, 89, 86, 80, 0, 0, 78,
- 0, 0, 0, 80, 82, 81, 78, 84, 178, 79,
- 0, 0, 0, 0, 0, 176, 79, 0, 0, 0,
- 0, 0, 83, 82, 81, 0, 84, 90, 87, 88,
- 89, 86, 90, 87, 88, 89, 86, 0, 0, 80,
- 0, 83, 78, 0, 80, 0, 0, 78, 0, 0,
- 0, 174, 79, 82, 81, 0, 84, 79, 82, 81,
- 0, 84, 0, 0, 0, 0, 90, 87, 88, 89,
- 86, 83, 0, 0, 0, 0, 83, 0, 80, 0,
- 0, 78, 0, 0, 0, 0, 82, 81, 0, 84,
- 172, 79, 0, 82, 81, 0, 84, 90, 87, 88,
- 89, 86, 0, 0, 83, 0, 0, 0, 0, 80,
- 0, 83, 78, 0, 0, 0, 90, 87, 88, 89,
- 86, 0, 79, 0, 0, 0, 0, 0, 80, 82,
- 81, 78, 84, 0, 82, 81, 0, 84, 151, 0,
- 0, 79, 90, 87, 88, 89, 86, 83, 0, 0,
- 0, 0, 83, 0, 80, 0, 0, 78, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 79, 82, 81,
- 0, 84, 0, 0, 0, 119, 0, 0, 120, 0,
- 0, 122, 0, 0, 0, 0, 83, 0, 0, 0,
- 131, 124, 0, 0, 125, 0, 126, 0, 0, 82,
- 81, 0, 84, 0, 76, 0, 0, 0, 119, 0,
- 0, 120, 0, 129, 122, 127, 128, 83, 82, 81,
- 0, 84, 0, 131, 124, 0, 0, 125, 0, 126,
- 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
- 0, 0, 117, 0, 82, 81, 129, 147, 127, 128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 83, 130, 116, 123, 118, 121, 119, 0,
- 0, 120, 310, 0, 122, 117, 0, 0, 0, 0,
- 0, 0, 0, 131, 124, 0, 0, 125, 0, 126,
- 0, 0, 0, 0, 0, 0, 130, 116, 123, 118,
- 121, 119, 0, 0, 120, 306, 129, 122, 127, 128,
- 0, 0, 119, 0, 0, 120, 131, 124, 122, 0,
- 125, 0, 126, 0, 0, 0, 0, 131, 124, 0,
- 0, 125, 0, 126, 0, 117, 0, 0, 0, 129,
- 0, 127, 128, 0, 0, 0, 0, 0, 0, 0,
- 129, 0, 127, 128, 0, 0, 130, 116, 123, 118,
- 121, 0, 0, 0, 0, 304, 0, 119, 117, 0,
- 120, 0, 0, 122, 0, 0, 0, 0, 0, 117,
- 0, 0, 131, 124, 0, 0, 125, 0, 126, 130,
- 116, 123, 118, 121, 0, 0, 0, 0, 303, 0,
- 130, 116, 123, 118, 121, 129, 297, 127, 128, 200,
- 119, 0, 0, 120, 0, 0, 122, 0, 0, 0,
- 0, 0, 0, 0, 119, 131, 124, 120, 0, 125,
- 122, 126, 0, 0, 117, 0, 0, 0, 0, 131,
- 124, 0, 0, 125, 0, 126, 0, 0, 129, 0,
- 127, 128, 0, 0, 0, 130, 116, 123, 118, 121,
- 0, 0, 129, 244, 127, 128, 119, 0, 0, 120,
- 0, 0, 122, 0, 0, 248, 0, 117, 0, 0,
- 0, 131, 124, 0, 0, 125, 0, 126, 0, 0,
- 0, 117, 0, 0, 0, 0, 0, 0, 130, 116,
- 123, 118, 121, 0, 129, 119, 127, 128, 120, 0,
- 0, 122, 130, 116, 123, 118, 121, 0, 0, 119,
- 131, 124, 120, 0, 125, 122, 126, 0, 119, 0,
- 0, 120, 0, 117, 122, 124, 0, 0, 125, 0,
- 126, 0, 0, 129, 124, 127, 128, 125, 0, 126,
- 0, 0, 0, 0, 130, 116, 123, 118, 121, 127,
- 0, 0, 0, 0, 0, 0, 129, 0, 127, 128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 130, 116, 123, 118, 121, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 116, 123,
- 118, 121, 0, 0, 0, 0, 0, 116, 123, 118,
- 121 };
-short yypact[]={
-
--1000, -78,-1000,-1000,-1000, 29,-1000, -50, 108,-1000,
- 122,-1000,-1000, -14, 279, -26, 267,-1000, -42, 77,
--1000, 93, 93, -1, 100, 231,-1000, 79,-1000, -50,
- 114, -50,-1000, 260,-1000,-1000,-1000,-1000, 40, 167,
- 100, 77, 88, 82, 33,-1000,-1000,-1000, 37, 166,
- 764,-1000,-1000,-1000,-1000, -65,-1000, -6, 135,-1000,
- 230, -2,-1000, -82,-1000,-1000, 165, 783,-1000,-1000,
--1000, 266,-1000,-1000, 158,1163, 529, -10, 783, 783,
- 783, 783, 783, 809, 458, 699, 75,-1000,-1000,-1000,
--1000, -39, -50, 132,-1000, 77, 104,-1000,-1000, -40,
- 260,-1000,-1000, 77,-1000,-1000,-1000,-1000, 8, -68,
--1000,-1000,-1000,1163,-1000,-1000, 783, 783, 733, 694,
- 658, 651, 623, 783, 618, 588, 569, 783, 783, 783,
- 783, 783, 130,-1000,1163, 529,-1000,-1000, 783, 259,
--1000, -10, -10, -10, -10, -10, -10, 458, 36, 970,
- 51,-1000, 31,1163,-1000,-1000,-1000,-1000,-1000,-1000,
--1000,-1000,-1000, -47,-1000,-1000,-1000, 265, -37, 289,
-1163,-1000, 783, 89, 783, 89, 783, 269, 783,-1000,
- 783, 508, 457, 783, 188, 783, 346, 783, 129,1177,
-1082,1163,1163, -41, 529, 130,1068,-1000, -4, 783,
--1000, 170, 58, 51, 783,-1000, -6,-1000,-1000, 234,
--1000,-1000, 427,-1000, 315, 315, 315, 315, 783, 315,
- -69, -70, 494, 254,-1000, -73, 315, 74, 63,-1000,
- 60, 57, 64, 783, 200, 26,1163,1163,1163,1163,
-1163,1163,1163,1163, 783,-1000,-1000, -44,-1000, 306,
- -10, 151,-1000, 5, 170,1163,-1000,-1000,-1000, -49,
--1000,-1000, -75, -5,1124,-1000,-1000,-1000,-1000, 391,
- -71,-1000,-1000,-1000, 783, 783, 783, 783,-1000,1025,
--1000,-1000, -52,1186,-1000,-1000, 145, 55,-1000, 48,
- 315,-1000,-1000, 959, 926, -72, 866,-1000,-1000,-1000,
- -8, 783,-1000,-1000,-1000, 783,-1000,-1000, 833, -94,
- -96,-1000,-1000 };
-short yypgo[]={
-
- 0, 399, 11, 397, 395, 394, 391, 389, 379, 377,
- 369, 368, 0, 2, 10, 24, 367, 50, 366, 365,
- 21, 14, 363, 13, 17, 41, 362, 360, 341, 20,
- 338, 337, 336, 259, 335, 22, 9, 334, 332, 138,
- 288, 331, 19, 103, 329, 328, 202, 326, 325, 265,
- 324, 316, 314, 25, 18, 305, 303, 299, 298, 296,
- 294 };
-short yyr1[]={
-
- 0, 1, 1, 27, 27, 28, 28, 30, 28, 31,
- 32, 32, 35, 35, 37, 37, 38, 38, 38, 34,
- 34, 34, 16, 16, 15, 15, 15, 15, 15, 40,
- 17, 17, 17, 17, 17, 18, 18, 9, 9, 41,
- 41, 43, 43, 19, 19, 10, 10, 44, 44, 46,
- 46, 39, 47, 39, 23, 23, 23, 23, 23, 25,
- 25, 25, 25, 25, 25, 24, 24, 24, 24, 24,
- 24, 24, 11, 48, 48, 48, 29, 50, 29, 51,
- 51, 49, 49, 49, 49, 49, 53, 53, 54, 54,
- 42, 42, 45, 45, 52, 52, 55, 33, 33, 56,
- 57, 58, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 59,
- 59, 59, 7, 4, 3, 5, 6, 8, 60, 2,
- 13, 13, 26, 26, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 14,
- 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 14, 14, 14, 14, 14, 20, 21,
- 21, 21, 21, 21, 21, 21, 22, 22 };
-short yyr2[]={
-
- 0, 2, 0, 1, 1, 2, 3, 0, 4, 2,
- 2, 0, 2, 0, 3, 4, 3, 4, 0, 3,
- 2, 2, 1, 0, 2, 2, 1, 1, 3, 1,
- 1, 2, 3, 1, 1, 5, 2, 1, 2, 1,
- 3, 1, 3, 5, 2, 1, 2, 1, 3, 2,
- 1, 1, 0, 4, 1, 1, 3, 2, 1, 2,
- 3, 3, 4, 1, 3, 2, 3, 3, 4, 3,
- 3, 2, 2, 1, 3, 1, 1, 0, 4, 1,
- 1, 1, 1, 3, 6, 1, 1, 3, 1, 4,
- 0, 1, 0, 1, 0, 1, 1, 1, 1, 4,
- 3, 1, 2, 1, 2, 2, 2, 7, 4, 2,
- 2, 2, 2, 3, 3, 1, 2, 2, 2, 2,
- 3, 2, 1, 4, 3, 4, 6, 4, 0, 2,
- 1, 0, 1, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
- 4, 4, 4, 4, 4, 5, 3, 3, 1, 2,
- 2, 2, 2, 2, 2, 2, 4, 4, 4, 2,
- 3, 3, 1, 1, 1, 1, 1, 3, 2, 0,
- 2, 5, 2, 3, 4, 3, 2, 2 };
-short yychk[]={
-
--1000, -1, -27, -28, 256, -16, -15, -40, -17, 86,
- 85, -19, -18, -10, 112, -9, 124, 125, -29, -24,
- -49, 18, 108, -11, -25, -51, 256, 7, -17, -40,
- 85, 110, 7, 110, 7, 125, 79, -30, 108, 76,
- -25, -24, -25, -24, -48, 109, 7, 256, 108, 76,
- -52, 27, 108, -17, 85, -44, -46, -17, -41, -43,
- 7, -50, -31, -32, 109, 77, -2, -60, 109, 109,
- 109, 79, 109, 77, -2, -12, 110, -14, 18, 28,
- 15, 106, 105, 123, 108, -22, 7, 4, 5, 6,
- 3, -45, 125, -39, -23, -24, -25, 51, 256, -42,
- 79, 27, -49, -24, -33, -34, -56, -57, -15, 256,
- -58, 110, 77, -12, 7, 77, 101, 79, 103, 12,
- 15, 104, 18, 102, 28, 31, 33, 52, 53, 50,
- 100, 27, -53, -54, -12, -55, 110, 105, 76, 107,
- 108, -14, -14, -14, -14, -14, -14, 108, -20, -12,
- -17, 109, -26, -12, 108, 111, -46, 79, 51, -2,
- 111, -43, -2, -39, 125, 125, -37, -35, -38, -12,
- -12, -12, 27, -12, 27, -12, 27, -12, 27, -12,
- 27, -12, -12, 27, -12, 27, -12, 27, -12, -12,
- -12, -12, -12, -42, 79, -53, -12, 7, -20, 109,
- 109, -21, 108, 18, 79, 109, -47, -2, 125, -35,
- -36, 111, -12, -33, -4, -3, -5, -7, -6, -8,
- 116, 117, 83, 81, 125, 256, -59, 113, 118, 119,
- 120, 115, 7, 122, 121, -15, -12, -12, -12, -12,
- -12, -12, -12, -12, 51, 111, -54, -42, 77, 109,
- -14, 76, 109, -21, -21, -12, -23, 111, 125, -36,
- -36, -36, -36, -13, -12, -36, 125, 125, 125, -12,
- 7, 125, 111, -36, 108, 108, 108, 108, 51, -12,
- 51, 125, -29, -12, 111, 77, -2, 109, 114, 118,
- 109, 125, 125, -12, -12, -13, -12, 51, 125, 77,
- 108, 108, -36, 109, 109, 125, 109, 109, -12, -13,
- 109, 125, 125 };
-short yydef[]={
-
- 2, -2, 1, 3, 4, 0, 22, 26, 27, 29,
- 30, 33, 34, 0, 45, 0, 37, 5, 0, -2,
- 76, 0, 0, 0, -2, 94, -2, 63, 24, 25,
- 31, 0, -2, 0, -2, 6, 77, 11, 0, 128,
- 59, 65, 0, 0, 0, 71, 73, 75, 0, 128,
- 0, 95, 72, 28, 32, 92, 47, 50, 90, 39,
- 41, 0, 8, 0, 66, 67, 0, 0, 64, 69,
- 70, 0, 60, 61, 0, 83, 0, 158, 0, 0,
- 0, 0, 0, 0, 0, 0, 172, 173, 174, 175,
- 176, 0, 93, 49, 51, 54, 55, 128, 58, 0,
- 91, 128, 78, 82, 9, 10, 97, 98, 0, 0,
- -2, 101, 68, 129, 74, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 90, 86, 88, 0, 96, 159, 0, 0,
- 187, 160, 161, 162, 163, 164, 165, 0, 0, 0,
- 179, 169, 0, 132, 186, 43, 48, 52, 128, 57,
- 35, 40, 42, 0, 20, 21, 13, 0, 0, 134,
- 135, 136, 0, 137, 0, 138, 0, 139, 0, 140,
- 0, 141, 142, 0, 143, 0, 144, 0, 145, 146,
- 0, 156, 157, 0, 91, 90, 0, 171, 0, 0,
- 177, 178, 179, 179, 0, 170, 0, 56, 19, 0,
- 12, 100, 0, 103, 0, 0, 0, 0, 131, 0,
- 0, 0, 0, 0, 115, 0, 0, 0, 0, 122,
- 0, 0, 172, 0, 0, 0, 148, 149, 150, 151,
- 147, 152, 153, 154, 0, 84, 87, 0, 168, 167,
- 166, 128, 180, 0, 182, 133, 53, 99, 102, 104,
- 105, 106, 0, 0, 130, 109, 110, 111, 112, 0,
- 0, 116, 117, 118, 0, 0, 131, 0, 119, 0,
- 121, -2, 0, 155, 89, 183, 0, 185, 124, 0,
- 0, 113, 114, 0, 0, 0, 0, 120, -2, 184,
- 0, 0, 108, 123, 125, 131, 127, 181, 0, 0,
- 0, 126, 107 };
-#pragma ifdef __GNUC__
-#pragma pragma GCC diagnostic ignored "-Wunused-label"
-#pragma endif
-#if defined(DOSCCS) && !defined(lint)
-static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83";
-#endif
-
-#
-# define YYFLAG -1000
-# define YYERROR goto yyerrlab
-# define YYACCEPT return(0)
-# define YYABORT return(1)
-
-/* parser for yacc output */
-
-#ifdef YYDEBUG
-int yydebug = 0; /* 1 for debugging */
-#endif
-YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
-int yychar = -1; /* current input token number */
-int yynerrs = 0; /* number of errors */
-short yyerrflag = 0; /* error recovery flag */
-
-int yyparse() {
-
- short yys[YYMAXDEPTH];
- short yyj, yym;
- register YYSTYPE *yypvt;
- register short yystate, *yyps, yyn;
- register YYSTYPE *yypv;
- register short *yyxi;
-
- yystate = 0;
- yychar = -1;
- yynerrs = 0;
- yyerrflag = 0;
- yyps= &yys[-1];
- yypv= &yyv[-1];
-
- yystack: /* put a state and value onto the stack */
-
-#ifdef YYDEBUG
- if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
-#endif
- if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
- *yyps = yystate;
- ++yypv;
- *yypv = yyval;
-
- yynewstate:
-
- yyn = yypact[yystate];
-
- if( yyn<= YYFLAG ) goto yydefault; /* simple state */
-
- if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
- if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
-
- if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
- yychar = -1;
- yyval = yylval;
- yystate = yyn;
- if( yyerrflag > 0 ) --yyerrflag;
- goto yystack;
- }
-
- yydefault:
- /* default state action */
-
- if( (yyn=yydef[yystate]) == -2 ) {
- if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
- /* look through exception table */
-
- for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
-
- while( *(yyxi+=2) >= 0 ){
- if( *yyxi == yychar ) break;
- }
- if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
- }
-
- if( yyn == 0 ){ /* error */
- /* error ... attempt to resume parsing */
-
- switch( yyerrflag ){
-
- case 0: /* brand new error */
-
- yyerror( "syntax error" );
- yyerrlab:
- ++yynerrs;
-
- case 1:
- case 2: /* incompletely recovered error ... try again */
-
- yyerrflag = 3;
-
- /* find a state where "error" is a legal shift action */
-
- while ( yyps >= yys ) {
- yyn = yypact[*yyps] + YYERRCODE;
- if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
- yystate = yyact[yyn]; /* simulate a shift of "error" */
- goto yystack;
- }
- yyn = yypact[*yyps];
-
- /* the current yyps has no shift onn "error", pop stack */
-
-#ifdef YYDEBUG
- if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
-#endif
- --yyps;
- --yypv;
- }
-
- /* there is no state on the stack with an error shift ... abort */
-
- yyabort:
- return(1);
-
- case 3: /* no shift yet; clobber input char */
-
-#ifdef YYDEBUG
- if( yydebug ) printf( "error recovery discards char %d\n", yychar );
-#endif
-
- if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
- yychar = -1;
- goto yynewstate; /* try again in the same state */
-
- }
-
- }
-
- /* reduction by production yyn */
-
-#ifdef YYDEBUG
- if( yydebug ) printf("reduce %d\n",yyn);
-#endif
- yyps -= yyr2[yyn];
- yypvt = yypv;
- yypv -= yyr2[yyn];
- yyval = yypv[1];
- yym=yyn;
- /* consult goto table to find next state */
- yyn = yyr1[yyn];
- yyj = yypgo[yyn] + *yyps + 1;
- if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
- switch(yym){
-
-case 2:
-# line 175 "cgram.y"
-ftnend(); break;
-case 3:
-# line 178 "cgram.y"
-{ curclass = SNULL; blevel = 0; } break;
-case 4:
-# line 180 "cgram.y"
-{ curclass = SNULL; blevel = 0; } break;
-case 5:
-# line 184 "cgram.y"
-{ yypvt[-1].nodep->in.op = FREE; } break;
-case 6:
-# line 186 "cgram.y"
-{ yypvt[-2].nodep->in.op = FREE; } break;
-case 7:
-# line 187 "cgram.y"
-{
- defid( tymerge(yypvt[-1].nodep,yypvt[-0].nodep), curclass==STATIC?STATIC:EXTDEF );
-#ifndef LINT
- pfstab(stab[yypvt[-0].nodep->tn.rval].sname);
-#endif
- } break;
-case 8:
-# line 193 "cgram.y"
-{
- if( blevel ) cerror( "function level error" );
- if( reached ) retstat |= NRETVAL;
- yypvt[-3].nodep->in.op = FREE;
- ftnend();
- } break;
-case 11:
-# line 204 "cgram.y"
-{ blevel = 1; } break;
-case 13:
-# line 209 "cgram.y"
-{ bccode();
- locctr(PROG);
- } break;
-case 14:
-# line 215 "cgram.y"
-{ yypvt[-1].nodep->in.op = FREE;
-#ifndef LINT
- plcstab(blevel);
-#endif
- } break;
-case 15:
-# line 221 "cgram.y"
-{ yypvt[-2].nodep->in.op = FREE;
-#ifndef LINT
- plcstab(blevel);
-#endif
- } break;
-case 16:
-# line 229 "cgram.y"
-{ yypvt[-1].nodep->in.op = FREE; } break;
-case 17:
-# line 231 "cgram.y"
-{ yypvt[-2].nodep->in.op = FREE; } break;
-case 19:
-# line 235 "cgram.y"
-{ curclass = SNULL; yypvt[-2].nodep->in.op = FREE; } break;
-case 20:
-# line 237 "cgram.y"
-{ curclass = SNULL; yypvt[-1].nodep->in.op = FREE; } break;
-case 21:
-# line 239 "cgram.y"
-{ curclass = SNULL; } break;
-case 23:
-# line 243 "cgram.y"
-{ yyval.nodep = mkty(INT,0,INT); curclass = SNULL; } break;
-case 24:
-# line 246 "cgram.y"
-{ yyval.nodep = yypvt[-0].nodep; } break;
-case 26:
-# line 249 "cgram.y"
-{ yyval.nodep = mkty(INT,0,INT); } break;
-case 27:
-# line 251 "cgram.y"
-{ curclass = SNULL ; } break;
-case 28:
-# line 253 "cgram.y"
-{ yypvt[-2].nodep->in.type = types( yypvt[-2].nodep->in.type, yypvt[-0].nodep->in.type, UNDEF );
- yypvt[-0].nodep->in.op = FREE;
- } break;
-case 29:
-# line 260 "cgram.y"
-{ curclass = yypvt[-0].intval; } break;
-case 31:
-# line 265 "cgram.y"
-{ yypvt[-1].nodep->in.type = types( yypvt[-1].nodep->in.type, yypvt[-0].nodep->in.type, UNDEF );
- yypvt[-0].nodep->in.op = FREE;
- } break;
-case 32:
-# line 269 "cgram.y"
-{ yypvt[-2].nodep->in.type = types( yypvt[-2].nodep->in.type, yypvt[-1].nodep->in.type, yypvt[-0].nodep->in.type );
- yypvt[-1].nodep->in.op = yypvt[-0].nodep->in.op = FREE;
- } break;
-case 35:
-# line 277 "cgram.y"
-{ yyval.nodep = dclstruct(yypvt[-4].intval); } break;
-case 36:
-# line 279 "cgram.y"
-{ yyval.nodep = rstruct(yypvt[-0].intval,0); stwart = instruct; } break;
-case 37:
-# line 283 "cgram.y"
-{ yyval.intval = bstruct(-1,0); stwart = SEENAME; } break;
-case 38:
-# line 285 "cgram.y"
-{ yyval.intval = bstruct(yypvt[-0].intval,0); stwart = SEENAME; } break;
-case 41:
-# line 293 "cgram.y"
-{ moedef( yypvt[-0].intval ); } break;
-case 42:
-# line 295 "cgram.y"
-{ strucoff = yypvt[-0].intval; moedef( yypvt[-2].intval ); } break;
-case 43:
-# line 299 "cgram.y"
-{ yyval.nodep = dclstruct(yypvt[-4].intval); } break;
-case 44:
-# line 301 "cgram.y"
-{ yyval.nodep = rstruct(yypvt[-0].intval,yypvt[-1].intval); } break;
-case 45:
-# line 305 "cgram.y"
-{ yyval.intval = bstruct(-1,yypvt[-0].intval); stwart=0; } break;
-case 46:
-# line 307 "cgram.y"
-{ yyval.intval = bstruct(yypvt[-0].intval,yypvt[-1].intval); stwart=0; } break;
-case 49:
-# line 315 "cgram.y"
-{ curclass = SNULL; stwart=0; yypvt[-1].nodep->in.op = FREE; } break;
-case 50:
-# line 317 "cgram.y"
-{ if( curclass != MOU ){
- curclass = SNULL;
- }
- else {
- sprintf( fakename, "$%dFAKE", fake++ );
-#ifdef FLEXNAMES
- /* No need to hash this, we won't look it up */
- defid( tymerge(yypvt[-0].nodep, bdty(NAME,NIL,lookup( savestr(fakename), SMOS ))), curclass );
-#else
- defid( tymerge(yypvt[-0].nodep, bdty(NAME,NIL,lookup( fakename, SMOS ))), curclass );
-#endif
- werror("structure typed union member must be named");
- }
- stwart = 0;
- yypvt[-0].nodep->in.op = FREE;
- } break;
-case 51:
-# line 337 "cgram.y"
-{ defid( tymerge(yypvt[-1].nodep,yypvt[-0].nodep), curclass); stwart = instruct; } break;
-case 52:
-# line 338 "cgram.y"
-{yyval.nodep=yypvt[-2].nodep;} break;
-case 53:
-# line 339 "cgram.y"
-{ defid( tymerge(yypvt[-4].nodep,yypvt[-0].nodep), curclass); stwart = instruct; } break;
-case 56:
-# line 345 "cgram.y"
-{ if( !(instruct&INSTRUCT) ) uerror( "field outside of structure" );
- if( yypvt[-0].intval<0 || yypvt[-0].intval >= FIELD ){
- uerror( "illegal field size" );
- yypvt[-0].intval = 1;
- }
- defid( tymerge(yypvt[-3].nodep,yypvt[-2].nodep), FIELD|yypvt[-0].intval );
- yyval.nodep = NIL;
- } break;
-case 57:
-# line 355 "cgram.y"
-{ if( !(instruct&INSTRUCT) ) uerror( "field outside of structure" );
- falloc( stab, yypvt[-0].intval, -1, yypvt[-2].nodep ); /* alignment or hole */
- yyval.nodep = NIL;
- } break;
-case 58:
-# line 360 "cgram.y"
-{ yyval.nodep = NIL; } break;
-case 59:
-# line 365 "cgram.y"
-{ umul:
- yyval.nodep = bdty( UNARY MUL, yypvt[-0].nodep, 0 ); } break;
-case 60:
-# line 368 "cgram.y"
-{ uftn:
- yyval.nodep = bdty( UNARY CALL, yypvt[-2].nodep, 0 ); } break;
-case 61:
-# line 371 "cgram.y"
-{ uary:
- yyval.nodep = bdty( LB, yypvt[-2].nodep, 0 ); } break;
-case 62:
-# line 374 "cgram.y"
-{ bary:
- if( (int)yypvt[-1].intval <= 0 ) werror( "zero or negative subscript" );
- yyval.nodep = bdty( LB, yypvt[-3].nodep, yypvt[-1].intval ); } break;
-case 63:
-# line 378 "cgram.y"
-{ yyval.nodep = bdty( NAME, NIL, yypvt[-0].intval ); } break;
-case 64:
-# line 380 "cgram.y"
-{ yyval.nodep=yypvt[-1].nodep; } break;
-case 65:
-# line 383 "cgram.y"
-{ goto umul; } break;
-case 66:
-# line 385 "cgram.y"
-{ goto uftn; } break;
-case 67:
-# line 387 "cgram.y"
-{ goto uary; } break;
-case 68:
-# line 389 "cgram.y"
-{ goto bary; } break;
-case 69:
-# line 391 "cgram.y"
-{ yyval.nodep = yypvt[-1].nodep; } break;
-case 70:
-# line 393 "cgram.y"
-{
- if( blevel!=0 ) uerror("function declaration in bad context");
- yyval.nodep = bdty( UNARY CALL, bdty(NAME,NIL,yypvt[-2].intval), 0 );
- stwart = 0;
- } break;
-case 71:
-# line 399 "cgram.y"
-{
- yyval.nodep = bdty( UNARY CALL, bdty(NAME,NIL,yypvt[-1].intval), 0 );
- stwart = 0;
- } break;
-case 72:
-# line 406 "cgram.y"
-{
- /* turn off typedefs for argument names */
- stwart = SEENAME;
- if( stab[yypvt[-1].intval].sclass == SNULL )
- stab[yypvt[-1].intval].stype = FTN;
- } break;
-case 73:
-# line 415 "cgram.y"
-{ ftnarg( yypvt[-0].intval ); stwart = SEENAME; } break;
-case 74:
-# line 417 "cgram.y"
-{ ftnarg( yypvt[-0].intval ); stwart = SEENAME; } break;
-case 77:
-# line 423 "cgram.y"
-{yyval.nodep=yypvt[-2].nodep;} break;
-case 79:
-# line 427 "cgram.y"
-{ defid( yypvt[-0].nodep = tymerge(yypvt[-1].nodep,yypvt[-0].nodep), curclass);
- beginit(yypvt[-0].nodep->tn.rval);
- } break;
-case 81:
-# line 434 "cgram.y"
-{ nidcl( tymerge(yypvt[-1].nodep,yypvt[-0].nodep) ); } break;
-case 82:
-# line 436 "cgram.y"
-{ defid( tymerge(yypvt[-1].nodep,yypvt[-0].nodep), uclass(curclass) );
- if( paramno > 0 ){
- uerror( "illegal argument" );
- paramno = 0;
- }
- } break;
-case 83:
-# line 444 "cgram.y"
-{ doinit( yypvt[-0].nodep );
- endinit(); } break;
-case 84:
-# line 447 "cgram.y"
-{ endinit(); } break;
-case 88:
-# line 457 "cgram.y"
-{ doinit( yypvt[-0].nodep ); } break;
-case 89:
-# line 459 "cgram.y"
-{ irbrace(); } break;
-case 94:
-# line 471 "cgram.y"
-{ werror( "old-fashioned initialization: use =" ); } break;
-case 96:
-# line 476 "cgram.y"
-{ ilbrace(); } break;
-case 99:
-# line 486 "cgram.y"
-{
-#ifndef LINT
- prcstab(blevel);
-#endif
- --blevel;
- if( blevel == 1 ) blevel = 0;
- clearst( blevel );
- checkst( blevel );
- autooff = *--psavbc;
- regvar = *--psavbc;
- } break;
-case 100:
-# line 500 "cgram.y"
-{ --blevel;
- if( blevel == 1 ) blevel = 0;
- clearst( blevel );
- checkst( blevel );
- autooff = *--psavbc;
- regvar = *--psavbc;
- } break;
-case 101:
-# line 510 "cgram.y"
-{ if( blevel == 1 ) dclargs();
- ++blevel;
- if( psavbc > &asavbc[BCSZ-2] ) cerror( "nesting too deep" );
- *psavbc++ = regvar;
- *psavbc++ = autooff;
- } break;
-case 102:
-# line 519 "cgram.y"
-{ ecomp( yypvt[-1].nodep ); } break;
-case 104:
-# line 522 "cgram.y"
-{ deflab(yypvt[-1].intval);
- reached = 1;
- } break;
-case 105:
-# line 526 "cgram.y"
-{ if( yypvt[-1].intval != NOLAB ){
- deflab( yypvt[-1].intval );
- reached = 1;
- }
- } break;
-case 106:
-# line 532 "cgram.y"
-{ branch( contlab );
- deflab( brklab );
- if( (flostat&FBRK) || !(flostat&FLOOP)) reached = 1;
- else reached = 0;
- resetbc(0);
- } break;
-case 107:
-# line 539 "cgram.y"
-{ deflab( contlab );
- if( flostat & FCONT ) reached = 1;
- ecomp( buildtree( CBRANCH, buildtree( NOT, yypvt[-2].nodep, NIL ), bcon( yypvt[-6].intval ) ) );
- deflab( brklab );
- reached = 1;
- resetbc(0);
- } break;
-case 108:
-# line 547 "cgram.y"
-{ deflab( contlab );
- if( flostat&FCONT ) reached = 1;
- if( yypvt[-2].nodep ) ecomp( yypvt[-2].nodep );
- branch( yypvt[-3].intval );
- deflab( brklab );
- if( (flostat&FBRK) || !(flostat&FLOOP) ) reached = 1;
- else reached = 0;
- resetbc(0);
- } break;
-case 109:
-# line 557 "cgram.y"
-{ if( reached ) branch( brklab );
- deflab( yypvt[-1].intval );
- swend();
- deflab(brklab);
- if( (flostat&FBRK) || !(flostat&FDEF) ) reached = 1;
- resetbc(FCONT);
- } break;
-case 110:
-# line 565 "cgram.y"
-{ if( brklab == NOLAB ) uerror( "illegal break");
- else if(reached) branch( brklab );
- flostat |= FBRK;
- if( brkflag ) goto rch;
- reached = 0;
- } break;
-case 111:
-# line 572 "cgram.y"
-{ if( contlab == NOLAB ) uerror( "illegal continue");
- else branch( contlab );
- flostat |= FCONT;
- goto rch;
- } break;
-case 112:
-# line 578 "cgram.y"
-{ retstat |= NRETVAL;
- branch( retlab );
- rch:
- if( !reached ) werror( "statement not reached");
- reached = 0;
- } break;
-case 113:
-# line 585 "cgram.y"
-{ register NODE *temp;
- idname = curftn;
- temp = buildtree( NAME, NIL, NIL );
- if(temp->in.type == TVOID)
- uerror("void function %s cannot return value",
- stab[idname].sname);
- temp->in.type = DECREF( temp->in.type );
- temp = buildtree( RETURN, temp, yypvt[-1].nodep );
- /* now, we have the type of the RHS correct */
- temp->in.left->in.op = FREE;
- temp->in.op = FREE;
- ecomp( buildtree( FORCE, temp->in.right, NIL ) );
- retstat |= RETVAL;
- branch( retlab );
- reached = 0;
- } break;
-case 114:
-# line 602 "cgram.y"
-{ register NODE *q;
- q = block( FREE, NIL, NIL, INT|ARY, 0, INT );
- q->tn.rval = idname = yypvt[-1].intval;
- defid( q, ULABEL );
- stab[idname].suse = -lineno;
- branch( stab[idname].offset );
- goto rch;
- } break;
-case 119:
-# line 616 "cgram.y"
-{ register NODE *q;
- q = block( FREE, NIL, NIL, INT|ARY, 0, LABEL );
- q->tn.rval = yypvt[-1].intval;
- defid( q, LABEL );
- reached = 1;
- } break;
-case 120:
-# line 623 "cgram.y"
-{ addcase(yypvt[-1].nodep);
- reached = 1;
- } break;
-case 121:
-# line 627 "cgram.y"
-{ reached = 1;
- adddef();
- flostat |= FDEF;
- } break;
-case 122:
-# line 633 "cgram.y"
-{ savebc();
- if( !reached ) werror( "loop not entered at top");
- brklab = getlab();
- contlab = getlab();
- deflab( yyval.intval = getlab() );
- reached = 1;
- } break;
-case 123:
-# line 642 "cgram.y"
-{ ecomp( buildtree( CBRANCH, yypvt[-1].nodep, bcon( yyval.intval=getlab()) ) ) ;
- reached = 1;
- } break;
-case 124:
-# line 647 "cgram.y"
-{ if( reached ) branch( yyval.intval = getlab() );
- else yyval.intval = NOLAB;
- deflab( yypvt[-2].intval );
- reached = 1;
- } break;
-case 125:
-# line 655 "cgram.y"
-{ savebc();
- if( !reached ) werror( "loop not entered at top");
- if( yypvt[-1].nodep->in.op == ICON && yypvt[-1].nodep->tn.lval != 0 ) flostat = FLOOP;
- deflab( contlab = getlab() );
- reached = 1;
- brklab = getlab();
- if( flostat == FLOOP ) tfree( yypvt[-1].nodep );
- else ecomp( buildtree( CBRANCH, yypvt[-1].nodep, bcon( brklab) ) );
- } break;
-case 126:
-# line 666 "cgram.y"
-{ if( yypvt[-3].nodep ) ecomp( yypvt[-3].nodep );
- else if( !reached ) werror( "loop not entered at top");
- savebc();
- contlab = getlab();
- brklab = getlab();
- deflab( yyval.intval = getlab() );
- reached = 1;
- if( yypvt[-1].nodep ) ecomp( buildtree( CBRANCH, yypvt[-1].nodep, bcon( brklab) ) );
- else flostat |= FLOOP;
- } break;
-case 127:
-# line 678 "cgram.y"
-{ register NODE *q;
-
- savebc();
- brklab = getlab();
- q = yypvt[-1].nodep;
- switch( q->in.type ) {
- case CHAR: case UCHAR:
- case SHORT: case USHORT:
- case INT: case UNSIGNED:
- case MOE: case ENUMTY:
- break;
- default:
- werror("switch expression not type int");
- q = makety( q, INT, q->fn.cdim, q->fn.csiz );
- }
- ecomp( buildtree( FORCE, q, NIL ) );
- branch( yyval.intval = getlab() );
- swstart();
- reached = 0;
- } break;
-case 128:
-# line 700 "cgram.y"
-{ yyval.intval=instruct; stwart=instruct=0; } break;
-case 129:
-# line 702 "cgram.y"
-{ yyval.intval = icons( yypvt[-0].nodep ); instruct=yypvt[-1].intval; } break;
-case 131:
-# line 706 "cgram.y"
-{ yyval.nodep=0; } break;
-case 133:
-# line 711 "cgram.y"
-{ goto bop; } break;
-case 134:
-# line 715 "cgram.y"
-{
- preconf:
- if( yychar==RELOP||yychar==EQUOP||yychar==AND||yychar==OR||yychar==ER ){
- precplaint:
- if( hflag ) werror( "precedence confusion possible: parenthesize!" );
- }
- bop:
- yyval.nodep = buildtree( yypvt[-1].intval, yypvt[-2].nodep, yypvt[-0].nodep );
- } break;
-case 135:
-# line 725 "cgram.y"
-{ yypvt[-1].intval = COMOP;
- goto bop;
- } break;
-case 136:
-# line 729 "cgram.y"
-{ goto bop; } break;
-case 137:
-# line 731 "cgram.y"
-{ if(yychar==SHIFTOP) goto precplaint; else goto bop; } break;
-case 138:
-# line 733 "cgram.y"
-{ if(yychar==SHIFTOP ) goto precplaint; else goto bop; } break;
-case 139:
-# line 735 "cgram.y"
-{ if(yychar==PLUS||yychar==MINUS) goto precplaint; else goto bop; } break;
-case 140:
-# line 737 "cgram.y"
-{ goto bop; } break;
-case 141:
-# line 739 "cgram.y"
-{ goto preconf; } break;
-case 142:
-# line 741 "cgram.y"
-{ if( yychar==RELOP||yychar==EQUOP ) goto preconf; else goto bop; } break;
-case 143:
-# line 743 "cgram.y"
-{ if(yychar==RELOP||yychar==EQUOP) goto preconf; else goto bop; } break;
-case 144:
-# line 745 "cgram.y"
-{ if(yychar==RELOP||yychar==EQUOP) goto preconf; else goto bop; } break;
-case 145:
-# line 747 "cgram.y"
-{ goto bop; } break;
-case 146:
-# line 749 "cgram.y"
-{ goto bop; } break;
-case 147:
-# line 751 "cgram.y"
-{ abop:
- yyval.nodep = buildtree( ASG yypvt[-2].intval, yypvt[-3].nodep, yypvt[-0].nodep );
- } break;
-case 148:
-# line 755 "cgram.y"
-{ goto abop; } break;
-case 149:
-# line 757 "cgram.y"
-{ goto abop; } break;
-case 150:
-# line 759 "cgram.y"
-{ goto abop; } break;
-case 151:
-# line 761 "cgram.y"
-{ goto abop; } break;
-case 152:
-# line 763 "cgram.y"
-{ goto abop; } break;
-case 153:
-# line 765 "cgram.y"
-{ goto abop; } break;
-case 154:
-# line 767 "cgram.y"
-{ goto abop; } break;
-case 155:
-# line 769 "cgram.y"
-{ yyval.nodep=buildtree(QUEST, yypvt[-4].nodep, buildtree( COLON, yypvt[-2].nodep, yypvt[-0].nodep ) );
- } break;
-case 156:
-# line 772 "cgram.y"
-{ werror( "old-fashioned assignment operator" ); goto bop; } break;
-case 157:
-# line 774 "cgram.y"
-{ goto bop; } break;
-case 159:
-# line 778 "cgram.y"
-{ yyval.nodep = buildtree( yypvt[-0].intval, yypvt[-1].nodep, bcon(1) ); } break;
-case 160:
-# line 780 "cgram.y"
-{ ubop:
- yyval.nodep = buildtree( UNARY yypvt[-1].intval, yypvt[-0].nodep, NIL );
- } break;
-case 161:
-# line 784 "cgram.y"
-{ if( ISFTN(yypvt[-0].nodep->in.type) || ISARY(yypvt[-0].nodep->in.type) ){
- werror( "& before array or function: ignored" );
- yyval.nodep = yypvt[-0].nodep;
- }
- else goto ubop;
- } break;
-case 162:
-# line 791 "cgram.y"
-{ goto ubop; } break;
-case 163:
-# line 793 "cgram.y"
-{
- yyval.nodep = buildtree( yypvt[-1].intval, yypvt[-0].nodep, NIL );
- } break;
-case 164:
-# line 797 "cgram.y"
-{ yyval.nodep = buildtree( yypvt[-1].intval==INCR ? ASG PLUS : ASG MINUS,
- yypvt[-0].nodep,
- bcon(1) );
- } break;
-case 165:
-# line 802 "cgram.y"
-{ yyval.nodep = doszof( yypvt[-0].nodep ); } break;
-case 166:
-# line 804 "cgram.y"
-{ yyval.nodep = buildtree( CAST, yypvt[-2].nodep, yypvt[-0].nodep );
- yyval.nodep->in.left->in.op = FREE;
- yyval.nodep->in.op = FREE;
- yyval.nodep = yyval.nodep->in.right;
- } break;
-case 167:
-# line 810 "cgram.y"
-{ yyval.nodep = doszof( yypvt[-1].nodep ); } break;
-case 168:
-# line 812 "cgram.y"
-{ yyval.nodep = buildtree( UNARY MUL, buildtree( PLUS, yypvt[-3].nodep, yypvt[-1].nodep ), NIL ); } break;
-case 169:
-# line 814 "cgram.y"
-{ yyval.nodep=buildtree(UNARY CALL,yypvt[-1].nodep,NIL); } break;
-case 170:
-# line 816 "cgram.y"
-{ yyval.nodep=buildtree(CALL,yypvt[-2].nodep,yypvt[-1].nodep); } break;
-case 171:
-# line 818 "cgram.y"
-{ if( yypvt[-1].intval == DOT ){
- if( notlval( yypvt[-2].nodep ) )uerror("structure reference must be addressable");
- yypvt[-2].nodep = buildtree( UNARY AND, yypvt[-2].nodep, NIL );
- }
- idname = yypvt[-0].intval;
- yyval.nodep = buildtree( STREF, yypvt[-2].nodep, buildtree( NAME, NIL, NIL ) );
- } break;
-case 172:
-# line 826 "cgram.y"
-{ idname = yypvt[-0].intval;
- /* recognize identifiers in initializations */
- if( blevel==0 && stab[idname].stype == UNDEF ) {
- register NODE *q;
-#ifndef FLEXNAMES
- werror( "undeclared initializer name %.8s", stab[idname].sname );
-#else
- werror( "undeclared initializer name %s", stab[idname].sname );
-#endif
- q = block( FREE, NIL, NIL, INT, 0, INT );
- q->tn.rval = idname;
- defid( q, EXTERN );
- }
- yyval.nodep=buildtree(NAME,NIL,NIL);
- stab[yypvt[-0].intval].suse = -lineno;
- } break;
-case 173:
-# line 843 "cgram.y"
-{ yyval.nodep=bcon(0);
- yyval.nodep->tn.lval = lastcon;
- yyval.nodep->tn.rval = NONAME;
- if( yypvt[-0].intval ) yyval.nodep->fn.csiz = yyval.nodep->in.type = ctype(LONG);
- } break;
-case 174:
-# line 849 "cgram.y"
-{ yyval.nodep=buildtree(FCON,NIL,NIL);
- yyval.nodep->fpn.fval = fcon;
- } break;
-case 175:
-# line 853 "cgram.y"
-{ yyval.nodep=buildtree(DCON,NIL,NIL);
- yyval.nodep->dpn.dval = dcon;
- } break;
-case 176:
-# line 857 "cgram.y"
-{ yyval.nodep = getstr(); /* get string contents */ } break;
-case 177:
-# line 859 "cgram.y"
-{ yyval.nodep=yypvt[-1].nodep; } break;
-case 178:
-# line 863 "cgram.y"
-{
- yyval.nodep = tymerge( yypvt[-1].nodep, yypvt[-0].nodep );
- yyval.nodep->in.op = NAME;
- yypvt[-1].nodep->in.op = FREE;
- } break;
-case 179:
-# line 871 "cgram.y"
-{ yyval.nodep = bdty( NAME, NIL, -1 ); } break;
-case 180:
-# line 873 "cgram.y"
-{ yyval.nodep = bdty( UNARY CALL, bdty(NAME,NIL,-1),0); } break;
-case 181:
-# line 875 "cgram.y"
-{ yyval.nodep = bdty( UNARY CALL, yypvt[-3].nodep, 0 ); } break;
-case 182:
-# line 877 "cgram.y"
-{ goto umul; } break;
-case 183:
-# line 879 "cgram.y"
-{ goto uary; } break;
-case 184:
-# line 881 "cgram.y"
-{ goto bary; } break;
-case 185:
-# line 883 "cgram.y"
-{ yyval.nodep = yypvt[-1].nodep; } break;
-case 186:
-# line 887 "cgram.y"
-{ if( stab[yypvt[-1].intval].stype == UNDEF ){
- register NODE *q;
- q = block( FREE, NIL, NIL, FTN|INT, 0, INT );
- q->tn.rval = yypvt[-1].intval;
- defid( q, EXTERN );
- }
- idname = yypvt[-1].intval;
- yyval.nodep=buildtree(NAME,NIL,NIL);
- stab[idname].suse = -lineno;
- } break;
- }
- goto yystack; /* stack new state and value */
-
- }
%right INCOP SIZEOF
%left LB LP STROP
%{
-# include "pass1.h"
+#include <stdio.h>
+/*#include "config.h" manifest.h*/
+/*#include "macdefs.h" manifest.h*/
+/*#include "manifest.h" pass1.h*/
+/*#include "ndu.h" manifest.h*/
+#include "pass1.h"
+/*#include "pcclocal.h" macdefs.h*/
+
+/*# include "pass1.h"*/
%}
/* define types */
;
%%
-NODE *
-mkty( t, d, s ) unsigned t; {
+NODE *mkty(t, d, s) unsigned t; int d; int s; {
return( block( TYPE, NIL, NIL, t, d, s ) );
}
-NODE *
-bdty( op, p, v ) NODE *p; {
+NODE *bdty(op, p, v) int op; NODE *p; int v; {
register NODE *q;
q = block( op, p, NIL, INT, 0, INT );
return( q );
}
-dstash( n ){ /* put n into the dimension table */
+void dstash(n) int n; { /* put n into the dimension table */
if( curdim >= DIMTABSZ-1 ){
cerror( "dimension table overflow");
}
dimtab[ curdim++ ] = n;
}
-savebc() {
+void savebc() {
if( psavbc > & asavbc[BCSZ-4 ] ){
cerror( "whiles, fors, etc. too deeply nested");
}
flostat = 0;
}
-resetbc(mask){
+void resetbc(mask) int mask; {
swx = *--psavbc;
flostat = *--psavbc | (flostat&mask);
}
-addcase(p) NODE *p; { /* add case to switch */
+void addcase(p) NODE *p; { /* add case to switch */
p = optim( p ); /* change enum to ints */
if( p->in.op != ICON ){
tfree(p);
}
-adddef(){ /* add default case to switch */
+void adddef() { /* add default case to switch */
if( swtab[swx].slab >= 0 ){
uerror( "duplicate default in switch");
return;
deflab( swtab[swx].slab = getlab() );
}
-swstart(){
+void swstart() {
/* begin a switch block */
if( swp >= &swtab[SWITSZ] ){
cerror( "switch table overflow");
++swp;
}
-swend(){ /* end a switch block */
+void swend() { /* end a switch block */
register struct sw *swbeg, *p, *q, *r, *r1;
CONSZ temp;
/*#include "manifest.h" pass1.h*/
/*#include "ndu.h" manifest.h*/
#include "pass1.h"
+/* it seems strange the following is not protected by #ifdef ONEPASS */
+/* possibly the calls to p2bbeg() and p2bend() were added after ONEPASS */
+#include "pass2.h"
/*#include "pcclocal.h" macdefs.h*/
#if defined(DOSCCS) && !defined(lint)
# define putstr(s) fputs((s), stdout)
-int branch(n) int n; {
+void branch(n) int n; {
/* output a branch to label n */
/* exception is an ordinary function branching to retlab: then, return */
if( n == retlab && !strftn ){
short log2tab[] = {0, 0, 1, 2, 2, 3, 3, 3, 3};
#define LOG2SZ 9
-int defalign(n) int n; {
+void defalign(n) int n; {
/* cause the alignment to become a multiple of n */
n /= SZCHAR;
if( lastloc != PROG && n > 1 ) printf( " .align %d\n", n >= 0 && n < LOG2SZ ? log2tab[n] : 0 );
return( temp );
}
-int deflab(n) int n; {
+void deflab(n) int n; {
/* output something to define the current position as label n */
printf( "L%d:\n", n );
}
int reg_use = 11;
-int efcode() {
+void efcode() {
/* code for the end of a function */
if( strftn ){ /* copy output (in R2) to caller */
int ftlab1, ftlab2;
-int bfcode(a, n) int a[]; int n; {
+void bfcode(a, n) int a[]; int n; {
/* code for the beginning of a function; a is an array of
indices in stab for the arguments; n is the number */
register i;
fdefflag = 1;
}
-int bccode() { /* called just before the first executable statment */
+void bccode() { /* called just before the first executable statment */
/* by now, the automatics and register variables are allocated */
SETOFF( autooff, SZINT );
/* set aside store area offset */
reg_use = (reg_use > regvar ? regvar : reg_use);
}
-int ejobcode(flag) int flag; {
+void ejobcode(flag) int flag; {
/* called just before final exit */
/* flag is 1 if errors, 0 if none */
}
-int aobeg() {
+void aobeg() {
/* called before removing automatics from stab */
}
-int aocode(p) struct symtab *p; {
+void aocode(p) struct symtab *p; {
/* called when automatic p removed from stab */
}
-int aoend() {
+void aoend() {
/* called after removing all automatics from stab */
}
-int defnam(p) register struct symtab *p; {
+void defnam(p) register struct symtab *p; {
/* define the current location as the name p->sname */
if( p->sclass == EXTDEF ){
}
-int bycode(t, i) int t; int i; {
+void bycode(t, i) int t; int i; {
#ifdef ASSTRINGS
static int lastoctal = 0;
#endif
#endif
}
-int zecode(n) int n; {
+void zecode(n) int n; {
/* n integer words of zeros */
OFFSZ temp;
if( n <= 0 ) return;
return( ALINT );
}
-int fldty(p) struct symtab *p; { /* fix up type of field p */
+void fldty(p) struct symtab *p; { /* fix up type of field p */
;
}
-int where(c) int c; { /* print location of error */
+void where(c) int c; { /* print location of error */
/* c is either 'u', 'c', or 'w' */
/* GCOS version */
fprintf( stderr, "%s, line %d: ", ftitle, lineno );
which is the correct "register move" for the passed type
*/
struct type_move {TWORD fromtype; char tostrng[8];} toreg_strs[] = {
- CHAR, "cvtbl",
- SHORT, "cvtwl",
- INT, "movl",
- LONG, "movl",
- FLOAT, "movf",
- DOUBLE, "movd",
- UCHAR, "movzbl",
- USHORT, "movzwl",
- UNSIGNED, "movl",
- ULONG, "movl",
- 0, ""
+ {CHAR, "cvtbl"},
+ {SHORT, "cvtwl"},
+ {INT, "movl"},
+ {LONG, "movl"},
+ {FLOAT, "movf"},
+ {DOUBLE, "movd"},
+ {UCHAR, "movzbl"},
+ {USHORT, "movzwl"},
+ {UNSIGNED, "movl"},
+ {ULONG, "movl"},
+ {0, ""}
};
char *toreg(type) TWORD type; {
struct sw heapsw[SWITSZ]; /* heap for switches */
-int genswitch(p, n) register struct sw *p; int n; {
+void genswitch(p, n) register struct sw *p; int n; {
/* p points to an array of structures, each consisting
of a constant value and a label.
The first is >=0 if there is a default label;
if( p->slab>=0 ) branch( p->slab );
}
-int makeheap(p, m, n) register struct sw *p; int m; int n; {
+void makeheap(p, m, n) register struct sw *p; int m; int n; {
register int q;
q = select(m);
return( l + (m-k < l ? m-k : l));
}
-int walkheap(start, limit) int start; int limit; {
+void walkheap(start, limit) int start; int limit; {
int label;
if( start > limit ) return;
NODE *lastfree; /* pointer to last free node; (for allocator) */
#ifdef __STDC__
-int uerror(char *s, ...)
+void uerror(char *s, ...)
#else
-int uerror(s, va_alist) char *s; va_dcl
+void uerror(s, va_alist) char *s; va_dcl
#endif
{ /* nonfatal error message */
va_list argp;
++nerrors;
where('u');
- _va_start(argp, fmt);
+ _va_start(argp, s);
vfprintf( stderr, s, argp );
va_end(argp);
fprintf( stderr, "\n" );
}
#ifdef __STDC__
-int cerror(char *s, ...)
+void cerror(char *s, ...)
#else
-int cerror(s, va_alist) char *s; va_dcl
+void cerror(s, va_alist) char *s; va_dcl
#endif
{ /* compiler error: die */
va_list argp;
}
else {
fprintf( stderr, "compiler error: " );
- _va_start(argp, fmt);
+ _va_start(argp, s);
fprintf( stderr, s, argp );
va_end(argp);
fprintf( stderr, "\n" );
int Wflag = 0; /* Non-zero means do not print warnings */
#ifdef __STDC__
-int werror(char *s, ...)
+void werror(char *s, ...)
#else
-int werror(s, va_alist) char *s; va_dcl
+void werror(s, va_alist) char *s; va_dcl
#endif
{ /* warning */
va_list argp;
if(Wflag) return;
where('w');
fprintf( stderr, "warning: " );
- _va_start(argp, fmt);
+ _va_start(argp, s);
fprintf( stderr, s, argp );
va_end(argp);
fprintf( stderr, "\n" );
#endif
}
-int tinit() { /* initialize expression tree search */
+void tinit() { /* initialize expression tree search */
register NODE *p;
/* NOTREACHED */
}
-int tcheck() { /* ensure that all nodes have been freed */
+void tcheck() { /* ensure that all nodes have been freed */
register NODE *p;
freetstr();
#endif
}
-int tfree(p) NODE *p; {
+void tfree(p) NODE *p; {
/* free the tree p */
- extern tfree1();
+ extern void tfree1();
if( p->in.op != FREE ) walkf( p, tfree1 );
}
-int tfree1(p) NODE *p; {
+void tfree1(p) NODE *p; {
if( p == 0 ) cerror( "freeing blank tree!");
else p->in.op = FREE;
}
-int fwalk(t, f, down) register NODE *t; int (*f)(); int down; {
+void fwalk(t, f, down) register NODE *t; void (*f) __P((register NODE *p, int down, int *a, int *b)); int down; {
int down1, down2;
}
#ifndef vax
-int walkf(t, f) register NODE *t; int (*f)(); {
+void walkf(t, f) register NODE *t; void (*f) __P((register NODE *p)); {
register opty;
opty = optype(t->in.op);
* Deliberately avoids recursion -- use this version on machines with
* expensive procedure calls.
*/
-int walkf(t, f) register NODE *t; register int (*f)(); {
+void walkf(t, f) register NODE *t; void (*f) __P((register NODE *p)); {
register int i = 1;
register int opty = optype(t->in.op);
static NODE *at[NR];
struct dopest { int dopeop; char opst[8]; int dopeval; } indope[] = {
- NAME, "NAME", LTYPE,
- STRING, "STRING", LTYPE,
- REG, "REG", LTYPE,
- OREG, "OREG", LTYPE,
- ICON, "ICON", LTYPE,
- FCON, "FCON", LTYPE,
- DCON, "DCON", LTYPE,
- CCODES, "CCODES", LTYPE,
- UNARY MINUS, "U-", UTYPE,
- UNARY MUL, "U*", UTYPE,
- UNARY AND, "U&", UTYPE,
- UNARY CALL, "UCALL", UTYPE|CALLFLG,
- UNARY FORTCALL, "UFCALL", UTYPE|CALLFLG,
- NOT, "!", UTYPE|LOGFLG,
- COMPL, "~", UTYPE,
- FORCE, "FORCE", UTYPE,
- INIT, "INIT", UTYPE,
- SCONV, "SCONV", UTYPE,
- PCONV, "PCONV", UTYPE,
- PLUS, "+", BITYPE|FLOFLG|SIMPFLG|COMMFLG,
- ASG PLUS, "+=", BITYPE|ASGFLG|ASGOPFLG|FLOFLG|SIMPFLG|COMMFLG,
- MINUS, "-", BITYPE|FLOFLG|SIMPFLG,
- ASG MINUS, "-=", BITYPE|FLOFLG|SIMPFLG|ASGFLG|ASGOPFLG,
- MUL, "*", BITYPE|FLOFLG|MULFLG,
- ASG MUL, "*=", BITYPE|FLOFLG|MULFLG|ASGFLG|ASGOPFLG,
- AND, "&", BITYPE|SIMPFLG|COMMFLG,
- ASG AND, "&=", BITYPE|SIMPFLG|COMMFLG|ASGFLG|ASGOPFLG,
- QUEST, "?", BITYPE,
- COLON, ":", BITYPE,
- ANDAND, "&&", BITYPE|LOGFLG,
- OROR, "||", BITYPE|LOGFLG,
- CM, ",", BITYPE,
- COMOP, ",OP", BITYPE,
- ASSIGN, "=", BITYPE|ASGFLG,
- DIV, "/", BITYPE|FLOFLG|MULFLG|DIVFLG,
- ASG DIV, "/=", BITYPE|FLOFLG|MULFLG|DIVFLG|ASGFLG|ASGOPFLG,
- MOD, "%", BITYPE|DIVFLG,
- ASG MOD, "%=", BITYPE|DIVFLG|ASGFLG|ASGOPFLG,
- LS, "<<", BITYPE|SHFFLG,
- ASG LS, "<<=", BITYPE|SHFFLG|ASGFLG|ASGOPFLG,
- RS, ">>", BITYPE|SHFFLG,
- ASG RS, ">>=", BITYPE|SHFFLG|ASGFLG|ASGOPFLG,
- OR, "|", BITYPE|COMMFLG|SIMPFLG,
- ASG OR, "|=", BITYPE|COMMFLG|SIMPFLG|ASGFLG|ASGOPFLG,
- ER, "^", BITYPE|COMMFLG|SIMPFLG,
- ASG ER, "^=", BITYPE|COMMFLG|SIMPFLG|ASGFLG|ASGOPFLG,
- INCR, "++", BITYPE|ASGFLG,
- DECR, "--", BITYPE|ASGFLG,
- STREF, "->", BITYPE,
- CALL, "CALL", BITYPE|CALLFLG,
- FORTCALL, "FCALL", BITYPE|CALLFLG,
- EQ, "==", BITYPE|LOGFLG,
- NE, "!=", BITYPE|LOGFLG,
- LE, "<=", BITYPE|LOGFLG,
- LT, "<", BITYPE|LOGFLG,
- GE, ">", BITYPE|LOGFLG,
- GT, ">", BITYPE|LOGFLG,
- UGT, "UGT", BITYPE|LOGFLG,
- UGE, "UGE", BITYPE|LOGFLG,
- ULT, "ULT", BITYPE|LOGFLG,
- ULE, "ULE", BITYPE|LOGFLG,
+ {NAME, "NAME", LTYPE},
+ {STRING, "STRING", LTYPE},
+ {REG, "REG", LTYPE},
+ {OREG, "OREG", LTYPE},
+ {ICON, "ICON", LTYPE},
+ {FCON, "FCON", LTYPE},
+ {DCON, "DCON", LTYPE},
+ {CCODES, "CCODES", LTYPE},
+ {UNARY MINUS, "U-", UTYPE},
+ {UNARY MUL, "U*", UTYPE},
+ {UNARY AND, "U&", UTYPE},
+ {UNARY CALL, "UCALL", UTYPE|CALLFLG},
+ {UNARY FORTCALL, "UFCALL", UTYPE|CALLFLG},
+ {NOT, "!", UTYPE|LOGFLG},
+ {COMPL, "~", UTYPE},
+ {FORCE, "FORCE", UTYPE},
+ {INIT, "INIT", UTYPE},
+ {SCONV, "SCONV", UTYPE},
+ {PCONV, "PCONV", UTYPE},
+ {PLUS, "+", BITYPE|FLOFLG|SIMPFLG|COMMFLG},
+ {ASG PLUS, "+=", BITYPE|ASGFLG|ASGOPFLG|FLOFLG|SIMPFLG|COMMFLG},
+ {MINUS, "-", BITYPE|FLOFLG|SIMPFLG},
+ {ASG MINUS, "-=", BITYPE|FLOFLG|SIMPFLG|ASGFLG|ASGOPFLG},
+ {MUL, "*", BITYPE|FLOFLG|MULFLG},
+ {ASG MUL, "*=", BITYPE|FLOFLG|MULFLG|ASGFLG|ASGOPFLG},
+ {AND, "&", BITYPE|SIMPFLG|COMMFLG},
+ {ASG AND, "&=", BITYPE|SIMPFLG|COMMFLG|ASGFLG|ASGOPFLG},
+ {QUEST, "?", BITYPE},
+ {COLON, ":", BITYPE},
+ {ANDAND, "&&", BITYPE|LOGFLG},
+ {OROR, "||", BITYPE|LOGFLG},
+ {CM, ",", BITYPE},
+ {COMOP, ",OP", BITYPE},
+ {ASSIGN, "=", BITYPE|ASGFLG},
+ {DIV, "/", BITYPE|FLOFLG|MULFLG|DIVFLG},
+ {ASG DIV, "/=", BITYPE|FLOFLG|MULFLG|DIVFLG|ASGFLG|ASGOPFLG},
+ {MOD, "%", BITYPE|DIVFLG},
+ {ASG MOD, "%=", BITYPE|DIVFLG|ASGFLG|ASGOPFLG},
+ {LS, "<<", BITYPE|SHFFLG},
+ {ASG LS, "<<=", BITYPE|SHFFLG|ASGFLG|ASGOPFLG},
+ {RS, ">>", BITYPE|SHFFLG},
+ {ASG RS, ">>=", BITYPE|SHFFLG|ASGFLG|ASGOPFLG},
+ {OR, "|", BITYPE|COMMFLG|SIMPFLG},
+ {ASG OR, "|=", BITYPE|COMMFLG|SIMPFLG|ASGFLG|ASGOPFLG},
+ {ER, "^", BITYPE|COMMFLG|SIMPFLG},
+ {ASG ER, "^=", BITYPE|COMMFLG|SIMPFLG|ASGFLG|ASGOPFLG},
+ {INCR, "++", BITYPE|ASGFLG},
+ {DECR, "--", BITYPE|ASGFLG},
+ {STREF, "->", BITYPE},
+ {CALL, "CALL", BITYPE|CALLFLG},
+ {FORTCALL, "FCALL", BITYPE|CALLFLG},
+ {EQ, "==", BITYPE|LOGFLG},
+ {NE, "!=", BITYPE|LOGFLG},
+ {LE, "<=", BITYPE|LOGFLG},
+ {LT, "<", BITYPE|LOGFLG},
+ {GE, ">", BITYPE|LOGFLG},
+ {GT, ">", BITYPE|LOGFLG},
+ {UGT, "UGT", BITYPE|LOGFLG},
+ {UGE, "UGE", BITYPE|LOGFLG},
+ {ULT, "ULT", BITYPE|LOGFLG},
+ {ULE, "ULE", BITYPE|LOGFLG},
#ifdef ARS
- ARS, "A>>", BITYPE,
+ {ARS, "A>>", BITYPE},
#endif
- TYPE, "TYPE", LTYPE,
- LB, "[", BITYPE,
- CBRANCH, "CBRANCH", BITYPE,
- FLD, "FLD", UTYPE,
- PMCONV, "PMCONV", BITYPE,
- PVCONV, "PVCONV", BITYPE,
- RETURN, "RETURN", BITYPE|ASGFLG|ASGOPFLG,
- CAST, "CAST", BITYPE|ASGFLG|ASGOPFLG,
- GOTO, "GOTO", UTYPE,
- STASG, "STASG", BITYPE|ASGFLG,
- STARG, "STARG", UTYPE,
- STCALL, "STCALL", BITYPE|CALLFLG,
- UNARY STCALL, "USTCALL", UTYPE|CALLFLG,
-
- -1, "", 0
+ {TYPE, "TYPE", LTYPE},
+ {LB, "[", BITYPE},
+ {CBRANCH, "CBRANCH", BITYPE},
+ {FLD, "FLD", UTYPE},
+ {PMCONV, "PMCONV", BITYPE},
+ {PVCONV, "PVCONV", BITYPE},
+ {RETURN, "RETURN", BITYPE|ASGFLG|ASGOPFLG},
+ {CAST, "CAST", BITYPE|ASGFLG|ASGOPFLG},
+ {GOTO, "GOTO", UTYPE},
+ {STASG, "STASG", BITYPE|ASGFLG},
+ {STARG, "STARG", UTYPE},
+ {STCALL, "STCALL", BITYPE|CALLFLG},
+ {UNARY STCALL, "USTCALL", UTYPE|CALLFLG},
+
+ {-1, "", 0}
};
-int mkdope() {
+void mkdope() {
register struct dopest *q;
for( q = indope; q->dopeop >= 0; ++q ){
}
}
# ifndef BUG4
-int tprint(t) TWORD t; { /* output a nice description of the type of t */
+void tprint(t) TWORD t; { /* output a nice description of the type of t */
static char * tnames[] = {
"undef",
# endif
# ifndef NOLOPEN
-int lopen(s) char *s; {
+void lopen(s) char *s; {
/* if null, opens the standard input */
if( *s ){
lrd = fopen( s, "r" );
# endif
# ifndef NOLCREAD
-int lcread(cp, n) char *cp; int n; {
+void lcread(cp, n) char *cp; int n; {
if( n > 0 ){
if( fread( cp, 4, n, lrd ) != n ) cerror( "intermediate file read error" );
}
# endif
# ifndef NOLCCOPY
-int lccopy(n) register n; {
+void lccopy(n) register n; {
register i;
static char fbuf[BUFSIZ];
if( n > 0 ){
/* machine dependent file */
-int label(n) int n; {
+void label(n) int n; {
printf( "L%d:\n", n );
}
-int tlabel() {
+void tlabel() {
lccopy( 2 );
printf( ":\n" );
}
/*#include "manifest.h" pass1.h*/
/*#include "ndu.h" manifest.h*/
#include "pass1.h"
+/* it seems strange the following is not protected by #ifdef ONEPASS */
+/* possibly the call to p2compile() was added after ONEPASS */
+#include "pass2.h"
/*#include "pcclocal.h" macdefs.h*/
#if defined(DOSCCS) && !defined(lint)
return(1); /* all names can have & taken on them */
}
-int cendarg() { /* at the end of the arguments of a ftn, set the automatic offset */
+void cendarg() { /* at the end of the arguments of a ftn, set the automatic offset */
autooff = AUTOINIT;
}
static inwd /* current bit offsed in word */;
static word /* word being built from fields */;
-int incode(p, sz) register NODE *p; int sz; {
+void incode(p, sz) register NODE *p; int sz; {
/* generate initialization code for assigning a constant c
to a field of width sz */
}
}
-int fincode(d, sz) double d; int sz; {
+void fincode(d, sz) double d; int sz; {
/* output code to initialize space of size sz to the value d */
/* the proper alignment has been obtained */
/* inoff is updated to have the proper final value */
inoff += sz;
}
-int cinit(p, sz) NODE *p; int sz; {
+void cinit(p, sz) NODE *p; int sz; {
NODE *l;
/*
inoff += sz;
}
-int vfdzero(n) int n; { /* define n bits of zeros in a vfd */
+void vfdzero(n) int n; { /* define n bits of zeros in a vfd */
if( n <= 0 ) return;
}
-int commdec(id) int id; { /* make a common declaration for id, if reasonable */
+void commdec(id) int id; { /* make a common declaration for id, if reasonable */
register struct symtab *q;
OFFSZ off, tsize();
return( DCON );
}
-int ecode(p) NODE *p; {
+void ecode(p) NODE *p; {
/* walk the tree and write out the nodes.. */
# define BITMASK(n) ((1L<<n)-1)
-int where2(c) int c; {
+void where2(c) int c; {
fprintf( stderr, "%s, line %d: ", ftitle, lineno );
}
-int lineid(l, fn) int l; char *fn; {
+void lineid(l, fn) int l; char *fn; {
/* identify line l and file fn */
printf( "# line %d, file %s\n", l, fn );
}
-int eobl2() {
+void eobl2() {
OFFSZ spoff; /* offset from stack pointer */
#ifdef FORT
spoff = maxoff;
struct hoptab { int opmask; char * opstring; } ioptab[] = {
- ASG PLUS, "add",
- ASG MINUS, "sub",
- ASG MUL, "mul",
- ASG DIV, "div",
- ASG OR, "bis",
- ASG ER, "xor",
- ASG AND, "bic",
- PLUS, "add",
- MINUS, "sub",
- MUL, "mul",
- DIV, "div",
- OR, "bis",
- ER, "xor",
- AND, "bic",
- -1, "" };
-
-int hopcode(f, o) int f; int o; {
+ {ASG PLUS, "add"},
+ {ASG MINUS, "sub"},
+ {ASG MUL, "mul"},
+ {ASG DIV, "div"},
+ {ASG OR, "bis"},
+ {ASG ER, "xor"},
+ {ASG AND, "bic"},
+ {PLUS, "add"},
+ {MINUS, "sub"},
+ {MUL, "mul"},
+ {DIV, "div"},
+ {OR, "bis"},
+ {ER, "xor"},
+ {AND, "bic"},
+ {-1, ""}
+ };
+
+void hopcode(f, o) int f; int o; {
/* output the appropriate string from the above table */
register struct hoptab *q;
(tq==FLOAT || tq==DOUBLE) );
}
-int prtype(n) NODE *n; {
+void prtype(n) NODE *n; {
switch (n->in.type) {
case DOUBLE:
putchar('d');
}
}
-int zzzcode(p, c) register NODE *p; int c; {
+void zzzcode(p, c) register NODE *p; int c; {
register m;
CONSZ val;
switch( c ){
return (newt);
}
-int rmove(rt, rs, t) int rt; int rs; TWORD t; {
+void rmove(rt, rs, t) int rt; int rs; TWORD t; {
printf( " %s %s,%s\n",
#ifdef FORT
!Oflag ? (t==DOUBLE ? "movq" : "movl") :
struct respref
respref[] = {
- INTAREG|INTBREG, INTAREG|INTBREG,
- INAREG|INBREG, INAREG|INBREG|SOREG|STARREG|STARNM|SNAME|SCON,
- INTEMP, INTEMP,
- FORARG, FORARG,
- INTEMP, INTAREG|INAREG|INTBREG|INBREG|SOREG|STARREG|STARNM,
- 0, 0 };
-
-int setregs() { /* set up temporary registers */
+ {INTAREG|INTBREG, INTAREG|INTBREG},
+ {INAREG|INBREG, INAREG|INBREG|SOREG|STARREG|STARNM|SNAME|SCON},
+ {INTEMP, INTEMP},
+ {FORARG, FORARG},
+ {INTEMP, INTAREG|INAREG|INTBREG|INBREG|SOREG|STARREG|STARNM},
+ {0, 0}
+ };
+
+void setregs() { /* set up temporary registers */
fregs = 6; /* tbl- 6 free regs on VAX (0-5) */
;
}
return( -1 );
}
-int makeor2(p, q, b, o) register NODE *p; register NODE *q; register int b; register int o; {
+void makeor2(p, q, b, o) register NODE *p; register NODE *q; register int b; register int o; {
register NODE *t;
+#ifndef FLEXNAMES
register int i;
+#endif
NODE *f;
p->in.op = OREG;
return( 0 );
}
-int adrcon(val) CONSZ val; {
+void adrcon(val) CONSZ val; {
putchar( '$' );
printf( CONFMT, val );
}
-int conput(p) register NODE *p; {
+void conput(p) register NODE *p; {
switch( p->in.op ){
case ICON:
}
}
-int insput(p) register NODE *p; {
+void insput(p) register NODE *p; {
cerror( "insput" );
}
-int upput(p) register NODE *p; {
+void upput(p) register NODE *p; {
cerror( "upput" );
}
-int adrput(p) register NODE *p; {
+void adrput(p) register NODE *p; {
register int r;
/* output an address, with offsets, from p */
}
-int acon(p) register NODE *p; { /* print out a constant */
+void acon(p) register NODE *p; { /* print out a constant */
if( p->in.name[0] == '\0' ){
printf( CONFMT, p->tn.lval);
};
/* tbl */
-int cbgen(o, lab, mode) int o; int lab; int mode; { /* printf conditional and unconditional branches */
+void cbgen(o, lab, mode) int o; int lab; int mode; { /* printf conditional and unconditional branches */
/* tbl */
if( o == 0 ) printf( " jbr L%d\n", lab );
return(0);
}
-int optim2(p) register NODE *p; {
+void optim2(p) register NODE *p; {
/* do local tree transformations and optimizations */
register NODE *l, *r;
- int m, ml;
switch( p->in.op ) {
TWORD ftype;
char *func;
} opfunc[] = {
- DIV, TANY, "udiv",
- MOD, TANY, "urem",
- ASG DIV, TANY, "audiv",
- ASG MOD, TANY, "aurem",
- 0, 0, 0 };
+ {DIV, TANY, "udiv"},
+ {MOD, TANY, "urem"},
+ {ASG DIV, TANY, "audiv"},
+ {ASG MOD, TANY, "aurem"},
+ {0, 0, 0}
+ };
-int hardops(p) register NODE *p; {
+void hardops(p) register NODE *p; {
/* change hard to do operators into function calls. */
register NODE *q;
register struct functbl *f;
}
-int zappost(p) NODE *p; {
+void zappost(p) NODE *p; {
/* look for ++ and -- operators and remove them */
register o, ty;
if( ty != LTYPE ) zappost( p->in.left );
}
-int fixpre(p) NODE *p; {
+void fixpre(p) NODE *p; {
register o, ty;
o = p->in.op;
if( ty != LTYPE ) fixpre( p->in.left );
}
-int strip(p) register NODE *p; {
+void strip(p) register NODE *p; {
NODE *q;
/* strip nodes off the top when no side effects occur */
}
}
-int myreader(p) register NODE *p; {
+void myreader(p) register NODE *p; {
strip( p ); /* strip off operations with no side effects */
canon( p ); /* expands r-vals for fields */
walkf( p, hardops ); /* convert ops to function calls */
#endif
#endif
+#ifndef NORETURN
+#ifdef __GNUC__
+#define NORETURN __attribute__ ((__noreturn__))
+#else
+#define NORETURN
+#endif
+#endif
+
/* comm1.c */
unsigned caloff __P((void));
-int uerror __P((char *s, ...));
-int cerror __P((char *s, ...));
-int werror __P((char *s, ...));
-int tinit __P((void));
+void uerror __P((char *s, ...));
+void cerror __P((char *s, ...)) NORETURN;
+void werror __P((char *s, ...));
+void tinit __P((void));
NODE *talloc __P((void));
-int tcheck __P((void));
-int tfree __P((NODE *p));
-int tfree1 __P((NODE *p));
-int fwalk __P((register NODE *t, int (*f)(void), int down));
-int walkf __P((register NODE *t, int (*f)(void)));
-int walkf __P((register NODE *t, register int (*f)(void)));
-int mkdope __P((void));
-int tprint __P((TWORD t));
+void tcheck __P((void));
+void tfree __P((NODE *p));
+void tfree1 __P((NODE *p));
+void fwalk __P((register NODE *t, void (*f)(NODE *p, int down, int *a, int *b), int down));
+void walkf __P((register NODE *t, void (*f)(register NODE *p)));
+void mkdope __P((void));
+void tprint __P((TWORD t));
char *tstr __P((register char *cp));
#endif
struct optab *opptr[DSIZE];
-int setrew() {
+void setrew() {
/* set rwtable to first value which allows rewrite */
register struct optab *q;
register int i;
int rtyflg = 0;
-int expand(p, cookie, cp) NODE *p; int cookie; register char *cp; {
+void expand(p, cookie, cp) NODE *p; int cookie; register char *cp; {
/* generate code by interpreting table entry */
# ifdef NEWZZZ
int maxargs = { -1 };
-int stoasg(p, o) register NODE *p; int o; {
+void stoasg(p, o) register NODE *p; int o; {
/* should the assignment op p be stored,
given that it lies as the right operand of o
(or the left, if o==UNARY MUL) */
return(0);
}
-int mkadrs(p) register NODE *p; {
+void mkadrs(p) register NODE *p; {
register o;
o = p->in.op;
# define max(x,y) ((x)<(y)?(y):(x))
-int sucomp(p) register NODE *p; {
+void sucomp(p) register NODE *p; {
/* set the su field in the node to the sethi-ullman
number, or local equivalent */
int radebug = 0;
-int rallo(p, down) NODE *p; int down; {
+void rallo(p, down) NODE *p; int down; {
/* do register allocation */
register o, type, down1, down2, ty;
}
-int offstar(p) register NODE *p; {
+void offstar(p) register NODE *p; {
if( p->in.op == PLUS ) {
if( p->in.left->in.su == fregs ) {
order( p->in.left, INTAREG|INAREG );
return( crs2lab-- );
}
-int def2lab(l) int l; {
+void def2lab(l) int l; {
printf( "L%d:\n", l );
}
-int genargs(p) register NODE *p; {
+void genargs(p) register NODE *p; {
register NODE *pasg;
register align;
register size;
/* cgram.c */
NODE *mkty __P((unsigned t, int d, int s));
NODE *bdty __P((int op, NODE *p, int v));
-int dstash __P((int n));
-int savebc __P((void));
-int resetbc __P((int mask));
-int addcase __P((NODE *p));
-int adddef __P((void));
-int swstart __P((void));
-int swend __P((void));
+void dstash __P((int n));
+void savebc __P((void));
+void resetbc __P((int mask));
+void addcase __P((NODE *p));
+void adddef __P((void));
+void swstart __P((void));
+void swend __P((void));
int yyparse __P((void));
/* code.c */
-int branch __P((int n));
-int defalign __P((int n));
+void branch __P((int n));
+void defalign __P((int n));
int locctr __P((int l));
-int deflab __P((int n));
+void deflab __P((int n));
int getlab __P((void));
-int efcode __P((void));
-int bfcode __P((int a[], int n));
-int bccode __P((void));
-int ejobcode __P((int flag));
-int aobeg __P((void));
-int aocode __P((struct symtab *p));
-int aoend __P((void));
-int defnam __P((register struct symtab *p));
-int bycode __P((int t, int i));
-int zecode __P((int n));
+void efcode __P((void));
+void bfcode __P((int a[], int n));
+void bccode __P((void));
+void ejobcode __P((int flag));
+void aobeg __P((void));
+void aocode __P((struct symtab *p));
+void aoend __P((void));
+void defnam __P((register struct symtab *p));
+void bycode __P((int t, int i));
+void zecode __P((int n));
int fldal __P((unsigned t));
-int fldty __P((struct symtab *p));
-int where __P((int c));
+void fldty __P((struct symtab *p));
+void where __P((int c));
char *toreg __P((TWORD type));
int main __P((int argc, char *argv[]));
-int genswitch __P((register struct sw *p, int n));
-int makeheap __P((register struct sw *p, int m, int n));
+void genswitch __P((register struct sw *p, int n));
+void makeheap __P((register struct sw *p, int m, int n));
int select __P((int m));
-int walkheap __P((int start, int limit));
+void walkheap __P((int start, int limit));
/* local.c */
NODE *cast __P((register NODE *p, TWORD t));
NODE *clocal __P((NODE *p));
int andable __P((NODE *p));
-int cendarg __P((void));
+void cendarg __P((void));
int cisreg __P((TWORD t));
NODE *offcon __P((OFFSZ off, TWORD t, int d, int s));
-int incode __P((register NODE *p, int sz));
-int fincode __P((double d, int sz));
-int cinit __P((NODE *p, int sz));
-int vfdzero __P((int n));
+void incode __P((register NODE *p, int sz));
+void fincode __P((double d, int sz));
+void cinit __P((NODE *p, int sz));
+void vfdzero __P((int n));
char *exname __P((char *p));
int ctype __P((TWORD type));
int noinit __P((void));
-int commdec __P((int id));
+void commdec __P((int id));
int isitlong __P((int cb, int ce));
int isitfloat __P((char *s));
-int ecode __P((NODE *p));
+void ecode __P((NODE *p));
int tlen __P((NODE *p));
/* optim.c */
int ispow2 __P((CONSZ c));
/* pftn.c */
-int defid __P((register NODE *q, register int class));
-int psave __P((int i));
-int ftnend __P((void));
-int dclargs __P((void));
+void defid __P((register NODE *q, register int class));
+void psave __P((int i));
+void ftnend __P((void));
+void dclargs __P((void));
NODE *rstruct __P((int idn, int soru));
-int moedef __P((int idn));
+void moedef __P((int idn));
int bstruct __P((int idn, int soru));
NODE *dclstruct __P((int oparam));
-int yyerror __P((char *s));
-int yyaccpt __P((void));
-int ftnarg __P((int idn));
+void yyerror __P((char *s));
+void yyaccpt __P((void));
+void ftnarg __P((int idn));
int talign __P((register unsigned ty, register s));
OFFSZ tsize __P((TWORD ty, int d, int s));
-int inforce __P((OFFSZ n));
-int vfdalign __P((int n));
-int beginit __P((int curid));
-int instk __P((int id, TWORD t, int d, int s, OFFSZ off));
+void inforce __P((OFFSZ n));
+void vfdalign __P((int n));
+void beginit __P((int curid));
+void instk __P((int id, TWORD t, int d, int s, OFFSZ off));
NODE *getstr __P((void));
-int putbyte __P((int v));
-int endinit __P((void));
-int doinit __P((register NODE *p));
-int gotscal __P((void));
-int ilbrace __P((void));
-int irbrace __P((void));
+void putbyte __P((int v));
+void endinit __P((void));
+void doinit __P((register NODE *p));
+void gotscal __P((void));
+void ilbrace __P((void));
+void irbrace __P((void));
int upoff __P((int size, register alignment, register *poff));
int oalloc __P((register struct symtab *p, register *poff));
int falloc __P((register struct symtab *p, int w, int new, NODE *pty));
-int nidcl __P((NODE *p));
+void nidcl __P((NODE *p));
TWORD types __P((TWORD t1, TWORD t2, TWORD t3));
NODE *tymerge __P((NODE *typ, NODE *idp));
-int tyreduce __P((register NODE *p));
-int fixtype __P((register NODE *p, int class));
+void tyreduce __P((register NODE *p));
+void fixtype __P((register NODE *p, int class));
int uclass __P((register class));
int fixclass __P((int class, TWORD type));
struct symtab *mknonuniq __P((int *idindex));
int lookup __P((char *name, int s));
int XXXcheckst __P((int lev));
struct symtab *relook __P((register struct symtab *p));
-int clearst __P((register int lev));
+void clearst __P((register int lev));
int hide __P((register struct symtab *p));
-int unhide __P((register struct symtab *p));
+void unhide __P((register struct symtab *p));
/* scan.c */
int mainp1 __P((int argc, char *argv[]));
-int lxenter __P((register char *s, int m));
-int lxmore __P((register c, register m));
-int lxinit __P((void));
-int lxstr __P((int ct));
-int lxcom __P((void));
+void lxenter __P((register char *s, int m));
+void lxmore __P((register c, register m));
+void lxinit __P((void));
+void lxstr __P((int ct));
+void lxcom __P((void));
int yylex __P((void));
int lxres __P((void));
-int lxtitle __P((void));
+void lxtitle __P((void));
char *savestr __P((register char *cp));
char *hash __P((char *s));
/* stab.c */
-int fixarg __P((struct symtab *p));
-int outstab __P((struct symtab *sym));
-int outstruct __P((int szindex, int paramindex));
-int pstab __P((char *name, int type));
-int pstabdot __P((int type, int value));
-int psline __P((void));
-int plcstab __P((int level));
-int prcstab __P((int level));
-int pfstab __P((char *sname));
+void fixarg __P((struct symtab *p));
+void outstab __P((struct symtab *sym));
+void outstruct __P((int szindex, int paramindex));
+void pstab __P((char *name, int type));
+void pstabdot __P((int type, int value));
+void psline __P((void));
+void plcstab __P((int level));
+void prcstab __P((int level));
+void pfstab __P((char *sname));
/* trees.c */
-int printact __P((NODE *t, int acts));
+void printact __P((NODE *t, int acts));
NODE *buildtree __P((int o, register NODE *l, register NODE *r));
int fpe __P((void));
NODE *fixargs __P((register NODE *p));
int chkstr __P((int i, int j, TWORD type));
int conval __P((register NODE *p, int o, register NODE *q));
-int chkpun __P((register NODE *p));
+void chkpun __P((register NODE *p));
NODE *stref __P((register NODE *p));
int notlval __P((register NODE *p));
NODE *bcon __P((int i));
NODE *bpsize __P((register NODE *p));
OFFSZ psize __P((NODE *p));
NODE *convert __P((register NODE *p, int f));
-int econvert __P((register NODE *p));
+void econvert __P((register NODE *p));
NODE *pconvert __P((register NODE *p));
NODE *oconvert __P((register NODE *p));
NODE *ptmatch __P((register NODE *p));
int opact __P((NODE *p));
int moditype __P((TWORD ty));
NODE *doszof __P((register NODE *p));
-int eprint __P((register NODE *p, int down, int *a, int *b));
-int prtdcon __P((register NODE *p));
-int ecomp __P((register NODE *p));
+void eprint __P((register NODE *p, int down, int *a, int *b));
+void prtdcon __P((register NODE *p));
+void ecomp __P((register NODE *p));
int prtree __P((register NODE *p));
-int p2tree __P((register NODE *p));
+void p2tree __P((register NODE *p));
/* xdefs.c */
char *scnames __P((register c));
#endif
/* allo.c */
-int allo0 __P((void));
+void allo0 __P((void));
int allo __P((NODE *p, struct optab *q));
int freetemp __P((int k));
int freereg __P((NODE *p, int n));
int usable __P((NODE *p, int n, int r));
int shareit __P((NODE *p, int r, int n));
int ushare __P((NODE *p, int f, int r));
-int recl2 __P((register NODE *p));
-int rfree __P((int r, TWORD t));
-int rbusy __P((int r, TWORD t));
-int rwprint __P((int rw));
-int reclaim __P((NODE *p, int rw, int cookie));
+void recl2 __P((register NODE *p));
+void rfree __P((int r, TWORD t));
+void rbusy __P((int r, TWORD t));
+void rwprint __P((int rw));
+void reclaim __P((NODE *p, int rw, int cookie));
int XXXncopy __P((NODE *q, NODE *p));
NODE *tcopy __P((register NODE *p));
-int allchk __P((void));
+void allchk __P((void));
/* fort.c */
-int label __P((int n));
-int tlabel __P((void));
+void label __P((int n));
+void tlabel __P((void));
char *lnread __P((void));
long lread __P((void));
-int lopen __P((char *s));
-int lcread __P((char *cp, int n));
-int lccopy __P((register n));
+void lopen __P((char *s));
+void lcread __P((char *cp, int n));
+void lccopy __P((register n));
int mainp2 __P((int argc, char *argv[]));
/* local2.c */
-int where2 __P((int c));
-int lineid __P((int l, char *fn));
-int eobl2 __P((void));
-int hopcode __P((int f, int o));
+void where2 __P((int c));
+void lineid __P((int l, char *fn));
+void eobl2 __P((void));
+void hopcode __P((int f, int o));
int tlen __P((NODE *p));
int mixtypes __P((NODE *p, NODE *q));
-int prtype __P((NODE *n));
-int zzzcode __P((register NODE *p, int c));
+void prtype __P((NODE *n));
+void zzzcode __P((register NODE *p, int c));
int collapsible __P((NODE *dest, NODE *src));
-int rmove __P((int rt, int rs, TWORD t));
-int setregs __P((void));
+void rmove __P((int rt, int rs, TWORD t));
+void setregs __P((void));
int rewfld __P((NODE *p));
int callreg __P((NODE *p));
int base __P((register NODE *p));
int offset __P((register NODE *p, int tyl));
-int makeor2 __P((register NODE *p, register NODE *q, register int b, register int o));
+void makeor2 __P((register NODE *p, register NODE *q, register int b, register int o));
int canaddr __P((NODE *p));
int flshape __P((register NODE *p));
int shtemp __P((register NODE *p));
int shumul __P((register NODE *p));
-int adrcon __P((CONSZ val));
-int conput __P((register NODE *p));
-int insput __P((register NODE *p));
-int upput __P((register NODE *p));
-int adrput __P((register NODE *p));
-int acon __P((register NODE *p));
+void adrcon __P((CONSZ val));
+void conput __P((register NODE *p));
+void insput __P((register NODE *p));
+void upput __P((register NODE *p));
+void adrput __P((register NODE *p));
+void acon __P((register NODE *p));
int genscall __P((register NODE *p, int cookie));
int gencall __P((register NODE *p, int cookie));
-int cbgen __P((int o, int lab, int mode));
+void cbgen __P((int o, int lab, int mode));
int nextcook __P((NODE *p, int cookie));
int lastchance __P((NODE *p, int cook));
-int optim2 __P((register NODE *p));
+void optim2 __P((register NODE *p));
NODE *addroreg __P((NODE *l));
int main __P((int argc, char *argv[]));
-int hardops __P((register NODE *p));
-int zappost __P((NODE *p));
-int fixpre __P((NODE *p));
-int strip __P((register NODE *p));
-int myreader __P((register NODE *p));
+void hardops __P((register NODE *p));
+void zappost __P((NODE *p));
+void fixpre __P((NODE *p));
+void strip __P((register NODE *p));
+void myreader __P((register NODE *p));
/* match.c */
int tshape __P((NODE *p, int shape));
int ttype __P((TWORD t, int tword));
-int setrew __P((void));
+void setrew __P((void));
int match __P((NODE *p, int cookie));
-int expand __P((NODE *p, int cookie, register char *cp));
+void expand __P((NODE *p, int cookie, register char *cp));
NODE *getlr __P((NODE *p, int c));
int mlinit __P((void));
int mlmatch __P((NODE *subtree, int target, int subtarget));
/* order.c */
-int stoasg __P((register NODE *p, int o));
+void stoasg __P((register NODE *p, int o));
int deltest __P((register NODE *p));
int autoincr __P((NODE *p));
-int mkadrs __P((register NODE *p));
+void mkadrs __P((register NODE *p));
int notoff __P((TWORD t, int r, CONSZ off, char *cp));
-int sucomp __P((register NODE *p));
-int rallo __P((NODE *p, int down));
-int offstar __P((register NODE *p));
+void sucomp __P((register NODE *p));
+void rallo __P((NODE *p, int down));
+void offstar __P((register NODE *p));
int setincr __P((register NODE *p));
int setbin __P((register NODE *p));
int setstr __P((register NODE *p));
int setasg __P((register NODE *p));
int setasop __P((register NODE *p));
int get2lab __P((void));
-int def2lab __P((int l));
-int genargs __P((register NODE *p));
+void def2lab __P((int l));
+void genargs __P((register NODE *p));
int argsize __P((register NODE *p));
/* reader.c */
int p2init __P((int argc, char *argv[]));
int mainp2 __P((int argc, char *argv[]));
-int p2compile __P((NODE *p));
-int p2bbeg __P((int aoff, int myreg));
-int p2bend __P((void));
-int delay __P((register NODE *p));
+void p2compile __P((NODE *p));
+void p2bbeg __P((int aoff, int myreg));
+void p2bend __P((void));
+void delay __P((register NODE *p));
int delay1 __P((register NODE *p));
-int delay2 __P((register NODE *p));
-int codgen __P((NODE *p, int cookie));
-int prcook __P((int cookie));
-int order __P((NODE *p, int cook));
-int store __P((register NODE *p));
-int constore __P((register NODE *p));
-int markcall __P((register NODE *p));
-int stoarg __P((register NODE *p, int calltype));
-int cbranch __P((NODE *p, int true, int false));
-int rcount __P((void));
-int e2print __P((NODE *p, int down, int *a, int *b));
+void delay2 __P((register NODE *p));
+void codgen __P((NODE *p, int cookie));
+void prcook __P((int cookie));
+void order __P((NODE *p, int cook));
+void store __P((register NODE *p));
+void constore __P((register NODE *p));
+void markcall __P((register NODE *p));
+void stoarg __P((register NODE *p, int calltype));
+void cbranch __P((NODE *p, int true, int false));
+void rcount __P((void));
+void e2print __P((NODE *p, int down, int *a, int *b));
NODE *eread __P((void));
CONSZ rdin __P((int base));
int ffld __P((NODE *p, int down, int *down1, int *down2));
-int oreg2 __P((register NODE *p));
-int canon __P((NODE *p));
+void oreg2 __P((register NODE *p));
+void canon __P((NODE *p));
#endif
#include "pass1.h"
/*#include "pcclocal.h" macdefs.h*/
+#ifdef __STDC__
+#include <stdint.h>
+#else
+typedef int intptr_t;
+#endif
+
#if defined(DOSCCS) && !defined(lint)
static char *sccsid ="@(#)pftn.c 1.12 (Berkeley) 4/21/86";
#endif
/*struct symtab * mknonuniq();*/
-int defid(q, class) register NODE *q; register int class; {
+void defid(q, class) register NODE *q; register int class; {
register struct symtab *p;
int idp;
register TWORD type;
/* while */ *memp>=0 && stab[*memp].sclass != STNAME
&& stab[*memp].sclass != UNAME;
/* iterate */ --memp){ char *cname, *oname;
- if( stab[*memp].sflags & SNONUNIQ ){int k;
+ if( stab[*memp].sflags & SNONUNIQ ){
+#ifndef FLEXNAMES
+ int k;
+#endif
cname=p->sname;
oname=stab[*memp].sname;
#ifndef FLEXNAMES
}
-int psave(i) int i; {
+void psave(i) int i; {
if( paramno >= PARAMSZ ){
cerror( "parameter stack overflow");
}
paramstk[ paramno++ ] = i;
}
-int ftnend() { /* end of function */
+void ftnend() { /* end of function */
if( retlab != NOLAB ){ /* inside a real function */
efcode();
}
locctr(DATA);
}
-int dclargs() {
+void dclargs() {
register i, j;
register struct symtab *p;
register NODE *q;
return( mkty( p->stype, 0, p->sizoff ) );
}
-int moedef(idn) int idn; {
+void moedef(idn) int idn; {
register NODE *q;
q = block( FREE, NIL, NIL, MOETY, 0, 0 );
}
/* VARARGS */
-int yyerror(s) char *s; { /* error printing routine in parser */
+void yyerror(s) char *s; { /* error printing routine in parser */
uerror( s );
}
-int yyaccpt() {
+void yyaccpt() {
ftnend();
}
-int ftnarg(idn) int idn; {
+void ftnarg(idn) int idn; {
switch( stab[idn].stype ){
case UNDEF:
return( (unsigned int) dimtab[ s ] * mult );
}
-int inforce(n) OFFSZ n; { /* force inoff to have the value n */
+void inforce(n) OFFSZ n; { /* force inoff to have the value n */
/* inoff is updated to have the value n */
OFFSZ wb;
register rest;
}
-int vfdalign(n) int n; { /* make inoff have the offset the next alignment of n */
+void vfdalign(n) int n; { /* make inoff have the offset the next alignment of n */
OFFSZ m;
m = inoff;
int ilocctr = 0; /* location counter for current initialization */
-int beginit(curid) int curid; {
+void beginit(curid) int curid; {
/* beginning of initilization; set location ctr and set type */
register struct symtab *p;
}
-int instk(id, t, d, s, off) int id; TWORD t; int d; int s; OFFSZ off; {
+void instk(id, t, d, s, off) int id; TWORD t; int d; int s; OFFSZ off; {
/* make a new entry on the parameter stack to initialize id */
register struct symtab *p;
}
}
-int putbyte(v) int v; { /* simulate byte v appearing in a list of integer values */
+void putbyte(v) int v; { /* simulate byte v appearing in a list of integer values */
register NODE *p;
p = bcon(v);
incode( p, SZCHAR );
gotscal();
}
-int endinit() {
+void endinit() {
register TWORD t;
register d, s, n, d1;
}
-int doinit(p) register NODE *p; {
+void doinit(p) register NODE *p; {
/* take care of generating a value for the initializer p */
/* inoff has the current offset (last bit written)
tfree(p);
}
-int gotscal() {
+void gotscal() {
register t, ix;
register n, id;
struct symtab *p;
ifull = 1;
}
-int ilbrace() { /* process an initializer's left brace */
+void ilbrace() { /* process an initializer's left brace */
register t;
struct instk *temp;
pstk = temp;
}
-int irbrace() {
+void irbrace() {
/* called when a '}' is seen */
# ifndef BUG1
return(0);
}
-int nidcl(p) NODE *p; { /* handle unitialized declarations */
+void nidcl(p) NODE *p; { /* handle unitialized declarations */
/* assumed to be not functions */
register class;
register commflag; /* flag for labelled common declarations */
register unsigned t;
register i;
- extern int eprint();
+ extern void eprint();
if( typ->in.op != TYPE ) cerror( "tymerge: arg 1" );
if(idp == NIL ) return( NIL );
return( idp );
}
-int tyreduce(p) register NODE *p; {
+void tyreduce(p) register NODE *p; {
/* build a type, and stash away dimensions, from a parse tree of the declaration */
/* the type is build top down, the dimensions bottom up */
}
-int fixtype(p, class) register NODE *p; int class; {
+void fixtype(p, class) register NODE *p; int class; {
register unsigned t, type;
register mod1, mod2;
/* fix up the types, and check for legality */
/* or field */
register i;
register struct symtab * sp;
- char *p,*q;
+#ifndef FLEXNAMES
+ char *p;
+#endif
+#if !defined(FLEXNAMES) || !defined(BUG1)
+ char *q;
+#endif
sp = & stab[ i= *idindex ]; /* position search at old entry */
while( sp->stype != TNULL ){ /* locate unused entry */
if( i == *idindex ) cerror("Symbol table full");
}
sp->sflags = SNONUNIQ | SMOS;
+#ifndef FLEXNAMES
p = sp->sname;
+#endif
+#if !defined(FLEXNAMES) || !defined(BUG1)
q = stab[*idindex].sname; /* old entry name */
+#endif
#ifdef FLEXNAMES
sp->sname = stab[*idindex].sname;
#endif
/* look up name: must agree with s w.r.t. STAG, SMOS and SHIDDEN */
register char *p, *q;
- int i, j, ii;
+ int i;
+#ifndef FLEXNAMES
+ int j;
+#endif
+ int ii;
register struct symtab *sp;
/* compute initial hash index */
if( ++j >= NCHNAM ) break;
}
#else
- i = (int)name;
+ i = (intptr_t)name;
#endif
i = i%SYMTSZ;
sp = &stab[ii=i];
return(q);
}
-int clearst(lev) register int lev; {
+void clearst(lev) register int lev; {
register struct symtab *p, *q;
register int temp;
struct symtab *clist = 0;
/* step 1: remove entries */
while( chaintop-1 > lev ){
- register int type;
-
p = schain[--chaintop];
schain[chaintop] = 0;
for( ; p; p = q ){
q = p->snext;
- type = p->stype;
if( p->stype == TNULL || p->slevel <= lev )
cerror( "schain botch" );
lineno = p->suse < 0 ? -p->suse : p->suse;
return( idname = q-stab );
}
-int unhide(p) register struct symtab *p; {
+void unhide(p) register struct symtab *p; {
register struct symtab *q;
- register s, j;
+ register s;
+#ifndef FLEXNAMES
+ register j;
+#endif
s = p->sflags & (SMOS|STAG);
q = p;
# endif
# ifdef ONEPASS
-int p2compile(p) NODE *p; {
+void p2compile(p) NODE *p; {
if( lflag ) lineid( lineno, ftitle );
tmpoff = baseoff; /* expression at top level reuses temps */
/* first pass will do it... */
}
-int p2bbeg(aoff, myreg) int aoff; int myreg; {
+void p2bbeg(aoff, myreg) int aoff; int myreg; {
static int myftn = -1;
tmpoff = baseoff = (unsigned int) aoff;
setregs();
}
-int p2bend() {
+void p2bend() {
SETOFF( maxoff, ALSTACK );
eobl2();
}
NODE *deltrees[DELAYS];
int deli;
-int delay(p) register NODE *p; {
+void delay(p) register NODE *p; {
/* look in all legal places for COMOP's and ++ and -- ops to delay */
/* note; don't delay ++ and -- within calls or things like
/* getchar (in their macro forms) will start behaving strangely */
return( delay1(p->in.left) || delay1(p->in.right ) );
}
-int delay2(p) register NODE *p; {
+void delay2(p) register NODE *p; {
/* look for delayable ++ and -- operators */
if( ty != LTYPE ) delay2( p->in.left );
}
-int codgen(p, cookie) NODE *p; int cookie; {
+void codgen(p, cookie) NODE *p; int cookie; {
/* generate the code for p;
order may call codgen recursively */
0,
};
-int prcook(cookie) int cookie; {
+void prcook(cookie) int cookie; {
/* print a nice-looking description of cookie */
int odebug = 0;
-int order(p, cook) NODE *p; int cook; {
+void order(p, cook) NODE *p; int cook; {
register o, ty, m;
int m1;
int callflag;
int fregs;
-int store(p) register NODE *p; {
+void store(p) register NODE *p; {
/* find a subtree of p which should be stored */
store( p->in.left );
}
-int constore(p) register NODE *p; {
+void constore(p) register NODE *p; {
/* store conditional expressions */
/* the point is, avoid storing expressions in conditional
store( p );
}
-int markcall(p) register NODE *p; { /* mark off calls below the current node */
+void markcall(p) register NODE *p; { /* mark off calls below the current node */
again:
switch( p->in.op ){
}
-int stoarg(p, calltype) register NODE *p; int calltype; {
+void stoarg(p, calltype) register NODE *p; int calltype; {
/* arrange to store the args */
if( p->in.op == CM ){
int negrel[] = { NE, EQ, GT, GE, LT, LE, UGT, UGE, ULT, ULE } ; /* negatives of relationals */
-int cbranch(p, true, false) NODE *p; int true; int false; {
+void cbranch(p, true, false) NODE *p; int true; int false; {
/* evaluate p for truth value, and branch to true or false
/* accordingly: label <0 means fall through */
}
-int rcount() { /* count recursions */
+void rcount() { /* count recursions */
if( ++nrecur > NRECUR ){
cerror( "expression causes compiler loop: try simplifying" );
}
}
# ifndef BUG4
-int e2print(p, down, a, b) NODE *p; int down; int *a; int *b; {
+void e2print(p, down, a, b) NODE *p; int down; int *a; int *b; {
*a = *b = down+1;
while( down >= 2 ){
}
#endif
-int oreg2(p) register NODE *p; {
+void oreg2(p) register NODE *p; {
/* look for situations where2 we can turn * into OREG */
}
-int canon(p) NODE *p; {
+void canon(p) NODE *p; {
/* put p in canonical form */
- int oreg2(), sucomp();
+ void oreg2(), sucomp();
#ifndef FIELDOPS
int ffld();
/*#include "ndu.h" manifest.h*/
#include "pass1.h"
/*#include "pcclocal.h" macdefs.h*/
+#ifdef ONEPASS
+#include "pass2.h"
+#endif
#if defined(DOSCCS) && !defined(lint)
static char *sccsid ="@(#)scan.c 2.1 (Berkeley) 4/23/86";
curdim = 16;
reached = 1;
- fpe_sigvec.sv_handler = fpe;
+ fpe_sigvec.sv_handler = (void (*) __P((int sig, int code, struct sigcontext *scp)))fpe;
(void) sigvec(SIGFPE, &fpe_sigvec, (struct sigvec *) NULL);
yyparse();
short lxmask[CSSZ+1];
-int lxenter(s, m) register char *s; int m; {
+void lxenter(s, m) register char *s; int m; {
/* enter a mask into lxmask */
register c;
# define lxget(c,m) (lxgcp=yytext,lxmore(c,m))
-int lxmore(c, m) register c; register m; {
+void lxmore(c, m) register c; register m; {
register char *cp;
*(cp = lxgcp) = c;
short lxval; /* the value to be returned */
} lxdope[] = {
- '@', A_ERR, 0, 0, /* illegal characters go here... */
- '_', A_LET, 0, 0, /* letters point here */
- '0', A_DIG, 0, 0, /* digits point here */
- ' ', A_WS, 0, 0, /* whitespace goes here */
- '\n', A_NL, 0, 0,
- '"', A_STR, 0, 0, /* character string */
- '\'', A_CC, 0, 0, /* character constant */
- '`', A_BCD, 0, 0, /* GCOS BCD constant */
- '(', A_1C, LP, 0,
- ')', A_1C, RP, 0,
- '{', A_1C, LC, 0,
- '}', A_1C, RC, 0,
- '[', A_1C, LB, 0,
- ']', A_1C, RB, 0,
- '*', A_1C, MUL, MUL,
- '?', A_1C, QUEST, 0,
- ':', A_1C, COLON, 0,
- '+', A_PL, PLUS, PLUS,
- '-', A_MI, MINUS, MINUS,
- '/', A_SL, DIVOP, DIV,
- '%', A_1C, DIVOP, MOD,
- '&', A_AND, AND, AND,
- '|', A_OR, OR, OR,
- '^', A_1C, ER, ER,
- '!', A_NOT, UNOP, NOT,
- '~', A_1C, UNOP, COMPL,
- ',', A_1C, CM, CM,
- ';', A_1C, SM, 0,
- '.', A_DOT, STROP, DOT,
- '<', A_LT, RELOP, LT,
- '>', A_GT, RELOP, GT,
- '=', A_EQ, ASSIGN, ASSIGN,
- -1, A_1C, 0, 0,
+ {'@', A_ERR, 0, 0}, /* illegal characters go here... */
+ {'_', A_LET, 0, 0}, /* letters point here */
+ {'0', A_DIG, 0, 0}, /* digits point here */
+ {' ', A_WS, 0, 0}, /* whitespace goes here */
+ {'\n', A_NL, 0, 0},
+ {'"', A_STR, 0, 0}, /* character string */
+ {'\'', A_CC, 0, 0}, /* character constant */
+ {'`', A_BCD, 0, 0}, /* GCOS BCD constant */
+ {'(', A_1C, LP, 0},
+ {')', A_1C, RP, 0},
+ {'{', A_1C, LC, 0},
+ {'}', A_1C, RC, 0},
+ {'[', A_1C, LB, 0},
+ {']', A_1C, RB, 0},
+ {'*', A_1C, MUL, MUL},
+ {'?', A_1C, QUEST, 0},
+ {':', A_1C, COLON, 0},
+ {'+', A_PL, PLUS, PLUS},
+ {'-', A_MI, MINUS, MINUS},
+ {'/', A_SL, DIVOP, DIV},
+ {'%', A_1C, DIVOP, MOD},
+ {'&', A_AND, AND, AND},
+ {'|', A_OR, OR, OR},
+ {'^', A_1C, ER, ER},
+ {'!', A_NOT, UNOP, NOT},
+ {'~', A_1C, UNOP, COMPL},
+ {',', A_1C, CM, CM},
+ {';', A_1C, SM, 0},
+ {'.', A_DOT, STROP, DOT},
+ {'<', A_LT, RELOP, LT},
+ {'>', A_GT, RELOP, GT},
+ {'=', A_EQ, ASSIGN, ASSIGN},
+ {-1, A_1C, 0, 0}
};
struct lxdope *lxcp[CSSZ+1];
-int lxinit() {
+void lxinit() {
register struct lxdope *p;
register i;
register char *cp;
int lxmatch; /* character to be matched in char or string constant */
-int lxstr(ct) int ct; {
+void lxstr(ct) int ct; {
/* match a string or character constant, up to lxmatch */
register c;
}
}
-int lxcom() {
+void lxcom() {
register c;
/* saw a /*: process a comment */
short lxrval; /* value to be returned */
} lxrdope[] = {
- "asm", AR_A, 0,
- "auto", AR_CL, AUTO,
- "break", AR_RW, BREAK,
- "char", AR_TY, CHAR,
- "case", AR_RW, CASE,
- "continue", AR_RW, CONTINUE,
- "double", AR_TY, DOUBLE,
- "default", AR_RW, DEFAULT,
- "do", AR_RW, DO,
- "extern", AR_CL, EXTERN,
- "else", AR_RW, ELSE,
- "enum", AR_E, ENUM,
- "for", AR_RW, FOR,
- "float", AR_TY, FLOAT,
- "fortran", AR_CL, FORTRAN,
- "goto", AR_RW, GOTO,
- "if", AR_RW, IF,
- "int", AR_TY, INT,
- "long", AR_TY, LONG,
- "return", AR_RW, RETURN,
- "register", AR_CL, REGISTER,
- "switch", AR_RW, SWITCH,
- "struct", AR_S, 0,
- "sizeof", AR_RW, SIZEOF,
- "short", AR_TY, SHORT,
- "static", AR_CL, STATIC,
- "typedef", AR_CL, TYPEDEF,
- "unsigned", AR_TY, UNSIGNED,
- "union", AR_U, 0,
- "void", AR_TY, UNDEF, /* tymerge adds FTN */
- "while", AR_RW, WHILE,
- "", 0, 0, /* to stop the search */
+ {"asm", AR_A, 0},
+ {"auto", AR_CL, AUTO},
+ {"break", AR_RW, BREAK},
+ {"char", AR_TY, CHAR},
+ {"case", AR_RW, CASE},
+ {"continue", AR_RW, CONTINUE},
+ {"double", AR_TY, DOUBLE},
+ {"default", AR_RW, DEFAULT},
+ {"do", AR_RW, DO},
+ {"extern", AR_CL, EXTERN},
+ {"else", AR_RW, ELSE},
+ {"enum", AR_E, ENUM},
+ {"for", AR_RW, FOR},
+ {"float", AR_TY, FLOAT},
+ {"fortran", AR_CL, FORTRAN},
+ {"goto", AR_RW, GOTO},
+ {"if", AR_RW, IF},
+ {"int", AR_TY, INT},
+ {"long", AR_TY, LONG},
+ {"return", AR_RW, RETURN},
+ {"register", AR_CL, REGISTER},
+ {"switch", AR_RW, SWITCH},
+ {"struct", AR_S, 0},
+ {"sizeof", AR_RW, SIZEOF},
+ {"short", AR_TY, SHORT},
+ {"static", AR_CL, STATIC},
+ {"typedef", AR_CL, TYPEDEF},
+ {"unsigned", AR_TY, UNSIGNED},
+ {"union", AR_U, 0},
+ {"void", AR_TY, UNDEF}, /* tymerge adds FTN */
+ {"while", AR_RW, WHILE},
+ {"", 0, 0} /* to stop the search */
};
int lxres() {
extern int labelno;
-int lxtitle() {
+void lxtitle() {
/* called after a newline; set linenumber and file name */
register c, val;
static bool zero_length_array __P((register struct symtab *p));
static Typeid typelookup __P((TWORD type, int arrindex, int strindex, int strtag));
static int entertype __P((TWORD type, int arrindex, int strindex, int strtag));
-static reentertype __P((Typeid typeid, TWORD type, int arrindex, int strindex, int strtag));
-static inittypes __P((void));
-static maketype __P((char *name, int tnum, int eqtnum, long lower, long upper));
-static gentype __P((struct symtab *sym));
-static genstruct __P((TWORD t, int structid, int index, char *name, int size));
-static geninfo __P((register struct symtab *p));
-static old_fixarg __P((struct symtab *p));
-static old_outstab __P((struct symtab *p));
-static old_pstab __P((char *name, int type));
-static old_pstabdot __P((int type, int value));
-static old_poffs __P((register struct symtab *p));
-static old_psline __P((void));
-static old_plcstab __P((int level));
-static old_prcstab __P((int level));
-static old_pfstab __P((char *sname));
-
-int fixarg(p) struct symtab *p; {
+static void reentertype __P((Typeid typeid, TWORD type, int arrindex, int strindex, int strtag));
+static void inittypes __P((void));
+static void maketype __P((char *name, int tnum, int eqtnum, long lower, long upper));
+static void gentype __P((struct symtab *sym));
+static void genstruct __P((TWORD t, int structid, int index, char *name, int size));
+static void geninfo __P((register struct symtab *p));
+static void old_fixarg __P((struct symtab *p));
+static void old_outstab __P((struct symtab *p));
+static void old_pstab __P((char *name, int type));
+static void old_pstabdot __P((int type, int value));
+static void old_poffs __P((register struct symtab *p));
+static void old_psline __P((void));
+static void old_plcstab __P((int level));
+static void old_prcstab __P((int level));
+static void old_pfstab __P((char *sname));
+
+void fixarg(p) struct symtab *p; {
if (oldway) {
old_fixarg(p);
} else if (gdebug) {
* Generate debugging info for a given symbol.
*/
-int outstab(sym) struct symtab *sym; {
+void outstab(sym) struct symtab *sym; {
register struct symtab *p;
char *classname;
- int offset;
bool ignore;
static bool firsttime = true;
}
ignore = false;
p = sym;
- offset = bytes(p->offset);
switch (p->sclass) {
case REGISTER:
classname = "r";
- offset = p->offset;
break;
/*
* as the old one.
*/
-static reentertype(typeid, type, arrindex, strindex, strtag) Typeid typeid; TWORD type; int arrindex; int strindex; int strtag; {
+static void reentertype(typeid, type, arrindex, strindex, strtag) Typeid typeid; TWORD type; int arrindex; int strindex; int strtag; {
register Typeid t;
register int i;
#define builtintype(type) entertype(type, NILINDEX, NILINDEX, NILINDEX)
-static inittypes() {
+static void inittypes() {
int t;
t_int = builtintype(INT);
* Generate info for a new range type.
*/
-static maketype(name, tnum, eqtnum, lower, upper) char *name; int tnum; int eqtnum; long lower; long upper; {
+static void maketype(name, tnum, eqtnum, lower, upper) char *name; int tnum; int eqtnum; long lower; long upper; {
printf("\t.stabs\t\"%s:t%d=r%d;%d;%d;", name, tnum, eqtnum, lower, upper);
geninfo(0);
}
* Generate debugging information for the given type of the given symbol.
*/
-static gentype(sym) struct symtab *sym; {
+static void gentype(sym) struct symtab *sym; {
register struct symtab *p;
register TWORD t;
register TWORD basictype;
* Generate type information for structures, unions, && enumerations.
*/
-static genstruct(t, structid, index, name, size) TWORD t; int structid; int index; char *name; int size; {
+static void genstruct(t, structid, index, name, size) TWORD t; int structid; int index; char *name; int size; {
register int i;
register struct symtab *field;
int id;
* Generate offset && size info.
*/
-static geninfo(p) register struct symtab *p; {
+static void geninfo(p) register struct symtab *p; {
int stabtype;
if (p == 0) {
* Generate information for a newly-defined structure.
*/
-int outstruct(szindex, paramindex) int szindex; int paramindex; {
+void outstruct(szindex, paramindex) int szindex; int paramindex; {
register Typeid typeid;
register struct symtab *p;
register int i, t, strindex;
}
}
-int pstab(name, type) char *name; int type; {
+void pstab(name, type) char *name; int type; {
+#ifndef ASSTRINGS
register int i;
register char c;
+#endif
if (!gdebug) {
return;
}
#ifdef STABDOT
-int pstabdot(type, value) int type; int value; {
+void pstabdot(type, value) int type; int value; {
if ( ! gdebug) {
return;
} else if (oldway) {
extern int labelno;
extern int fdefflag;
-int psline() {
+void psline() {
static int lastlineno;
register char *cp, *cq;
register int i;
}
}
-int plcstab(level) int level; {
+void plcstab(level) int level; {
if (!gdebug) {
return;
} else if (oldway) {
#endif
}
-int prcstab(level) int level; {
+void prcstab(level) int level; {
if (!gdebug) {
return;
} else if (oldway) {
#endif
}
-int pfstab(sname) char *sname; {
+void pfstab(sname) char *sname; {
register struct symtab *p;
if (gdebug) {
* Old way of doing things.
*/
-static old_fixarg(p) struct symtab *p; {
+static void old_fixarg(p) struct symtab *p; {
if (gdebug) {
old_pstab(p->sname, N_PSYM);
if (gdebug) printf("0,%d,%d\n", p->stype, argoff/SZCHAR);
}
}
-static old_outstab(p) struct symtab *p; {
+static void old_outstab(p) struct symtab *p; {
register TWORD ptype;
register char *pname;
register char pclass;
}
}
-static old_pstab(name, type) char *name; int type; {
+static void old_pstab(name, type) char *name; int type; {
+#ifndef ASSTRINGS
register int i;
register char c;
+#endif
+
if (!gdebug) return;
/* locctr(PROG); /* .stabs must appear in .text for c2 */
#ifdef ASSTRINGS
}
#ifdef STABDOT
-static old_pstabdot(type, value) int type; int value; {
+static void old_pstabdot(type, value) int type; int value; {
if ( ! gdebug) return;
/* locctr(PROG); /* .stabs must appear in .text for c2 */
printf("\t.stabd\t");
}
#endif
-static old_poffs(p) register struct symtab *p; {
+static void old_poffs(p) register struct symtab *p; {
int s;
if (!gdebug) return;
if ((s = dimtab[p->sizoff]/SZCHAR) > 1) {
}
}
-static old_psline() {
+static void old_psline() {
static int lastlineno;
register char *cp, *cq;
register int i;
}
}
-static old_plcstab(level) int level; {
+static void old_plcstab(level) int level; {
if (!gdebug) return;
#ifdef STABDOT
old_pstabdot(N_LBRAC, level);
#endif
}
-static old_prcstab(level) int level; {
+static void old_prcstab(level) int level; {
if (!gdebug) return;
#ifdef STABDOT
pstabdot(N_RBRAC, level);
#endif
}
-static old_pfstab(sname) char *sname; {
+static void old_pfstab(sname) char *sname; {
if (!gdebug) return;
pstab(sname, N_FUN);
#ifndef FLEXNAMES
struct optab table[] = {
-PCONV, INAREG|INTAREG,
+{PCONV, INAREG|INTAREG,
SAREG|AWD, TCHAR|TSHORT,
SANY, TPOINT,
NAREG|NASL, RESC1,
- " cvtZLl AL,A1\n",
+ " cvtZLl AL,A1\n"},
-PCONV, INAREG|INTAREG,
+{PCONV, INAREG|INTAREG,
SAREG|AWD, TUCHAR|TUSHORT,
SANY, TPOINT,
NAREG|NASL, RESC1,
- " movzZLl AL,A1\n",
+ " movzZLl AL,A1\n"},
/* the following entry is to fix a problem with
the manner that the first pass handles the
type of a shift expression */
-PCONV, INAREG|INTAREG,
+{PCONV, INAREG|INTAREG,
SAREG|AWD, TINT|TUNSIGNED,
SANY, TPOINT,
NAREG|NASL, RLEFT,
- "",
+ ""},
#if defined(FORT) || defined(SPRECC)
-SCONV, INTAREG|FORCC,
+{SCONV, INTAREG|FORCC,
SAREG|AWD, TDOUBLE,
SANY, TFLOAT,
NAREG|NASL, RESC1|RESCC,
- " cvtdf AL,A1\n",
+ " cvtdf AL,A1\n"},
-SCONV, INTAREG|FORCC,
+{SCONV, INTAREG|FORCC,
SAREG|AWD, ANYSIGNED,
SANY, TFLOAT,
NAREG|NASL, RESC1|RESCC,
- " cvtZLf AL,TA1\n",
+ " cvtZLf AL,TA1\n"},
-SCONV, INTAREG|FORCC,
+{SCONV, INTAREG|FORCC,
SAREG|AWD, TUCHAR|TUSHORT,
SANY, TFLOAT,
NAREG|NASL, RESC1|RESCC,
- " movzZLl AL,A1\n cvtlf A1,TA1\n",
+ " movzZLl AL,A1\n cvtlf A1,TA1\n"},
#endif
-SCONV, INTAREG|FORCC,
+{SCONV, INTAREG|FORCC,
SAREG|AWD, TUCHAR|TUSHORT,
SANY, TFLOAT|TDOUBLE,
NAREG|NASL, RESC1|RESCC,
- " movzZLl AL,A1\n cvtld A1,A1\n",
+ " movzZLl AL,A1\n cvtld A1,A1\n"},
/* take care of redundant conversions introduced by reclaim() */
-SCONV, INTAREG,
+{SCONV, INTAREG,
STAREG, TWORD,
SANY, TWORD,
0, RLEFT,
- "",
+ ""},
-SCONV, INTAREG|FORCC,
+{SCONV, INTAREG|FORCC,
SAREG|AWD, TANY,
SANY, TANY,
NAREG|NASL, RESC1|RESCC,
- " ZA\n",
+ " ZA\n"},
-INIT, FOREFF,
+{INIT, FOREFF,
SCON, TANY,
SANY, TWORD,
0, RNOP,
- " .long CL\n",
+ " .long CL\n"},
-INIT, FOREFF,
+{INIT, FOREFF,
SCON, TANY,
SANY, TSHORT|TUSHORT,
0, RNOP,
- " .word CL\n",
+ " .word CL\n"},
-INIT, FOREFF,
+{INIT, FOREFF,
SCON, TANY,
SANY, TCHAR|TUCHAR,
0, RNOP,
- " .byte CL\n",
+ " .byte CL\n"},
/* for the use of fortran only */
-GOTO, FOREFF,
+{GOTO, FOREFF,
SCON, TANY,
SANY, TANY,
0, RNOP,
- " jbr CL\n",
+ " jbr CL\n"},
-GOTO, FOREFF,
+{GOTO, FOREFF,
SNAME|SOREG, TANY,
SANY, TANY,
0, RNOP,
- " jmp *AL\n",
+ " jmp *AL\n"},
-GOTO, FOREFF,
+{GOTO, FOREFF,
SAREG, TANY,
SANY, TANY,
0, RNOP,
- " jmp (AL)\n",
+ " jmp (AL)\n"},
-STARG, FORARG,
+{STARG, FORARG,
SCON|SOREG, TANY,
SANY, TANY,
0, RNULL,
- " subl2 ZT,sp\nZS",
+ " subl2 ZT,sp\nZS"},
-STASG, FOREFF,
+{STASG, FOREFF,
SNAME|SOREG, TANY,
SCON|SAREG, TANY,
0, RNOP,
- "ZS",
+ "ZS"},
-STASG, INAREG,
+{STASG, INAREG,
SNAME|SOREG, TANY,
SCON, TANY,
NAREG, RESC1,
- "ZS movl AR,A1\n",
+ "ZS movl AR,A1\n"},
-STASG, INAREG,
+{STASG, INAREG,
SNAME|SOREG, TANY,
SAREG, TANY,
0, RRIGHT,
- " pushl AR\nZS movl (sp)+,AR\n",
+ " pushl AR\nZS movl (sp)+,AR\n"},
-FLD, INAREG|INTAREG,
+{FLD, INAREG|INTAREG,
SANY, TANY,
SFLD, ANYSIGNED,
NAREG|NASR, RESC1,
- " extv $H,$S,AR,A1\n",
+ " extv $H,$S,AR,A1\n"},
-FLD, INAREG|INTAREG,
+{FLD, INAREG|INTAREG,
SANY, TANY,
SFLD, ANYUSIGNED,
NAREG|NASR, RESC1,
- " extzv $H,$S,AR,A1\n",
+ " extzv $H,$S,AR,A1\n"},
-FLD, FORARG,
+{FLD, FORARG,
SANY, TANY,
SFLD, ANYSIGNED,
0, RNULL,
- " extv $H,$S,AR,-(sp)\n",
+ " extv $H,$S,AR,-(sp)\n"},
-FLD, FORARG,
+{FLD, FORARG,
SANY, TANY,
SFLD, ANYUSIGNED,
0, RNULL,
- " extzv $H,$S,AR,-(sp)\n",
+ " extzv $H,$S,AR,-(sp)\n"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TWORD,
SAREG|AWD, TWORD,
0, RESCC,
- " cmpl AL,AR\nZP",
+ " cmpl AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TSHORT,
SAREG|AWD, TSHORT,
0, RESCC,
- " cmpw AL,AR\nZP",
+ " cmpw AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TUSHORT,
SAREG|AWD, TUSHORT,
0, RESCC,
- " cmpw AL,AR\nZP",
+ " cmpw AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TCHAR,
SAREG|AWD, TCHAR,
0, RESCC,
- " cmpb AL,AR\nZP",
+ " cmpb AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TUCHAR,
SAREG|AWD, TUCHAR,
0, RESCC,
- " cmpb AL,AR\nZP",
+ " cmpb AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TSHORT|TUSHORT,
SSCON, TANY,
0, RESCC,
- " cmpw AL,AR\nZP",
+ " cmpw AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TCHAR|TUCHAR,
SCCON, TANY,
0, RESCC,
- " cmpb AL,AR\nZP",
+ " cmpb AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TDOUBLE,
0, RESCC,
- " cmpd AL,AR\nZP",
+ " cmpd AL,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TFLOAT,
NAREG|NASR, RESCC,
- " cvtfd AR,A1\n cmpd AL,A1\nZP",
+ " cvtfd AR,A1\n cmpd AL,A1\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TDOUBLE,
NAREG|NASL, RESCC,
- " cvtfd AL,A1\n cmpd A1,AR\nZP",
+ " cvtfd AL,A1\n cmpd A1,AR\nZP"},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TFLOAT,
0, RESCC,
- " cmpf AL,AR\nZP",
+ " cmpf AL,AR\nZP"},
-CCODES, INAREG|INTAREG,
+{CCODES, INAREG|INTAREG,
SANY, TANY,
SANY, TANY,
NAREG, RESC1,
- " movl $1,A1\nZN",
+ " movl $1,A1\nZN"},
-UNARY CALL, INTAREG,
+{UNARY CALL, INTAREG,
SCON, TANY,
SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
NAREG|NASL, RESC1,
- " calls ZC,CL\n",
+ " calls ZC,CL\n"},
-UNARY CALL, INTAREG,
+{UNARY CALL, INTAREG,
SAREG, TANY,
SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
NAREG|NASL, RESC1, /* should be 0 */
- " calls ZC,(AL)\n",
+ " calls ZC,(AL)\n"},
-UNARY CALL, INAREG|INTAREG,
+{UNARY CALL, INAREG|INTAREG,
SNAME, TANY,
SANY, TANY,
NAREG|NASL, RESC1, /* really reg 0 */
- " calls ZC,*AL\n",
+ " calls ZC,*AL\n"},
-UNARY CALL, INAREG|INTAREG,
+{UNARY CALL, INAREG|INTAREG,
SSOREG, TANY,
SANY, TANY,
NAREG|NASL, RESC1, /* really reg 0 */
- " calls ZC,*AL\n",
+ " calls ZC,*AL\n"},
-ASG RS, INAREG|FOREFF|FORCC,
+{ASG RS, INAREG|FOREFF|FORCC,
SAREG, TWORD,
SCON, TINT,
0, RLEFT|RESCC,
- " extzv AR,ZU,AL,AL\n",
+ " extzv AR,ZU,AL,AL\n"},
-ASG RS, INAREG|FOREFF|FORCC,
+{ASG RS, INAREG|FOREFF|FORCC,
SAREG, TWORD,
SAREG, ANYFIXED,
NAREG, RLEFT|RESCC,
- " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
+ " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n"},
-ASG RS, INAREG|FOREFF|FORCC,
+{ASG RS, INAREG|FOREFF|FORCC,
SAREG, TWORD,
SAREG|AWD, TWORD,
NAREG, RLEFT|RESCC,
- " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
+ " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n"},
-RS, INAREG|INTAREG|FORCC,
+{RS, INAREG|INTAREG|FORCC,
SAREG, TWORD,
SCON, TINT,
NAREG|NASL, RESC1|RESCC,
- " extzv AR,ZU,AL,A1\n",
+ " extzv AR,ZU,AL,A1\n"},
-ASG LS, INAREG|FOREFF|FORCC,
+{ASG LS, INAREG|FOREFF|FORCC,
SAREG|AWD, TWORD,
SAREG|NIAWD, ANYSIGNED|ANYUSIGNED,
0, RLEFT|RESCC,
- " ashl AR,AL,AL\n",
+ " ashl AR,AL,AL\n"},
-ASG LS, INAREG|FOREFF|FORCC,
+{ASG LS, INAREG|FOREFF|FORCC,
SAREG|AWD, TWORD,
SSOREG, ANYSIGNED|ANYUSIGNED,
0, RLEFT|RESCC,
- " ashl AR,AL,AL\n",
+ " ashl AR,AL,AL\n"},
-ASG LS, INAREG|FOREFF|FORCC,
+{ASG LS, INAREG|FOREFF|FORCC,
SAREG|AWD, TWORD,
SOREG, ANYSIGNED|ANYUSIGNED,
NAREG, RLEFT|RESCC,
- " ZB AR,A1\n ashl A1,AL,AL\n",
+ " ZB AR,A1\n ashl A1,AL,AL\n"},
-LS, INAREG|INTAREG|FORCC,
+{LS, INAREG|INTAREG|FORCC,
SAREG|AWD, TWORD,
SAREG|NIAWD, ANYSIGNED|ANYUSIGNED,
NAREG|NASL|NASR, RESC1|RESCC,
- " ashl AR,AL,A1\n",
+ " ashl AR,AL,A1\n"},
-LS, INAREG|INTAREG|FORCC,
+{LS, INAREG|INTAREG|FORCC,
SAREG|AWD, TWORD,
SSOREG, ANYSIGNED|ANYUSIGNED,
NAREG|NASL|NASR, RESC1|RESCC,
- " ashl AR,AL,A1\n",
+ " ashl AR,AL,A1\n"},
-LS, INAREG|INTAREG|FORCC,
+{LS, INAREG|INTAREG|FORCC,
SAREG|AWD, TWORD,
SOREG, ANYSIGNED|ANYUSIGNED,
NAREG|NASR, RESC1|RESCC,
- " ZB AR,A1\n ashl A1,AL,A1\n",
+ " ZB AR,A1\n ashl A1,AL,A1\n"},
-INCR, FOREFF,
+{INCR, FOREFF,
AWD, TANY,
SCON, TANY,
0, RLEFT,
- " ZE\n",
+ " ZE\n"},
-DECR, FOREFF,
+{DECR, FOREFF,
AWD, TANY,
SCON, TANY,
0, RLEFT,
- " ZE\n",
+ " ZE\n"},
-INCR, FOREFF,
+{INCR, FOREFF,
SAREG, TWORD,
SCON, TANY,
0, RLEFT,
- " ZE\n",
+ " ZE\n"},
-DECR, FOREFF,
+{DECR, FOREFF,
SAREG, TWORD,
SCON, TANY,
0, RLEFT,
- " ZE\n",
+ " ZE\n"},
/* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */
-INCR, INAREG|INTAREG,
+{INCR, INAREG|INTAREG,
AWD, TANY,
SCON, TANY,
NAREG, RESC1,
- " ZD\n",
+ " ZD\n"},
-DECR, INAREG|INTAREG,
+{DECR, INAREG|INTAREG,
AWD, TANY,
SCON, TANY,
NAREG, RESC1,
- " ZD\n",
+ " ZD\n"},
-INCR, INAREG|INTAREG,
+{INCR, INAREG|INTAREG,
SAREG, TWORD,
SCON, TANY,
NAREG, RESC1,
- " ZD\n",
+ " ZD\n"},
-DECR, INAREG|INTAREG,
+{DECR, INAREG|INTAREG,
SAREG, TWORD,
SCON, TANY,
NAREG, RESC1,
- " ZD\n",
+ " ZD\n"},
-ASSIGN, INAREG|FOREFF|FORCC,
+{ASSIGN, INAREG|FOREFF|FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TUCHAR|TUSHORT,
NAREG|NASR, RLEFT|RESCC,
- " movzZRl AR,A1\n cvtld A1,AL\n",
+ " movzZRl AR,A1\n cvtld A1,AL\n"},
-ASSIGN, INAREG|FOREFF|FORCC,
+{ASSIGN, INAREG|FOREFF|FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TUCHAR|TUSHORT,
NAREG|NASR, RLEFT|RESCC,
- " movzZRl AR,A1\n cvtlf A1,AL\n",
+ " movzZRl AR,A1\n cvtlf A1,AL\n"},
-ASSIGN, INAREG|FOREFF|FORCC,
+{ASSIGN, INAREG|FOREFF|FORCC,
SAREG|AWD, TANY,
SAREG|AWD, TANY,
0, RLEFT|RESCC,
- " ZA\n",
+ " ZA\n"},
-ASSIGN, INAREG|FOREFF,
+{ASSIGN, INAREG|FOREFF,
SFLD, TANY,
SAREG|AWD, TWORD,
0, RRIGHT,
- " insv AR,$H,$S,AL\n",
+ " insv AR,$H,$S,AL\n"},
-ASSIGN, INAREG|FOREFF|FORCC,
+{ASSIGN, INAREG|FOREFF|FORCC,
SAREG|AWD, TWORD,
SFLD, ANYSIGNED,
0, RLEFT|RESCC,
- " extv $H,$S,AR,AL\n",
+ " extv $H,$S,AR,AL\n"},
-ASSIGN, INAREG|FOREFF|FORCC,
+{ASSIGN, INAREG|FOREFF|FORCC,
SAREG|AWD, TWORD,
SFLD, ANYUSIGNED,
0, RLEFT|RESCC,
- " extzv $H,$S,AR,AL\n",
+ " extzv $H,$S,AR,AL\n"},
/* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
-UNARY MUL, FOREFF,
+{UNARY MUL, FOREFF,
SCC, TANY,
SCC, TANY,
0, RNULL,
- " HELP HELP HELP\n",
+ " HELP HELP HELP\n"},
-REG, INTEMP,
+{REG, INTEMP,
SANY, TANY,
SAREG, TDOUBLE,
2*NTEMP, RESC1,
- " movd AR,A1\n",
+ " movd AR,A1\n"},
-REG, INTEMP,
+{REG, INTEMP,
SANY, TANY,
SAREG, TANY,
NTEMP, RESC1,
- " movZF AR,A1\n",
+ " movZF AR,A1\n"},
#if defined(FORT) || defined(SPRECC)
-REG, FORARG,
+{REG, FORARG,
SANY, TANY,
SAREG, TFLOAT,
0, RNULL,
- " cvtfd AR,-(sp)\n",
+ " cvtfd AR,-(sp)\n"},
-REG, FORARG,
+{REG, FORARG,
SANY, TANY,
SAREG, TDOUBLE,
0, RNULL,
- " movZR AR,-(sp)\n",
+ " movZR AR,-(sp)\n"},
#endif
-OPLEAF, FOREFF,
+{OPLEAF, FOREFF,
SANY, TANY,
SAREG|AWD, TANY,
0, RLEFT,
- "",
+ ""},
-OPLTYPE, INAREG|INTAREG,
+{OPLTYPE, INAREG|INTAREG,
SANY, TANY,
SANY, TANY,
NAREG|NASR, RESC1,
- " ZA\n",
+ " ZA\n"},
-OPLTYPE, FORCC,
+{OPLTYPE, FORCC,
SANY, TANY,
SANY, TANY,
0, RESCC,
- " tstZR AR\n",
+ " tstZR AR\n"},
-OPLTYPE, FORARG,
+{OPLTYPE, FORARG,
SANY, TANY,
SANY, TWORD,
0, RNULL,
- " pushl AR\n",
+ " pushl AR\n"},
-OPLTYPE, FORARG,
+{OPLTYPE, FORARG,
SANY, TANY,
SANY, TCHAR|TSHORT,
0, RNULL,
- " cvtZRl AR,-(sp)\n",
+ " cvtZRl AR,-(sp)\n"},
-OPLTYPE, FORARG,
+{OPLTYPE, FORARG,
SANY, TANY,
SANY, TUCHAR|TUSHORT,
0, RNULL,
- " movzZRl AR,-(sp)\n",
+ " movzZRl AR,-(sp)\n"},
-OPLTYPE, FORARG,
+{OPLTYPE, FORARG,
SANY, TANY,
SANY, TDOUBLE,
0, RNULL,
- " movd AR,-(sp)\n",
+ " movd AR,-(sp)\n"},
-OPLTYPE, FORARG,
+{OPLTYPE, FORARG,
SANY, TANY,
SANY, TFLOAT,
0, RNULL,
- " cvtfd AR,-(sp)\n",
+ " cvtfd AR,-(sp)\n"},
#if defined(FORT) || defined(SPRECC)
-UNARY MINUS, INTAREG|FORCC,
+{UNARY MINUS, INTAREG|FORCC,
SAREG|AWD, TFLOAT,
SANY, TANY,
NAREG|NASL, RESC1|RESCC,
- " mnegZL TAL,A1\n",
+ " mnegZL TAL,A1\n"},
#endif
-UNARY MINUS, INTAREG|FORCC,
+{UNARY MINUS, INTAREG|FORCC,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
SANY, TANY,
NAREG|NASL, RESC1|RESCC,
- " mnegZL AL,A1\n",
+ " mnegZL AL,A1\n"},
-COMPL, INTAREG|FORCC,
+{COMPL, INTAREG|FORCC,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
SANY, TANY,
NAREG|NASL, RESC1|RESCC,
- " mcomZL AL,A1\n",
+ " mcomZL AL,A1\n"},
-COMPL, INTAREG|FORCC,
+{COMPL, INTAREG|FORCC,
SAREG|AWD, ANYSIGNED|ANYUSIGNED,
SANY, TANY,
NAREG|NASL, RESC1|RESCC,
- " cvtZLl AL,A1\n mcoml A1,A1\n",
+ " cvtZLl AL,A1\n mcoml A1,A1\n"},
-AND, FORCC,
+{AND, FORCC,
SAREG|AWD, TWORD,
SCON, TWORD,
0, RESCC,
- " bitl ZZ,AL\n",
+ " bitl ZZ,AL\n"},
-AND, FORCC,
+{AND, FORCC,
SAREG|AWD, TSHORT|TUSHORT,
SSCON, TWORD,
0, RESCC,
- " bitw ZZ,AL\n",
+ " bitw ZZ,AL\n"},
-AND, FORCC,
+{AND, FORCC,
SAREG|AWD, TCHAR|TUCHAR,
SCCON, TWORD,
0, RESCC,
- " bitb ZZ,AL\n",
+ " bitb ZZ,AL\n"},
-ASG AND, INAREG|FOREFF|FORCC,
+{ASG AND, INAREG|FOREFF|FORCC,
SAREG, TWORD,
SCON, TWORD,
0, RLEFT|RESCC,
- " bicl2 AR,AL\n",
+ " bicl2 AR,AL\n"},
-ASG OPMUL, INAREG|FOREFF|FORCC,
+{ASG OPMUL, INAREG|FOREFF|FORCC,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
0, RLEFT|RESCC,
- " OL2 AR,AL\n",
+ " OL2 AR,AL\n"},
-OPMUL, INAREG|INTAREG|FORCC,
+{OPMUL, INAREG|INTAREG|FORCC,
STAREG, TINT|TUNSIGNED|TLONG|TULONG,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
0, RLEFT|RESCC,
- " OL2 AR,AL\n",
+ " OL2 AR,AL\n"},
-OPMUL, INAREG|INTAREG|FORCC,
+{OPMUL, INAREG|INTAREG|FORCC,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
NAREG|NASL|NASR, RESC1|RESCC,
- " OL3 AR,AL,A1\n",
+ " OL3 AR,AL,A1\n"},
-ASG MOD, INAREG|INTAREG|FOREFF|FORCC,
+{ASG MOD, INAREG|INTAREG|FOREFF|FORCC,
SAREG, TINT|TUNSIGNED|TLONG|TULONG,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
NAREG, RLEFT|RESCC,
- " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n",
+ " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n"},
-MOD, INAREG|INTAREG,
+{MOD, INAREG|INTAREG,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
NAREG, RESC1,
- " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n",
+ " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n"},
-ASG PLUS, INAREG|FOREFF|FORCC,
+{ASG PLUS, INAREG|FOREFF|FORCC,
SAREG, TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " incZL AL\n",
+ " incZL AL\n"},
-ASG PLUS, INAREG|FOREFF|FORCC,
+{ASG PLUS, INAREG|FOREFF|FORCC,
AWD, ANYSIGNED|ANYUSIGNED,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " incZL AL\n",
+ " incZL AL\n"},
-ASG PLUS, INAREG|FOREFF|FORCC,
+{ASG PLUS, INAREG|FOREFF|FORCC,
SAREG, TSHORT|TCHAR,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " incZL AL\n cvtZLl AL,AL\n",
+ " incZL AL\n cvtZLl AL,AL\n"},
-ASG PLUS, INAREG|FOREFF|FORCC,
+{ASG PLUS, INAREG|FOREFF|FORCC,
SAREG, TUSHORT|TUCHAR,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " incZL AL\n movzZLl AL,AL\n",
+ " incZL AL\n movzZLl AL,AL\n"},
-ASG MINUS, INAREG|FOREFF|FORCC,
+{ASG MINUS, INAREG|FOREFF|FORCC,
SAREG, TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " decZL AL\n",
+ " decZL AL\n"},
-ASG MINUS, INAREG|FOREFF|FORCC,
+{ASG MINUS, INAREG|FOREFF|FORCC,
AWD, ANYSIGNED|ANYUSIGNED,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " decZL AL\n",
+ " decZL AL\n"},
-ASG MINUS, INAREG|FOREFF|FORCC,
+{ASG MINUS, INAREG|FOREFF|FORCC,
SAREG, TSHORT|TCHAR,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " decZL AL\n cvtZLl AL,AL\n",
+ " decZL AL\n cvtZLl AL,AL\n"},
-ASG MINUS, INAREG|FOREFF|FORCC,
+{ASG MINUS, INAREG|FOREFF|FORCC,
SAREG, TUSHORT|TUCHAR,
SONE, TINT|TLONG,
0, RLEFT|RESCC,
- " decZL AL\n movzZLl AL,AL\n",
+ " decZL AL\n movzZLl AL,AL\n"},
-PLUS, INAREG|INTAREG|FORCC,
+{PLUS, INAREG|INTAREG|FORCC,
STAREG, TWORD,
SONE, TWORD,
0, RLEFT|RESCC,
- " incZL AL\n",
+ " incZL AL\n"},
-PLUS, INAREG|INTAREG|FORCC,
+{PLUS, INAREG|INTAREG|FORCC,
STAREG, TSHORT|TCHAR,
SONE, TWORD,
0, RLEFT|RESCC,
- " incZL AL\n cvtZLl AL,AL\n",
+ " incZL AL\n cvtZLl AL,AL\n"},
-PLUS, INAREG|INTAREG|FORCC,
+{PLUS, INAREG|INTAREG|FORCC,
STAREG, TUSHORT|TUCHAR,
SONE, TWORD,
0, RLEFT|RESCC,
- " incZL AL\n movzZLl AL,AL\n",
+ " incZL AL\n movzZLl AL,AL\n"},
-MINUS, INAREG|INTAREG|FORCC,
+{MINUS, INAREG|INTAREG|FORCC,
STAREG, TWORD,
SONE, TWORD,
0, RLEFT|RESCC,
- " decZL AL\n",
+ " decZL AL\n"},
-MINUS, INAREG|INTAREG|FORCC,
+{MINUS, INAREG|INTAREG|FORCC,
STAREG, TSHORT|TCHAR,
SONE, TWORD,
0, RLEFT|RESCC,
- " decZL AL\n cvtZLl AL,AL\n",
+ " decZL AL\n cvtZLl AL,AL\n"},
-MINUS, INAREG|INTAREG|FORCC,
+{MINUS, INAREG|INTAREG|FORCC,
STAREG, TUSHORT|TUCHAR,
SONE, TWORD,
0, RLEFT|RESCC,
- " decZL AL\n movzZLl AL,AL\n",
+ " decZL AL\n movzZLl AL,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
SAREG|AWD, TWORD,
SAREG|AWD, TWORD,
0, RLEFT|RESCC,
- " OL2 AR,AL\n",
+ " OL2 AR,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
SAREG, TWORD,
SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR,
0, RLEFT|RESCC,
- " OL2 AR,AL\n",
+ " OL2 AR,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
AWD, TSHORT|TUSHORT,
SAREG|AWD, TSHORT|TUSHORT,
0, RLEFT|RESCC,
- " OW2 AR,AL\n",
+ " OW2 AR,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
AWD, TSHORT|TUSHORT,
SSCON, TWORD,
0, RLEFT|RESCC,
- " OW2 AR,AL\n",
+ " OW2 AR,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
AWD, TCHAR|TUCHAR,
SAREG|AWD, TCHAR|TUCHAR,
0, RLEFT|RESCC,
- " OB2 AR,AL\n",
+ " OB2 AR,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
AWD, TCHAR|TUCHAR,
SCCON, TWORD,
0, RLEFT|RESCC,
- " OB2 AR,AL\n",
+ " OB2 AR,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
SAREG, TSHORT,
SAREG|AWD, ANYFIXED,
0, RLEFT|RESCC,
- " OW2 AR,AL\n cvtZLl AL,AL\n",
+ " OW2 AR,AL\n cvtZLl AL,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
SAREG, TUSHORT,
SAREG|AWD, ANYFIXED,
0, RLEFT|RESCC,
- " OW2 AR,AL\n movzZLl AL,AL\n",
+ " OW2 AR,AL\n movzZLl AL,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
SAREG, TCHAR,
SAREG|AWD, ANYFIXED,
0, RLEFT|RESCC,
- " OB2 AR,AL\n cvtZLl AL,AL\n",
+ " OB2 AR,AL\n cvtZLl AL,AL\n"},
-ASG OPSIMP, INAREG|FOREFF|FORCC,
+{ASG OPSIMP, INAREG|FOREFF|FORCC,
SAREG, TUCHAR,
SAREG|AWD, ANYFIXED,
0, RLEFT|RESCC,
- " OB2 AR,AL\n movzZLl AL,AL\n",
+ " OB2 AR,AL\n movzZLl AL,AL\n"},
-OPSIMP, INAREG|INTAREG|FORCC,
+{OPSIMP, INAREG|INTAREG|FORCC,
STAREG, ANYFIXED,
SAREG|AWD, TWORD,
0, RLEFT|RESCC,
- " OL2 AR,AL\n",
+ " OL2 AR,AL\n"},
-OPSIMP, INAREG|INTAREG|FORCC,
+{OPSIMP, INAREG|INTAREG|FORCC,
SAREG|AWD, TWORD,
SAREG|AWD, TWORD,
NAREG|NASL|NASR, RESC1|RESCC,
- " OL3 AR,AL,A1\n",
+ " OL3 AR,AL,A1\n"},
-ASG OPFLOAT, INAREG|FOREFF|FORCC,
+{ASG OPFLOAT, INAREG|FOREFF|FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TDOUBLE,
0, RLEFT|RESCC,
- " OD2 AR,AL\n",
+ " OD2 AR,AL\n"},
-ASG OPFLOAT, INAREG|FOREFF|FORCC,
+{ASG OPFLOAT, INAREG|FOREFF|FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TFLOAT,
0, RLEFT|RESCC,
#if defined(FORT) || defined(SPRECC)
- " OF2 AR,TAL\n",
+ " OF2 AR,TAL\n"},
#else
- " OF2 AR,AL\n",
+ " OF2 AR,AL\n"},
#endif
-ASG OPFLOAT, INAREG|FOREFF|FORCC,
+{ASG OPFLOAT, INAREG|FOREFF|FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TFLOAT,
NAREG|NASR, RLEFT|RESCC,
- " cvtfd AR,A1\n OD2 A1,AL\n",
+ " cvtfd AR,A1\n OD2 A1,AL\n"},
-ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC,
+{ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TDOUBLE,
NAREG, RLEFT|RESC1|RESCC,
- " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n",
+ " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n"},
-ASG OPFLOAT, INAREG|FOREFF|FORCC,
+{ASG OPFLOAT, INAREG|FOREFF|FORCC,
SAREG|AWD, ANYFIXED,
#ifndef SPRECC
SAREG|AWD, TDOUBLE, /* force FLOAT to register */
SAREG|AWD, TFLOAT|TDOUBLE,
#endif
NAREG, RLEFT|RESCC, /* usable() knows we need a reg pair */
- " ZG\n",
+ " ZG\n"},
-OPFLOAT, INAREG|INTAREG|FORCC,
+{OPFLOAT, INAREG|INTAREG|FORCC,
STAREG, TDOUBLE,
SAREG|AWD, TDOUBLE,
0, RLEFT|RESCC,
- " OD2 AR,AL\n",
+ " OD2 AR,AL\n"},
-OPFLOAT, INAREG|INTAREG|FORCC,
+{OPFLOAT, INAREG|INTAREG|FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TDOUBLE,
NAREG|NASL|NASR, RESC1|RESCC,
- " OD3 AR,AL,A1\n",
+ " OD3 AR,AL,A1\n"},
-OPFLOAT, INAREG|INTAREG|FORCC,
+{OPFLOAT, INAREG|INTAREG|FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TDOUBLE,
NAREG|NASL, RESC1|RESCC,
- " cvtfd AL,A1\n OD2 AR,A1\n",
+ " cvtfd AL,A1\n OD2 AR,A1\n"},
-OPFLOAT, INAREG|INTAREG|FORCC,
+{OPFLOAT, INAREG|INTAREG|FORCC,
SAREG|AWD, TDOUBLE,
SAREG|AWD, TFLOAT,
NAREG|NASR, RESC1|RESCC,
- " cvtfd AR,A1\n OD3 A1,AL,A1\n",
+ " cvtfd AR,A1\n OD3 A1,AL,A1\n"},
#if defined(FORT) || defined(SPRECC)
-OPFLOAT, INAREG|INTAREG|FORCC,
+{OPFLOAT, INAREG|INTAREG|FORCC,
STAREG, TFLOAT,
SAREG|AWD, TFLOAT,
0, RLEFT|RESCC,
- " OF2 AR,TAL\n",
+ " OF2 AR,TAL\n"},
-OPFLOAT, INAREG|INTAREG|FORCC,
+{OPFLOAT, INAREG|INTAREG|FORCC,
SAREG|AWD, TFLOAT,
SAREG|AWD, TFLOAT,
NAREG|NASL|NASR, RESC1|RESCC,
- " OF3 AR,AL,TA1\n",
+ " OF3 AR,AL,TA1\n"},
#endif
/* Default actions for hard trees ... */
# define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
-UNARY MUL, DF( UNARY MUL ),
+{UNARY MUL, DF( UNARY MUL )},
-INCR, DF(INCR),
+{INCR, DF(INCR)},
-DECR, DF(INCR),
+{DECR, DF(INCR)},
-ASSIGN, DF(ASSIGN),
+{ASSIGN, DF(ASSIGN)},
-STASG, DF(STASG),
+{STASG, DF(STASG)},
-FLD, DF(FLD),
+{FLD, DF(FLD)},
-OPLEAF, DF(NAME),
+{OPLEAF, DF(NAME)},
-OPLOG, FORCC,
+{OPLOG, FORCC,
SANY, TANY,
SANY, TANY,
REWRITE, BITYPE,
- "",
+ ""},
-OPLOG, DF(NOT),
+{OPLOG, DF(NOT)},
-COMOP, DF(COMOP),
+{COMOP, DF(COMOP)},
-INIT, DF(INIT),
+{INIT, DF(INIT)},
-OPUNARY, DF(UNARY MINUS),
+{OPUNARY, DF(UNARY MINUS)},
-ASG OPANY, DF(ASG PLUS),
+{ASG OPANY, DF(ASG PLUS)},
-OPANY, DF(BITYPE),
+{OPANY, DF(BITYPE)},
-FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };
+{FREE, FREE,
+ FREE, FREE,
+ FREE, FREE,
+ FREE, FREE,
+ "help; I'm in trouble\n"}
+
+};
/*#include "manifest.h" pass1.h*/
/*#include "ndu.h" manifest.h*/
#include "pass1.h"
+#ifdef ONEPASS
+#include "pass2.h"
+#endif
/*#include "pcclocal.h" macdefs.h*/
#if defined(DOSCCS) && !defined(lint)
# define NCVTR 010000
#ifndef BUG1
-int printact(t, acts) NODE *t; int acts; {
+void printact(t, acts) NODE *t; int acts; {
static struct actions {
int a_bit;
char *a_name;
(l->fn.csiz +1) >= 0 ){
/* nonunique name && structure defined */
char * memnam, * tabnam;
+#ifndef FLEXNAMES
register k;
+#endif
int j;
int memi;
j=dimtab[l->fn.csiz+1];
return(1);
}
-int chkpun(p) register NODE *p; {
+void chkpun(p) register NODE *p; {
/* checks p for the existance of a pun */
}
#ifndef econvert
-int econvert(p) register NODE *p; {
+void econvert(p) register NODE *p; {
/* change enums to ints, or appropriate types */
}
# ifndef BUG2
-int eprint(p, down, a, b) register NODE *p; int down; int *a; int *b; {
+void eprint(p, down, a, b) register NODE *p; int down; int *a; int *b; {
register ty;
*a = *b = down+1;
}
# endif
-int prtdcon(p) register NODE *p; {
+void prtdcon(p) register NODE *p; {
int o = p->in.op, i;
if( o == DCON || o == FCON ){
}
int edebug = 0;
-int ecomp(p) register NODE *p; {
+void ecomp(p) register NODE *p; {
# ifndef BUG2
if( edebug ) fwalk( p, eprint, 0 );
# endif
# else
-int p2tree(p) register NODE *p; {
+void p2tree(p) register NODE *p; {
register ty;
# ifdef MYP2TREE
#endif
else if( p->tn.rval >= 0 ){ /* copy name from exname */
register char *cp;
+#ifndef FLEXNAMES
register i;
+#endif
cp = exname( stab[p->tn.rval].sname );
#ifndef FLEXNAMES
for( i=0; i<NCHNAM; ++i ) p->in.name[i] = *cp++;
--- /dev/null
+s/@/ATSIGN/g
+s/^/@/
+s/$/@/
+s/[^A-Za-z0-9_]\+/@&@/g
+
+# onepass.h
+s/@crslab@/@crs2lab@/g
+s/@where@/@where2@/g
+s/@xdebug@/@x2debug@/g
+s/@tdebug@/@t2debug@/g
+s/@deflab@/@def2lab@/g
+s/@edebug@/@e2debug@/g
+s/@eprint@/@e2print@/g
+s/@getlab@/@get2lab@/g
+s/@filename@/@ftitle@/g
+
+s/@//g
+s/ATSIGN/@/g