Post-ansification changes for lib/pcc
authorNick Downing <downing.nick@gmail.com>
Fri, 3 Feb 2017 12:58:42 +0000 (23:58 +1100)
committerNick Downing <downing.nick@gmail.com>
Fri, 3 Feb 2017 13:54:04 +0000 (00:54 +1100)
23 files changed:
.gitignore
lib/pcc/Makefile
lib/pcc/allo.c
lib/pcc/cgram.c [deleted file]
lib/pcc/cgram.y
lib/pcc/code.c
lib/pcc/comm1.c
lib/pcc/fort.c
lib/pcc/fort.h
lib/pcc/local.c
lib/pcc/local2.c
lib/pcc/manifest.h
lib/pcc/match.c
lib/pcc/order.c
lib/pcc/pass1.h
lib/pcc/pass2.h
lib/pcc/pftn.c
lib/pcc/reader.c
lib/pcc/scan.c
lib/pcc/stab.c
lib/pcc/table.c
lib/pcc/trees.c
lib/pcc/uniqify2.sed [new file with mode: 0644]

index f48e165..583b690 100644 (file)
@@ -106,6 +106,8 @@ lib/libc/stdio/stdiolib_p
 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
index 0f621bd..f321262 100644 (file)
@@ -202,7 +202,7 @@ shrink:
        $(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:
index ced12b9..3c8c0ec 100644 (file)
@@ -20,7 +20,7 @@ int busy[REGSZ];
 int maxa, mina, maxb, minb;
 
 # ifndef ALLO0
-int allo0() { /* free everything */
+void allo0() { /* free everything */
 
        register i;
 
@@ -271,7 +271,7 @@ int ushare(p, f, r) NODE *p; int f; int r; {
        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;
@@ -304,7 +304,7 @@ int recl2(p) register NODE *p; {
 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 */
 
@@ -329,7 +329,7 @@ int rfree(r, t) int r; TWORD t; {
 # 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 */
 
@@ -352,7 +352,7 @@ int rbusy(r, t) int r; TWORD t; {
 # 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[] = {
 
@@ -385,7 +385,7 @@ int rwprint(rw) int rw; { /* print rewriting rule */
        }
 # 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;
@@ -580,7 +580,7 @@ NODE *tcopy(p) register NODE *p; {
        return(q);
        }
 
-int allchk() {
+void allchk() {
        /* check to ensure that all register are free */
 
        register i;
diff --git a/lib/pcc/cgram.c b/lib/pcc/cgram.c
deleted file mode 100644 (file)
index f977297..0000000
+++ /dev/null
@@ -1,1508 +0,0 @@
-#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 */
-
-       }
index 25c40a0..3c1730d 100644 (file)
 %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 */
@@ -898,13 +906,11 @@ funct_idn:           NAME  LP
                ;
 %%
 
-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 );
@@ -930,14 +936,14 @@ bdty( op, p, v ) NODE *p; {
        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");
                }
@@ -948,7 +954,7 @@ savebc() {
        flostat = 0;
        }
 
-resetbc(mask){
+void resetbc(mask) int mask; {
 
        swx = *--psavbc;
        flostat = *--psavbc | (flostat&mask);
@@ -957,7 +963,7 @@ resetbc(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 ){
@@ -977,7 +983,7 @@ addcase(p) NODE *p; { /* add case to switch */
        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;
@@ -989,7 +995,7 @@ adddef(){ /* add default case to switch */
        deflab( swtab[swx].slab = getlab() );
        }
 
-swstart(){
+void swstart() {
        /* begin a switch block */
        if( swp >= &swtab[SWITSZ] ){
                cerror( "switch table overflow");
@@ -999,7 +1005,7 @@ swstart(){
        ++swp;
        }
 
-swend(){ /* end a switch block */
+void swend() { /* end a switch block */
 
        register struct sw *swbeg, *p, *q, *r, *r1;
        CONSZ temp;
index 7c20410..ba276af 100644 (file)
@@ -5,6 +5,9 @@
 /*#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)
@@ -25,7 +28,7 @@ int labelno;
 
 # 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 ){
@@ -39,7 +42,7 @@ int lastloc = { -1 };
 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 );
@@ -83,7 +86,7 @@ int locctr(l) int l; {
        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 );
        }
@@ -100,7 +103,7 @@ int ent_mask[] = {
 
 int reg_use = 11;
 
-int efcode() {
+void efcode() {
        /* code for the end of a function */
 
        if( strftn ){  /* copy output (in R2) to caller */
@@ -161,7 +164,7 @@ int efcode() {
 
 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;
@@ -233,7 +236,7 @@ int bfcode(a, n) int a[]; int n; {
        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 */
@@ -241,24 +244,24 @@ int bccode() { /* called just before the first executable statment */
        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 ){
@@ -269,7 +272,7 @@ int defnam(p) register struct symtab *p; {
 
        }
 
-int bycode(t, i) int t; int i; {
+void bycode(t, i) int t; int i; {
 #ifdef ASSTRINGS
 static int     lastoctal = 0;
 #endif
@@ -327,7 +330,7 @@ static      int     lastoctal = 0;
 #endif
        }
 
-int zecode(n) int n; {
+void zecode(n) int n; {
        /* n integer words of zeros */
        OFFSZ temp;
        if( n <= 0 ) return;
@@ -341,11 +344,11 @@ int fldal(t) unsigned t; { /* return the alignment of field of type t */
        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 );
@@ -355,17 +358,17 @@ int where(c) int c; { /* print location of error  */
                  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; {
@@ -389,7 +392,7 @@ int main(argc, argv) int argc; char *argv[]; {
 
 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;
@@ -454,7 +457,7 @@ int genswitch(p, n) register struct sw *p; int n; {
        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);
@@ -472,7 +475,7 @@ int select(m) int 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;
index a5f89ac..aa38e5f 100644 (file)
@@ -53,9 +53,9 @@ unsigned caloff() {
 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;
@@ -65,7 +65,7 @@ int uerror(s, va_alist) char *s; va_dcl
 
        ++nerrors;
        where('u');
-       _va_start(argp, fmt);
+       _va_start(argp, s);
        vfprintf( stderr, s, argp );
        va_end(argp);
        fprintf( stderr, "\n" );
@@ -76,9 +76,9 @@ int uerror(s, va_alist) char *s; va_dcl
        }
 
 #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;
@@ -89,7 +89,7 @@ int cerror(s, va_alist) char *s; va_dcl
                }
        else {
                fprintf( stderr, "compiler error: " );
-               _va_start(argp, fmt);
+               _va_start(argp, s);
                fprintf( stderr, s, argp );
                va_end(argp);
                fprintf( stderr, "\n" );
@@ -103,9 +103,9 @@ int cerror(s, va_alist) char *s; va_dcl
 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;
@@ -113,7 +113,7 @@ int werror(s, va_alist) char *s; va_dcl
        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" );
@@ -122,7 +122,7 @@ int werror(s, va_alist) char *s; va_dcl
 #endif
        }
 
-int tinit() { /* initialize expression tree search */
+void tinit() { /* initialize expression tree search */
 
        register NODE *p;
 
@@ -144,7 +144,7 @@ NODE *talloc() {
        /* NOTREACHED */
        }
 
-int tcheck() { /* ensure that all nodes have been freed */
+void tcheck() { /* ensure that all nodes have been freed */
 
        register NODE *p;
 
@@ -156,20 +156,20 @@ int tcheck() { /* ensure that all nodes have been freed */
        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;
 
@@ -195,7 +195,7 @@ int fwalk(t, f, down) register NODE *t; int (*f)(); int down; {
        }
 
 #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);
@@ -211,7 +211,7 @@ int walkf(t, f) register NODE *t; int (*f)(); {
  * 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];
@@ -247,88 +247,88 @@ char *opst[DSIZE];
 
 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 ){
@@ -337,7 +337,7 @@ int mkdope() {
                }
        }
 # 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",
index 239367f..d41cc6e 100644 (file)
@@ -77,7 +77,7 @@ long lread() {
 # 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" );
@@ -88,7 +88,7 @@ int lopen(s) char *s; {
 # 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" );
                }
@@ -96,7 +96,7 @@ int lcread(cp, n) char *cp; int n; {
 # endif
 
 # ifndef NOLCCOPY
-int lccopy(n) register n; {
+void lccopy(n) register n; {
        register i;
        static char fbuf[BUFSIZ];
        if( n > 0 ){
index dc587f4..ea1f2b2 100644 (file)
@@ -8,11 +8,11 @@
 
 /*     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" );
        }
index 8de87de..ed0637d 100644 (file)
@@ -5,6 +5,9 @@
 /*#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)
@@ -196,7 +199,7 @@ int andable(p) NODE *p; {
        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;
        }
 
@@ -236,7 +239,7 @@ NODE *offcon(off, t, d, s) OFFSZ off; TWORD t; int d; int s; {
 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 */
@@ -254,7 +257,7 @@ int incode(p, sz) register NODE *p; int 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 */
@@ -265,7 +268,7 @@ int fincode(d, sz) double d; int sz; {
        inoff += sz;
        }
 
-int cinit(p, sz) NODE *p; int sz; {
+void cinit(p, sz) NODE *p; int sz; {
        NODE *l;
 
        /*
@@ -298,7 +301,7 @@ int cinit(p, sz) NODE *p; int sz; {
        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;
 
@@ -359,7 +362,7 @@ int noinit() { /* curid is a variable which is defined but
 
        }
 
-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();
 
@@ -394,7 +397,7 @@ int isitfloat(s) char *s; {
        return( DCON );
        }
 
-int ecode(p) NODE *p; {
+void ecode(p) NODE *p; {
 
        /* walk the tree and write out the nodes.. */
 
index 56025e2..5ad7696 100644 (file)
@@ -24,16 +24,16 @@ int ftlab1, ftlab2;
 
 # 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;
@@ -66,23 +66,24 @@ int eobl2() {
 
 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;
@@ -158,7 +159,7 @@ int mixtypes(p, q) NODE *p; NODE *q; {
                (tq==FLOAT || tq==DOUBLE) );
 }
 
-int prtype(n) NODE *n; {
+void prtype(n) NODE *n; {
        switch (n->in.type) {
                case DOUBLE:
                        putchar('d');
@@ -194,7 +195,7 @@ int prtype(n) NODE *n; {
                }
 }
 
-int zzzcode(p, c) register NODE *p; int c; {
+void zzzcode(p, c) register NODE *p; int c; {
        register m;
        CONSZ val;
        switch( c ){
@@ -609,7 +610,7 @@ int collapsible(dest, src) NODE *dest; NODE *src; {
        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") :
@@ -620,14 +621,15 @@ int rmove(rt, rs, t) int rt; int rs; TWORD t; {
 
 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) */
        ;
        }
@@ -680,9 +682,11 @@ int offset(p, tyl) register NODE *p; int tyl; {
        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;
@@ -799,12 +803,12 @@ int shumul(p) register NODE *p; {
        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:
@@ -820,15 +824,15 @@ int conput(p) register NODE *p; {
                }
        }
 
-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 */
 
@@ -922,7 +926,7 @@ int adrput(p) register NODE *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);
@@ -1069,7 +1073,7 @@ ccbranches[] = {
        };
 /* 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 );
@@ -1093,11 +1097,10 @@ int lastchance(p, cook) NODE *p; int cook; {
        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 ) {
 
@@ -1195,13 +1198,14 @@ struct functbl {
        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;
@@ -1316,7 +1320,7 @@ int hardops(p) register NODE *p; {
 
        }
 
-int zappost(p) NODE *p; {
+void zappost(p) NODE *p; {
        /* look for ++ and -- operators and remove them */
 
        register o, ty;
@@ -1340,7 +1344,7 @@ int zappost(p) NODE *p; {
        if( ty != LTYPE ) zappost( p->in.left );
 }
 
-int fixpre(p) NODE *p; {
+void fixpre(p) NODE *p; {
 
        register o, ty;
        o = p->in.op;
@@ -1360,7 +1364,7 @@ int fixpre(p) NODE *p; {
        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 */
@@ -1378,7 +1382,7 @@ int strip(p) register NODE *p; {
                }
        }
 
-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 */
index dc26659..69b5f8d 100644 (file)
@@ -118,21 +118,28 @@ extern    char *opst[];           /* a vector containing names for ops */
 #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
index 9b06732..7f8addc 100644 (file)
@@ -221,7 +221,7 @@ struct optab *rwtable;
 
 struct optab *opptr[DSIZE];
 
-int setrew() {
+void setrew() {
        /* set rwtable to first value which allows rewrite */
        register struct optab *q;
        register int i;
@@ -326,7 +326,7 @@ int match(p, cookie) NODE *p; int cookie; {
 
 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
index e3bee68..5deefc9 100644 (file)
@@ -14,7 +14,7 @@ static char *sccsid ="@(#)order.c     1.7 (Berkeley) 1/8/86";
 
 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) */
@@ -40,7 +40,7 @@ int autoincr(p) NODE *p; {
        return(0);
        }
 
-int mkadrs(p) register NODE *p; {
+void mkadrs(p) register NODE *p; {
        register o;
 
        o = p->in.op;
@@ -80,7 +80,7 @@ int notoff(t, r, off, cp) TWORD t; int r; CONSZ off; char *cp; {
 
 # 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 */
@@ -210,7 +210,7 @@ int sucomp(p) register NODE *p; {
 
 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;
 
@@ -257,7 +257,7 @@ int rallo(p, down) NODE *p; int down; {
 
        }
 
-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 );
@@ -447,11 +447,11 @@ int get2lab() {
        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;
index 77ca2c3..57cfaad 100644 (file)
@@ -251,59 +251,59 @@ OFFSZ     tsize(),
 /* 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 */
@@ -312,87 +312,87 @@ NODE *optim __P((register NODE *p));
 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));
@@ -403,11 +403,11 @@ int icons __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));
index b39d768..dc66dba 100644 (file)
@@ -244,125 +244,125 @@ extern  union mltemplate mltree[];
 #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
index c522488..141095b 100644 (file)
@@ -6,6 +6,12 @@
 #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
@@ -39,7 +45,7 @@ int ddebug = 0;
 
 /*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;
@@ -263,7 +269,10 @@ int defid(q, class) register NODE *q; register int class; {
                        /* 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
@@ -400,14 +409,14 @@ int defid(q, class) register NODE *q; register int class; {
 
        }
 
-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();
                }
@@ -432,7 +441,7 @@ int ftnend() { /* end of function */
        locctr(DATA);
        }
 
-int dclargs() {
+void dclargs() {
        register i, j;
        register struct symtab *p;
        register NODE *q;
@@ -497,7 +506,7 @@ NODE *rstruct(idn, soru) int idn; int soru; { /* reference to a structure or uni
        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 );
@@ -652,17 +661,17 @@ NODE *dclstruct(oparam) int oparam; {
        }
 
        /* 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:
@@ -777,7 +786,7 @@ OFFSZ tsize(ty, d, s) TWORD ty; int d; int s; {
        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;
@@ -817,7 +826,7 @@ int inforce(n) OFFSZ n; {  /* force inoff to have the value n */
 
        }
 
-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;
@@ -835,7 +844,7 @@ int iclass;  /* storage class of thing being initialized */
 
 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;
 
@@ -874,7 +883,7 @@ int beginit(curid) int curid; {
 
        }
 
-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;
@@ -971,7 +980,7 @@ NODE *getstr() { /* decide if the string is external or an initializer, and get
                }
        }
 
-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 );
@@ -979,7 +988,7 @@ int putbyte(v) int v; { /* simulate byte v appearing in a list of integer values
        gotscal();
        }
 
-int endinit() {
+void endinit() {
        register TWORD t;
        register d, s, n, d1;
 
@@ -1034,7 +1043,7 @@ int endinit() {
 
        }
 
-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)
@@ -1125,7 +1134,7 @@ int doinit(p) register NODE *p; {
        tfree(p);
        }
 
-int gotscal() {
+void gotscal() {
        register t, ix;
        register n, id;
        struct symtab *p;
@@ -1165,7 +1174,7 @@ int gotscal() {
        ifull = 1;
        }
 
-int ilbrace() { /* process an initializer's left brace */
+void ilbrace() { /* process an initializer's left brace */
        register t;
        struct instk *temp;
 
@@ -1191,7 +1200,7 @@ int ilbrace() { /* process an initializer's left brace */
        pstk = temp;
        }
 
-int irbrace() {
+void irbrace() {
        /* called when a '}' is seen */
 
 # ifndef BUG1
@@ -1359,7 +1368,7 @@ int falloc(p, w, new, pty) register struct symtab *p; int w; int new; NODE *pty;
        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 */
@@ -1474,7 +1483,7 @@ NODE *tymerge(typ, idp) NODE *typ; NODE *idp; {
 
        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 );
@@ -1503,7 +1512,7 @@ NODE *tymerge(typ, idp) NODE *typ; NODE *idp; {
        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 */
@@ -1535,7 +1544,7 @@ int tyreduce(p) register NODE *p; {
 
        }
 
-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 */
@@ -1694,7 +1703,12 @@ struct symtab *mknonuniq(idindex) int *idindex; {/* locate a symbol table entry
        /* 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 */
@@ -1706,8 +1720,12 @@ struct symtab *mknonuniq(idindex) int *idindex; {/* locate a symbol table 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
@@ -1730,7 +1748,11 @@ int lookup(name, s) char *name; int s; {
        /* 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 */
@@ -1747,7 +1769,7 @@ int lookup(name, s) char *name; int s; {
                if( ++j >= NCHNAM ) break;
                }
 #else
-       i = (int)name;
+       i = (intptr_t)name;
 #endif
        i = i%SYMTSZ;
        sp = &stab[ii=i];
@@ -1836,7 +1858,7 @@ struct symtab *relook(p) register struct symtab *p; {  /* look up p again, and s
        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;
@@ -1846,13 +1868,10 @@ int clearst(lev) register int lev; {
 
        /* 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;
@@ -1926,9 +1945,12 @@ int hide(p) register struct symtab *p; {
        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;
index b1e0e83..05e556d 100644 (file)
@@ -235,7 +235,7 @@ int mainp2(argc, argv) int argc; char *argv[]; {
 # 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 */
@@ -255,7 +255,7 @@ int p2compile(p) NODE *p; {
        /* 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;
@@ -272,7 +272,7 @@ int p2bbeg(aoff, myreg) int aoff; int myreg; {
        setregs();
        }
 
-int p2bend() {
+void p2bend() {
        SETOFF( maxoff, ALSTACK );
        eobl2();
        }
@@ -281,7 +281,7 @@ int p2bend() {
 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 */
@@ -329,7 +329,7 @@ int delay1(p) register NODE *p; {  /* look for COMOPS */
        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 */
 
@@ -380,7 +380,7 @@ int delay2(p) register NODE *p; {
        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 */
@@ -435,7 +435,7 @@ char *cnames[] = {
        0,
        };
 
-int prcook(cookie) int cookie; {
+void prcook(cookie) int cookie; {
 
        /* print a nice-looking description of cookie */
 
@@ -466,7 +466,7 @@ int prcook(cookie) int 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;
@@ -763,7 +763,7 @@ int order(p, cook) NODE *p; int cook; {
 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 */
 
@@ -828,7 +828,7 @@ int store(p) register NODE *p; {
        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
@@ -849,7 +849,7 @@ int constore(p) register NODE *p; {
        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 ){
@@ -879,7 +879,7 @@ int markcall(p) register NODE *p; {  /* mark off calls below the current node */
 
        }
 
-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 ){
@@ -907,7 +907,7 @@ int stoarg(p, calltype) register NODE *p; int calltype; {
 
 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 */
 
@@ -1038,7 +1038,7 @@ int cbranch(p, true, false) NODE *p; int true; int false; {
 
        }
 
-int rcount() { /* count recursions */
+void rcount() { /* count recursions */
        if( ++nrecur > NRECUR ){
                cerror( "expression causes compiler loop: try simplifying" );
                }
@@ -1046,7 +1046,7 @@ int rcount() { /* count recursions */
        }
 
 # 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 ){
@@ -1250,7 +1250,7 @@ int ffld(p, down, down1, down2) NODE *p; int down; int *down1; int *down2; {
        }
 #endif
 
-int oreg2(p) register NODE *p; {
+void oreg2(p) register NODE *p; {
 
        /* look for situations where2 we can turn * into OREG */
 
@@ -1318,9 +1318,9 @@ int oreg2(p) register NODE *p; {
 
        }
 
-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();
index 786e9d4..ecfc009 100644 (file)
@@ -10,6 +10,9 @@
 /*#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";
@@ -185,7 +188,7 @@ int mainp1(argc, argv) int argc; char *argv[]; {  /* control multiple files */
        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();
@@ -210,7 +213,7 @@ int mainp1(argc, argv) int argc; char *argv[]; {  /* control multiple files */
 
 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;
 
@@ -220,7 +223,7 @@ int lxenter(s, m) register char *s; int m; {
 
 # 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;
@@ -240,44 +243,44 @@ struct lxdope {
        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;
@@ -321,7 +324,7 @@ int lxinit() {
 
 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;
@@ -439,7 +442,7 @@ int lxstr(ct) int ct; {
                }
        }
 
-int lxcom() {
+void lxcom() {
        register c;
        /* saw a /*: process a comment */
 
@@ -837,38 +840,38 @@ struct lxrdope {
        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() {
@@ -995,7 +998,7 @@ int lxres() {
 
 extern int     labelno;
 
-int lxtitle() {
+void lxtitle() {
        /* called after a newline; set linenumber and file name */
 
        register c, val;
index ca7ae3c..657975a 100644 (file)
@@ -81,23 +81,23 @@ static Typeid typetable[TABLESIZE];
 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) {
@@ -134,10 +134,9 @@ static bool zero_length_array(p) register struct symtab *p; {
  * 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;
 
@@ -150,11 +149,9 @@ int outstab(sym) struct symtab *sym; {
        }
        ignore = false;
        p = sym;
-       offset = bytes(p->offset);
        switch (p->sclass) {
        case REGISTER:
            classname = "r";
-           offset = p->offset;
            break;
 
        /*
@@ -277,7 +274,7 @@ static int entertype(type, arrindex, strindex, strtag) TWORD type; int arrindex;
  * 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;
 
@@ -298,7 +295,7 @@ static reentertype(typeid, type, arrindex, strindex, strtag) Typeid typeid; TWOR
 
 #define builtintype(type) entertype(type, NILINDEX, NILINDEX, NILINDEX)
 
-static inittypes() {
+static void inittypes() {
     int t;
 
     t_int = builtintype(INT);
@@ -325,7 +322,7 @@ static inittypes() {
  * 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);
 }
@@ -334,7 +331,7 @@ static maketype(name, tnum, eqtnum, lower, upper) char *name; int tnum; int eqtn
  * 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;
@@ -410,7 +407,7 @@ static gentype(sym) struct symtab *sym; {
  * 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;
@@ -461,7 +458,7 @@ static genstruct(t, structid, index, name, size) TWORD t; int structid; int inde
  * Generate offset && size info.
  */
 
-static geninfo(p) register struct symtab *p; {
+static void geninfo(p) register struct symtab *p; {
     int stabtype;
 
     if (p == 0) {
@@ -507,7 +504,7 @@ static geninfo(p) register struct symtab *p; {
  * 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;
@@ -533,9 +530,11 @@ int outstruct(szindex, paramindex) int szindex; int paramindex; {
     }
 }
 
-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;
@@ -563,7 +562,7 @@ int pstab(name, type) char *name; int type; {
 }
 
 #ifdef STABDOT
-int pstabdot(type, value) int type; int value; {
+void pstabdot(type, value) int type; int value; {
     if ( ! gdebug) {
        return;
     } else if (oldway) {
@@ -580,7 +579,7 @@ extern char NULLNAME[8];
 extern int  labelno;
 extern int  fdefflag;
 
-int psline() {
+void psline() {
     static int lastlineno;
     register char *cp, *cq;
     register int i;
@@ -632,7 +631,7 @@ eq: if (lineno == lastlineno) return;
     }
 }
     
-int plcstab(level) int level; {
+void plcstab(level) int level; {
     if (!gdebug) {
        return;
     } else if (oldway) {
@@ -648,7 +647,7 @@ int plcstab(level) int level; {
 #endif
 }
     
-int prcstab(level) int level; {
+void prcstab(level) int level; {
     if (!gdebug) {
        return;
     } else if (oldway) {
@@ -664,7 +663,7 @@ int prcstab(level) int level; {
 #endif
 }
     
-int pfstab(sname) char *sname; {
+void pfstab(sname) char *sname; {
     register struct symtab *p;
 
     if (gdebug) {
@@ -684,7 +683,7 @@ int pfstab(sname) char *sname; {
  * 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);
@@ -692,7 +691,7 @@ static old_fixarg(p) struct symtab *p; {
        }
 }
 
-static old_outstab(p) struct symtab *p; {
+static void old_outstab(p) struct symtab *p; {
        register TWORD ptype;
        register char *pname;
        register char pclass;
@@ -766,9 +765,12 @@ static old_outstab(p) struct symtab *p; {
        }
 }
 
-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
@@ -790,7 +792,7 @@ static old_pstab(name, type) char *name; int type; {
 }
 
 #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");
@@ -798,7 +800,7 @@ static old_pstabdot(type, value) int type; int value; {
 }
 #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) {
@@ -807,7 +809,7 @@ static old_poffs(p) register struct symtab *p; {
        }
 }
 
-static old_psline() {
+static void old_psline() {
        static int lastlineno;
        register char *cp, *cq;
        register int i;
@@ -854,7 +856,7 @@ eq: if (lineno == lastlineno) return;
                }
        }
        
-static old_plcstab(level) int level; {
+static void old_plcstab(level) int level; {
        if (!gdebug) return;
 #ifdef STABDOT
        old_pstabdot(N_LBRAC, level);
@@ -865,7 +867,7 @@ static old_plcstab(level) int level; {
 #endif
        }
        
-static old_prcstab(level) int level; {
+static void old_prcstab(level) int level; {
        if (!gdebug) return;
 #ifdef STABDOT
        pstabdot(N_RBRAC, level);
@@ -876,7 +878,7 @@ static old_prcstab(level) int level; {
 #endif
        }
        
-static old_pfstab(sname) char *sname; {
+static void old_pfstab(sname) char *sname; {
        if (!gdebug) return;
        pstab(sname, N_FUN);
 #ifndef FLEXNAMES
index 23f5060..4bdcb1f 100644 (file)
@@ -21,741 +21,741 @@ static char *sccsid ="@(#)table.c 1.13 (Berkeley) 1/8/86";
 
 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 */
@@ -763,80 +763,86 @@ ASG OPFLOAT,      INAREG|FOREFF|FORCC,
        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"}
+
+};
index 0c561d0..f375b0b 100644 (file)
@@ -5,6 +5,9 @@
 /*#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)
@@ -37,7 +40,7 @@ extern ddebug;
 # 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;
@@ -360,7 +363,9 @@ NODE *buildtree(o, l, r) int o; register NODE *l; register NODE *r; {
                                (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];
@@ -749,7 +754,7 @@ int conval(p, o, q) register NODE *p; int o; register NODE *q; {
        return(1);
        }
 
-int chkpun(p) register NODE *p; {
+void chkpun(p) register NODE *p; {
 
        /* checks p for the existance of a pun */
 
@@ -945,7 +950,7 @@ NODE *convert(p, f) register NODE *p; int f; {
        }
 
 #ifndef econvert
-int econvert(p) register NODE *p; {
+void econvert(p) register NODE *p; {
 
        /* change enums to ints, or appropriate types */
 
@@ -1500,7 +1505,7 @@ NODE *doszof(p) register NODE *p; {
        }
 
 # 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;
@@ -1522,7 +1527,7 @@ int eprint(p, down, a, b) register NODE *p; int down; int *a; int *b; {
        }
 # endif
 
-int prtdcon(p) register NODE *p; {
+void prtdcon(p) register NODE *p; {
        int o = p->in.op, i;
 
        if( o == DCON || o == FCON ){
@@ -1541,7 +1546,7 @@ int prtdcon(p) register NODE *p; {
        }
 
 int edebug = 0;
-int ecomp(p) register NODE *p; {
+void ecomp(p) register NODE *p; {
 # ifndef BUG2
        if( edebug ) fwalk( p, eprint, 0 );
 # endif
@@ -1623,7 +1628,7 @@ int prtree(p) register NODE *p; {
 
 # else
 
-int p2tree(p) register NODE *p; {
+void p2tree(p) register NODE *p; {
        register ty;
 
 # ifdef MYP2TREE
@@ -1643,7 +1648,9 @@ int p2tree(p) register NODE *p; {
 #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++;
diff --git a/lib/pcc/uniqify2.sed b/lib/pcc/uniqify2.sed
new file mode 100644 (file)
index 0000000..44aacdf
--- /dev/null
@@ -0,0 +1,18 @@
+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