diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2017-03-22 17:56:34 +0100 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2017-03-22 17:56:34 +0100 |
commit | 6a777afc079c2a8d3af3ecd2145fe8dd50567a39 (patch) | |
tree | 520f4489cebf8564ef6cb27064ceea45cbc005b3 /src/tools/lcc/build-mingw32-x86/rcc/dagcheck.c |
Diffstat (limited to 'src/tools/lcc/build-mingw32-x86/rcc/dagcheck.c')
-rw-r--r-- | src/tools/lcc/build-mingw32-x86/rcc/dagcheck.c | 2086 |
1 files changed, 2086 insertions, 0 deletions
diff --git a/src/tools/lcc/build-mingw32-x86/rcc/dagcheck.c b/src/tools/lcc/build-mingw32-x86/rcc/dagcheck.c new file mode 100644 index 0000000..e723dac --- /dev/null +++ b/src/tools/lcc/build-mingw32-x86/rcc/dagcheck.c @@ -0,0 +1,2086 @@ +#include "c.h"
+typedef Node NODEPTR_TYPE;
+#define OP_LABEL(p) (specific((p)->op))
+#define LEFT_CHILD(p) ((p)->kids[0])
+#define RIGHT_CHILD(p) ((p)->kids[1])
+#define STATE_LABEL(p) ((p)->x.state)
+#define PANIC error
+/*
+generated at Fri Mar 06 20:43:04 2009
+by lburg.c - faked rcsid
+*/
+static void _kids(NODEPTR_TYPE, int, NODEPTR_TYPE[]);
+static void _label(NODEPTR_TYPE);
+static int _rule(void*, int);
+
+#define _stmt_NT 1
+#define _P_NT 2
+#define _V_NT 3
+#define _bogus_NT 4
+#define _I_NT 5
+#define _U_NT 6
+#define _F_NT 7
+#define _B_NT 8
+
+static char *_ntname[] = {
+ 0,
+ "stmt",
+ "P",
+ "V",
+ "bogus",
+ "I",
+ "U",
+ "F",
+ "B",
+ 0
+};
+
+struct _state {
+ short cost[9];
+ struct {
+ unsigned int _stmt:4;
+ unsigned int _P:4;
+ unsigned int _V:6;
+ unsigned int _bogus:3;
+ unsigned int _I:5;
+ unsigned int _U:5;
+ unsigned int _F:4;
+ unsigned int _B:2;
+ } rule;
+};
+
+static short _nts_0[] = { _P_NT, 0 };
+static short _nts_1[] = { _V_NT, 0 };
+static short _nts_2[] = { _I_NT, 0 };
+static short _nts_3[] = { _U_NT, 0 };
+static short _nts_4[] = { _F_NT, 0 };
+static short _nts_5[] = { _B_NT, 0 };
+static short _nts_6[] = { _bogus_NT, 0 };
+static short _nts_7[] = { 0 };
+static short _nts_8[] = { _P_NT, _B_NT, 0 };
+static short _nts_9[] = { _P_NT, _F_NT, 0 };
+static short _nts_10[] = { _P_NT, _I_NT, 0 };
+static short _nts_11[] = { _P_NT, _U_NT, 0 };
+static short _nts_12[] = { _P_NT, _P_NT, 0 };
+static short _nts_13[] = { _F_NT, _F_NT, 0 };
+static short _nts_14[] = { _I_NT, _I_NT, 0 };
+static short _nts_15[] = { _I_NT, _P_NT, 0 };
+static short _nts_16[] = { _U_NT, _P_NT, 0 };
+static short _nts_17[] = { _U_NT, _U_NT, 0 };
+static short _nts_18[] = { _U_NT, _I_NT, 0 };
+
+static short *_nts[] = {
+ 0, /* 0 */
+ _nts_0, /* 1 */
+ _nts_0, /* 2 */
+ _nts_0, /* 3 */
+ _nts_0, /* 4 */
+ _nts_0, /* 5 */
+ _nts_0, /* 6 */
+ _nts_0, /* 7 */
+ _nts_0, /* 8 */
+ _nts_0, /* 9 */
+ _nts_1, /* 10 */
+ _nts_2, /* 11 */
+ _nts_3, /* 12 */
+ _nts_0, /* 13 */
+ _nts_4, /* 14 */
+ _nts_5, /* 15 */
+ _nts_1, /* 16 */
+ _nts_6, /* 17 */
+ _nts_6, /* 18 */
+ _nts_6, /* 19 */
+ _nts_6, /* 20 */
+ _nts_6, /* 21 */
+ _nts_6, /* 22 */
+ _nts_7, /* 23 */
+ _nts_7, /* 24 */
+ _nts_7, /* 25 */
+ _nts_7, /* 26 */
+ _nts_5, /* 27 */
+ _nts_4, /* 28 */
+ _nts_2, /* 29 */
+ _nts_3, /* 30 */
+ _nts_0, /* 31 */
+ _nts_8, /* 32 */
+ _nts_9, /* 33 */
+ _nts_10, /* 34 */
+ _nts_11, /* 35 */
+ _nts_12, /* 36 */
+ _nts_0, /* 37 */
+ _nts_0, /* 38 */
+ _nts_0, /* 39 */
+ _nts_0, /* 40 */
+ _nts_0, /* 41 */
+ _nts_2, /* 42 */
+ _nts_3, /* 43 */
+ _nts_4, /* 44 */
+ _nts_2, /* 45 */
+ _nts_3, /* 46 */
+ _nts_0, /* 47 */
+ _nts_2, /* 48 */
+ _nts_4, /* 49 */
+ _nts_3, /* 50 */
+ _nts_0, /* 51 */
+ _nts_4, /* 52 */
+ _nts_2, /* 53 */
+ _nts_12, /* 54 */
+ _nts_0, /* 55 */
+ _nts_0, /* 56 */
+ _nts_0, /* 57 */
+ _nts_0, /* 58 */
+ _nts_0, /* 59 */
+ _nts_4, /* 60 */
+ _nts_2, /* 61 */
+ _nts_3, /* 62 */
+ _nts_0, /* 63 */
+ _nts_7, /* 64 */
+ _nts_7, /* 65 */
+ _nts_7, /* 66 */
+ _nts_7, /* 67 */
+ _nts_13, /* 68 */
+ _nts_14, /* 69 */
+ _nts_10, /* 70 */
+ _nts_15, /* 71 */
+ _nts_16, /* 72 */
+ _nts_11, /* 73 */
+ _nts_17, /* 74 */
+ _nts_13, /* 75 */
+ _nts_14, /* 76 */
+ _nts_10, /* 77 */
+ _nts_11, /* 78 */
+ _nts_17, /* 79 */
+ _nts_14, /* 80 */
+ _nts_18, /* 81 */
+ _nts_14, /* 82 */
+ _nts_17, /* 83 */
+ _nts_14, /* 84 */
+ _nts_18, /* 85 */
+ _nts_17, /* 86 */
+ _nts_14, /* 87 */
+ _nts_3, /* 88 */
+ _nts_2, /* 89 */
+ _nts_14, /* 90 */
+ _nts_17, /* 91 */
+ _nts_17, /* 92 */
+ _nts_14, /* 93 */
+ _nts_13, /* 94 */
+ _nts_14, /* 95 */
+ _nts_17, /* 96 */
+ _nts_13, /* 97 */
+ _nts_14, /* 98 */
+ _nts_17, /* 99 */
+ _nts_13, /* 100 */
+ _nts_14, /* 101 */
+ _nts_17, /* 102 */
+ _nts_13, /* 103 */
+ _nts_14, /* 104 */
+ _nts_17, /* 105 */
+ _nts_13, /* 106 */
+ _nts_14, /* 107 */
+ _nts_17, /* 108 */
+ _nts_13, /* 109 */
+ _nts_14, /* 110 */
+ _nts_17, /* 111 */
+ _nts_13, /* 112 */
+ _nts_14, /* 113 */
+ _nts_17, /* 114 */
+ _nts_13, /* 115 */
+ _nts_14, /* 116 */
+ _nts_17, /* 117 */
+ _nts_0, /* 118 */
+ _nts_7, /* 119 */
+};
+
+static char *_templates[] = {
+/* 0 */ 0,
+/* 1 */ "", /* stmt: INDIRB(P) */
+/* 2 */ "", /* stmt: INDIRF(P) */
+/* 3 */ "", /* stmt: INDIRI(P) */
+/* 4 */ "", /* stmt: INDIRU(P) */
+/* 5 */ "", /* stmt: INDIRP(P) */
+/* 6 */ "", /* stmt: CALLF(P) */
+/* 7 */ "", /* stmt: CALLI(P) */
+/* 8 */ "", /* stmt: CALLU(P) */
+/* 9 */ "", /* stmt: CALLP(P) */
+/* 10 */ "", /* stmt: V */
+/* 11 */ "", /* bogus: I */
+/* 12 */ "", /* bogus: U */
+/* 13 */ "", /* bogus: P */
+/* 14 */ "", /* bogus: F */
+/* 15 */ "", /* bogus: B */
+/* 16 */ "", /* bogus: V */
+/* 17 */ "", /* I: bogus */
+/* 18 */ "", /* U: bogus */
+/* 19 */ "", /* P: bogus */
+/* 20 */ "", /* F: bogus */
+/* 21 */ "", /* B: bogus */
+/* 22 */ "", /* V: bogus */
+/* 23 */ "", /* F: CNSTF */
+/* 24 */ "", /* I: CNSTI */
+/* 25 */ "", /* P: CNSTP */
+/* 26 */ "", /* U: CNSTU */
+/* 27 */ "", /* V: ARGB(B) */
+/* 28 */ "", /* V: ARGF(F) */
+/* 29 */ "", /* V: ARGI(I) */
+/* 30 */ "", /* V: ARGU(U) */
+/* 31 */ "", /* V: ARGP(P) */
+/* 32 */ "", /* V: ASGNB(P,B) */
+/* 33 */ "", /* V: ASGNF(P,F) */
+/* 34 */ "", /* V: ASGNI(P,I) */
+/* 35 */ "", /* V: ASGNU(P,U) */
+/* 36 */ "", /* V: ASGNP(P,P) */
+/* 37 */ "", /* B: INDIRB(P) */
+/* 38 */ "", /* F: INDIRF(P) */
+/* 39 */ "", /* I: INDIRI(P) */
+/* 40 */ "", /* U: INDIRU(P) */
+/* 41 */ "", /* P: INDIRP(P) */
+/* 42 */ "", /* I: CVII(I) */
+/* 43 */ "", /* I: CVUI(U) */
+/* 44 */ "", /* I: CVFI(F) */
+/* 45 */ "", /* U: CVIU(I) */
+/* 46 */ "", /* U: CVUU(U) */
+/* 47 */ "", /* U: CVPU(P) */
+/* 48 */ "", /* F: CVIF(I) */
+/* 49 */ "", /* F: CVFF(F) */
+/* 50 */ "", /* P: CVUP(U) */
+/* 51 */ "", /* P: CVPP(P) */
+/* 52 */ "", /* F: NEGF(F) */
+/* 53 */ "", /* I: NEGI(I) */
+/* 54 */ "", /* V: CALLB(P,P) */
+/* 55 */ "", /* F: CALLF(P) */
+/* 56 */ "", /* I: CALLI(P) */
+/* 57 */ "", /* U: CALLU(P) */
+/* 58 */ "", /* P: CALLP(P) */
+/* 59 */ "", /* V: CALLV(P) */
+/* 60 */ "", /* V: RETF(F) */
+/* 61 */ "", /* V: RETI(I) */
+/* 62 */ "", /* V: RETU(U) */
+/* 63 */ "", /* V: RETP(P) */
+/* 64 */ "", /* V: RETV */
+/* 65 */ "", /* P: ADDRGP */
+/* 66 */ "", /* P: ADDRFP */
+/* 67 */ "", /* P: ADDRLP */
+/* 68 */ "", /* F: ADDF(F,F) */
+/* 69 */ "", /* I: ADDI(I,I) */
+/* 70 */ "", /* P: ADDP(P,I) */
+/* 71 */ "", /* P: ADDP(I,P) */
+/* 72 */ "", /* P: ADDP(U,P) */
+/* 73 */ "", /* P: ADDP(P,U) */
+/* 74 */ "", /* U: ADDU(U,U) */
+/* 75 */ "", /* F: SUBF(F,F) */
+/* 76 */ "", /* I: SUBI(I,I) */
+/* 77 */ "", /* P: SUBP(P,I) */
+/* 78 */ "", /* P: SUBP(P,U) */
+/* 79 */ "", /* U: SUBU(U,U) */
+/* 80 */ "", /* I: LSHI(I,I) */
+/* 81 */ "", /* U: LSHU(U,I) */
+/* 82 */ "", /* I: MODI(I,I) */
+/* 83 */ "", /* U: MODU(U,U) */
+/* 84 */ "", /* I: RSHI(I,I) */
+/* 85 */ "", /* U: RSHU(U,I) */
+/* 86 */ "", /* U: BANDU(U,U) */
+/* 87 */ "", /* I: BANDI(I,I) */
+/* 88 */ "", /* U: BCOMU(U) */
+/* 89 */ "", /* I: BCOMI(I) */
+/* 90 */ "", /* I: BORI(I,I) */
+/* 91 */ "", /* U: BORU(U,U) */
+/* 92 */ "", /* U: BXORU(U,U) */
+/* 93 */ "", /* I: BXORI(I,I) */
+/* 94 */ "", /* F: DIVF(F,F) */
+/* 95 */ "", /* I: DIVI(I,I) */
+/* 96 */ "", /* U: DIVU(U,U) */
+/* 97 */ "", /* F: MULF(F,F) */
+/* 98 */ "", /* I: MULI(I,I) */
+/* 99 */ "", /* U: MULU(U,U) */
+/* 100 */ "", /* V: EQF(F,F) */
+/* 101 */ "", /* V: EQI(I,I) */
+/* 102 */ "", /* V: EQU(U,U) */
+/* 103 */ "", /* V: GEF(F,F) */
+/* 104 */ "", /* V: GEI(I,I) */
+/* 105 */ "", /* V: GEU(U,U) */
+/* 106 */ "", /* V: GTF(F,F) */
+/* 107 */ "", /* V: GTI(I,I) */
+/* 108 */ "", /* V: GTU(U,U) */
+/* 109 */ "", /* V: LEF(F,F) */
+/* 110 */ "", /* V: LEI(I,I) */
+/* 111 */ "", /* V: LEU(U,U) */
+/* 112 */ "", /* V: LTF(F,F) */
+/* 113 */ "", /* V: LTI(I,I) */
+/* 114 */ "", /* V: LTU(U,U) */
+/* 115 */ "", /* V: NEF(F,F) */
+/* 116 */ "", /* V: NEI(I,I) */
+/* 117 */ "", /* V: NEU(U,U) */
+/* 118 */ "", /* V: JUMPV(P) */
+/* 119 */ "", /* V: LABELV */
+};
+
+static char _isinstruction[] = {
+/* 0 */ 0,
+/* 1 */ 0, /* */
+/* 2 */ 0, /* */
+/* 3 */ 0, /* */
+/* 4 */ 0, /* */
+/* 5 */ 0, /* */
+/* 6 */ 0, /* */
+/* 7 */ 0, /* */
+/* 8 */ 0, /* */
+/* 9 */ 0, /* */
+/* 10 */ 0, /* */
+/* 11 */ 0, /* */
+/* 12 */ 0, /* */
+/* 13 */ 0, /* */
+/* 14 */ 0, /* */
+/* 15 */ 0, /* */
+/* 16 */ 0, /* */
+/* 17 */ 0, /* */
+/* 18 */ 0, /* */
+/* 19 */ 0, /* */
+/* 20 */ 0, /* */
+/* 21 */ 0, /* */
+/* 22 */ 0, /* */
+/* 23 */ 0, /* */
+/* 24 */ 0, /* */
+/* 25 */ 0, /* */
+/* 26 */ 0, /* */
+/* 27 */ 0, /* */
+/* 28 */ 0, /* */
+/* 29 */ 0, /* */
+/* 30 */ 0, /* */
+/* 31 */ 0, /* */
+/* 32 */ 0, /* */
+/* 33 */ 0, /* */
+/* 34 */ 0, /* */
+/* 35 */ 0, /* */
+/* 36 */ 0, /* */
+/* 37 */ 0, /* */
+/* 38 */ 0, /* */
+/* 39 */ 0, /* */
+/* 40 */ 0, /* */
+/* 41 */ 0, /* */
+/* 42 */ 0, /* */
+/* 43 */ 0, /* */
+/* 44 */ 0, /* */
+/* 45 */ 0, /* */
+/* 46 */ 0, /* */
+/* 47 */ 0, /* */
+/* 48 */ 0, /* */
+/* 49 */ 0, /* */
+/* 50 */ 0, /* */
+/* 51 */ 0, /* */
+/* 52 */ 0, /* */
+/* 53 */ 0, /* */
+/* 54 */ 0, /* */
+/* 55 */ 0, /* */
+/* 56 */ 0, /* */
+/* 57 */ 0, /* */
+/* 58 */ 0, /* */
+/* 59 */ 0, /* */
+/* 60 */ 0, /* */
+/* 61 */ 0, /* */
+/* 62 */ 0, /* */
+/* 63 */ 0, /* */
+/* 64 */ 0, /* */
+/* 65 */ 0, /* */
+/* 66 */ 0, /* */
+/* 67 */ 0, /* */
+/* 68 */ 0, /* */
+/* 69 */ 0, /* */
+/* 70 */ 0, /* */
+/* 71 */ 0, /* */
+/* 72 */ 0, /* */
+/* 73 */ 0, /* */
+/* 74 */ 0, /* */
+/* 75 */ 0, /* */
+/* 76 */ 0, /* */
+/* 77 */ 0, /* */
+/* 78 */ 0, /* */
+/* 79 */ 0, /* */
+/* 80 */ 0, /* */
+/* 81 */ 0, /* */
+/* 82 */ 0, /* */
+/* 83 */ 0, /* */
+/* 84 */ 0, /* */
+/* 85 */ 0, /* */
+/* 86 */ 0, /* */
+/* 87 */ 0, /* */
+/* 88 */ 0, /* */
+/* 89 */ 0, /* */
+/* 90 */ 0, /* */
+/* 91 */ 0, /* */
+/* 92 */ 0, /* */
+/* 93 */ 0, /* */
+/* 94 */ 0, /* */
+/* 95 */ 0, /* */
+/* 96 */ 0, /* */
+/* 97 */ 0, /* */
+/* 98 */ 0, /* */
+/* 99 */ 0, /* */
+/* 100 */ 0, /* */
+/* 101 */ 0, /* */
+/* 102 */ 0, /* */
+/* 103 */ 0, /* */
+/* 104 */ 0, /* */
+/* 105 */ 0, /* */
+/* 106 */ 0, /* */
+/* 107 */ 0, /* */
+/* 108 */ 0, /* */
+/* 109 */ 0, /* */
+/* 110 */ 0, /* */
+/* 111 */ 0, /* */
+/* 112 */ 0, /* */
+/* 113 */ 0, /* */
+/* 114 */ 0, /* */
+/* 115 */ 0, /* */
+/* 116 */ 0, /* */
+/* 117 */ 0, /* */
+/* 118 */ 0, /* */
+/* 119 */ 0, /* */
+};
+
+static char *_string[] = {
+/* 0 */ 0,
+/* 1 */ "stmt: INDIRB(P)",
+/* 2 */ "stmt: INDIRF(P)",
+/* 3 */ "stmt: INDIRI(P)",
+/* 4 */ "stmt: INDIRU(P)",
+/* 5 */ "stmt: INDIRP(P)",
+/* 6 */ "stmt: CALLF(P)",
+/* 7 */ "stmt: CALLI(P)",
+/* 8 */ "stmt: CALLU(P)",
+/* 9 */ "stmt: CALLP(P)",
+/* 10 */ "stmt: V",
+/* 11 */ "bogus: I",
+/* 12 */ "bogus: U",
+/* 13 */ "bogus: P",
+/* 14 */ "bogus: F",
+/* 15 */ "bogus: B",
+/* 16 */ "bogus: V",
+/* 17 */ "I: bogus",
+/* 18 */ "U: bogus",
+/* 19 */ "P: bogus",
+/* 20 */ "F: bogus",
+/* 21 */ "B: bogus",
+/* 22 */ "V: bogus",
+/* 23 */ "F: CNSTF",
+/* 24 */ "I: CNSTI",
+/* 25 */ "P: CNSTP",
+/* 26 */ "U: CNSTU",
+/* 27 */ "V: ARGB(B)",
+/* 28 */ "V: ARGF(F)",
+/* 29 */ "V: ARGI(I)",
+/* 30 */ "V: ARGU(U)",
+/* 31 */ "V: ARGP(P)",
+/* 32 */ "V: ASGNB(P,B)",
+/* 33 */ "V: ASGNF(P,F)",
+/* 34 */ "V: ASGNI(P,I)",
+/* 35 */ "V: ASGNU(P,U)",
+/* 36 */ "V: ASGNP(P,P)",
+/* 37 */ "B: INDIRB(P)",
+/* 38 */ "F: INDIRF(P)",
+/* 39 */ "I: INDIRI(P)",
+/* 40 */ "U: INDIRU(P)",
+/* 41 */ "P: INDIRP(P)",
+/* 42 */ "I: CVII(I)",
+/* 43 */ "I: CVUI(U)",
+/* 44 */ "I: CVFI(F)",
+/* 45 */ "U: CVIU(I)",
+/* 46 */ "U: CVUU(U)",
+/* 47 */ "U: CVPU(P)",
+/* 48 */ "F: CVIF(I)",
+/* 49 */ "F: CVFF(F)",
+/* 50 */ "P: CVUP(U)",
+/* 51 */ "P: CVPP(P)",
+/* 52 */ "F: NEGF(F)",
+/* 53 */ "I: NEGI(I)",
+/* 54 */ "V: CALLB(P,P)",
+/* 55 */ "F: CALLF(P)",
+/* 56 */ "I: CALLI(P)",
+/* 57 */ "U: CALLU(P)",
+/* 58 */ "P: CALLP(P)",
+/* 59 */ "V: CALLV(P)",
+/* 60 */ "V: RETF(F)",
+/* 61 */ "V: RETI(I)",
+/* 62 */ "V: RETU(U)",
+/* 63 */ "V: RETP(P)",
+/* 64 */ "V: RETV",
+/* 65 */ "P: ADDRGP",
+/* 66 */ "P: ADDRFP",
+/* 67 */ "P: ADDRLP",
+/* 68 */ "F: ADDF(F,F)",
+/* 69 */ "I: ADDI(I,I)",
+/* 70 */ "P: ADDP(P,I)",
+/* 71 */ "P: ADDP(I,P)",
+/* 72 */ "P: ADDP(U,P)",
+/* 73 */ "P: ADDP(P,U)",
+/* 74 */ "U: ADDU(U,U)",
+/* 75 */ "F: SUBF(F,F)",
+/* 76 */ "I: SUBI(I,I)",
+/* 77 */ "P: SUBP(P,I)",
+/* 78 */ "P: SUBP(P,U)",
+/* 79 */ "U: SUBU(U,U)",
+/* 80 */ "I: LSHI(I,I)",
+/* 81 */ "U: LSHU(U,I)",
+/* 82 */ "I: MODI(I,I)",
+/* 83 */ "U: MODU(U,U)",
+/* 84 */ "I: RSHI(I,I)",
+/* 85 */ "U: RSHU(U,I)",
+/* 86 */ "U: BANDU(U,U)",
+/* 87 */ "I: BANDI(I,I)",
+/* 88 */ "U: BCOMU(U)",
+/* 89 */ "I: BCOMI(I)",
+/* 90 */ "I: BORI(I,I)",
+/* 91 */ "U: BORU(U,U)",
+/* 92 */ "U: BXORU(U,U)",
+/* 93 */ "I: BXORI(I,I)",
+/* 94 */ "F: DIVF(F,F)",
+/* 95 */ "I: DIVI(I,I)",
+/* 96 */ "U: DIVU(U,U)",
+/* 97 */ "F: MULF(F,F)",
+/* 98 */ "I: MULI(I,I)",
+/* 99 */ "U: MULU(U,U)",
+/* 100 */ "V: EQF(F,F)",
+/* 101 */ "V: EQI(I,I)",
+/* 102 */ "V: EQU(U,U)",
+/* 103 */ "V: GEF(F,F)",
+/* 104 */ "V: GEI(I,I)",
+/* 105 */ "V: GEU(U,U)",
+/* 106 */ "V: GTF(F,F)",
+/* 107 */ "V: GTI(I,I)",
+/* 108 */ "V: GTU(U,U)",
+/* 109 */ "V: LEF(F,F)",
+/* 110 */ "V: LEI(I,I)",
+/* 111 */ "V: LEU(U,U)",
+/* 112 */ "V: LTF(F,F)",
+/* 113 */ "V: LTI(I,I)",
+/* 114 */ "V: LTU(U,U)",
+/* 115 */ "V: NEF(F,F)",
+/* 116 */ "V: NEI(I,I)",
+/* 117 */ "V: NEU(U,U)",
+/* 118 */ "V: JUMPV(P)",
+/* 119 */ "V: LABELV",
+};
+
+static short _decode_stmt[] = {
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+};
+
+static short _decode_P[] = {
+ 0,
+ 19,
+ 25,
+ 41,
+ 50,
+ 51,
+ 58,
+ 65,
+ 66,
+ 67,
+ 70,
+ 71,
+ 72,
+ 73,
+ 77,
+ 78,
+};
+
+static short _decode_V[] = {
+ 0,
+ 22,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 54,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+};
+
+static short _decode_bogus[] = {
+ 0,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+};
+
+static short _decode_I[] = {
+ 0,
+ 17,
+ 24,
+ 39,
+ 42,
+ 43,
+ 44,
+ 53,
+ 56,
+ 69,
+ 76,
+ 80,
+ 82,
+ 84,
+ 87,
+ 89,
+ 90,
+ 93,
+ 95,
+ 98,
+};
+
+static short _decode_U[] = {
+ 0,
+ 18,
+ 26,
+ 40,
+ 45,
+ 46,
+ 47,
+ 57,
+ 74,
+ 79,
+ 81,
+ 83,
+ 85,
+ 86,
+ 88,
+ 91,
+ 92,
+ 96,
+ 99,
+};
+
+static short _decode_F[] = {
+ 0,
+ 20,
+ 23,
+ 38,
+ 48,
+ 49,
+ 52,
+ 55,
+ 68,
+ 75,
+ 94,
+ 97,
+};
+
+static short _decode_B[] = {
+ 0,
+ 21,
+ 37,
+};
+
+static int _rule(void *state, int goalnt) {
+ if (goalnt < 1 || goalnt > 8)
+ fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
+ if (!state)
+ return 0;
+ switch (goalnt) {
+ case _stmt_NT: return _decode_stmt[((struct _state *)state)->rule._stmt];
+ case _P_NT: return _decode_P[((struct _state *)state)->rule._P];
+ case _V_NT: return _decode_V[((struct _state *)state)->rule._V];
+ case _bogus_NT: return _decode_bogus[((struct _state *)state)->rule._bogus];
+ case _I_NT: return _decode_I[((struct _state *)state)->rule._I];
+ case _U_NT: return _decode_U[((struct _state *)state)->rule._U];
+ case _F_NT: return _decode_F[((struct _state *)state)->rule._F];
+ case _B_NT: return _decode_B[((struct _state *)state)->rule._B];
+ default:
+ fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
+ return 0;
+ }
+}
+
+static void _closure_P(NODEPTR_TYPE, int);
+static void _closure_V(NODEPTR_TYPE, int);
+static void _closure_bogus(NODEPTR_TYPE, int);
+static void _closure_I(NODEPTR_TYPE, int);
+static void _closure_U(NODEPTR_TYPE, int);
+static void _closure_F(NODEPTR_TYPE, int);
+static void _closure_B(NODEPTR_TYPE, int);
+
+static void _closure_P(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_bogus_NT]) {
+ p->cost[_bogus_NT] = c + 1;
+ p->rule._bogus = 3;
+ _closure_bogus(a, c + 1);
+ }
+}
+
+static void _closure_V(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_bogus_NT]) {
+ p->cost[_bogus_NT] = c + 1;
+ p->rule._bogus = 6;
+ _closure_bogus(a, c + 1);
+ }
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 10;
+ }
+}
+
+static void _closure_bogus(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 1;
+ p->rule._V = 1;
+ _closure_V(a, c + 1);
+ }
+ if (c + 1 < p->cost[_B_NT]) {
+ p->cost[_B_NT] = c + 1;
+ p->rule._B = 1;
+ _closure_B(a, c + 1);
+ }
+ if (c + 1 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 1;
+ p->rule._F = 1;
+ _closure_F(a, c + 1);
+ }
+ if (c + 1 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 1;
+ p->rule._P = 1;
+ _closure_P(a, c + 1);
+ }
+ if (c + 1 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 1;
+ p->rule._U = 1;
+ _closure_U(a, c + 1);
+ }
+ if (c + 1 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 1;
+ p->rule._I = 1;
+ _closure_I(a, c + 1);
+ }
+}
+
+static void _closure_I(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_bogus_NT]) {
+ p->cost[_bogus_NT] = c + 1;
+ p->rule._bogus = 1;
+ _closure_bogus(a, c + 1);
+ }
+}
+
+static void _closure_U(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_bogus_NT]) {
+ p->cost[_bogus_NT] = c + 1;
+ p->rule._bogus = 2;
+ _closure_bogus(a, c + 1);
+ }
+}
+
+static void _closure_F(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_bogus_NT]) {
+ p->cost[_bogus_NT] = c + 1;
+ p->rule._bogus = 4;
+ _closure_bogus(a, c + 1);
+ }
+}
+
+static void _closure_B(NODEPTR_TYPE a, int c) {
+ struct _state *p = STATE_LABEL(a);
+ if (c + 1 < p->cost[_bogus_NT]) {
+ p->cost[_bogus_NT] = c + 1;
+ p->rule._bogus = 5;
+ _closure_bogus(a, c + 1);
+ }
+}
+
+static void _label(NODEPTR_TYPE a) {
+ int c;
+ struct _state *p;
+
+ if (!a)
+ fatal("_label", "Null tree\n", 0);
+ STATE_LABEL(a) = p = allocate(sizeof *p, FUNC);
+ p->rule._stmt = 0;
+ p->cost[1] =
+ p->cost[2] =
+ p->cost[3] =
+ p->cost[4] =
+ p->cost[5] =
+ p->cost[6] =
+ p->cost[7] =
+ p->cost[8] =
+ 0x7fff;
+ switch (OP_LABEL(a)) {
+ case 17: /* CNSTF */
+ /* F: CNSTF */
+ if (0 + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = 0 + 0;
+ p->rule._F = 2;
+ _closure_F(a, 0 + 0);
+ }
+ break;
+ case 21: /* CNSTI */
+ /* I: CNSTI */
+ if (0 + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = 0 + 0;
+ p->rule._I = 2;
+ _closure_I(a, 0 + 0);
+ }
+ break;
+ case 22: /* CNSTU */
+ /* U: CNSTU */
+ if (0 + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = 0 + 0;
+ p->rule._U = 2;
+ _closure_U(a, 0 + 0);
+ }
+ break;
+ case 23: /* CNSTP */
+ /* P: CNSTP */
+ if (0 + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = 0 + 0;
+ p->rule._P = 2;
+ _closure_P(a, 0 + 0);
+ }
+ break;
+ case 33: /* ARGF */
+ _label(LEFT_CHILD(a));
+ /* V: ARGF(F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 3;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 37: /* ARGI */
+ _label(LEFT_CHILD(a));
+ /* V: ARGI(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 4;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 38: /* ARGU */
+ _label(LEFT_CHILD(a));
+ /* V: ARGU(U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 5;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 39: /* ARGP */
+ _label(LEFT_CHILD(a));
+ /* V: ARGP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 6;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 41: /* ARGB */
+ _label(LEFT_CHILD(a));
+ /* V: ARGB(B) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_B_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 2;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 49: /* ASGNF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: ASGNF(P,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 8;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 53: /* ASGNI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: ASGNI(P,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 9;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 54: /* ASGNU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: ASGNU(P,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 10;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 55: /* ASGNP */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: ASGNP(P,P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 11;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 57: /* ASGNB */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: ASGNB(P,B) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_B_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 7;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 65: /* INDIRF */
+ _label(LEFT_CHILD(a));
+ /* stmt: INDIRF(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 2;
+ }
+ /* F: INDIRF(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 3;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 69: /* INDIRI */
+ _label(LEFT_CHILD(a));
+ /* stmt: INDIRI(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 3;
+ }
+ /* I: INDIRI(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 3;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 70: /* INDIRU */
+ _label(LEFT_CHILD(a));
+ /* stmt: INDIRU(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 4;
+ }
+ /* U: INDIRU(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 3;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 71: /* INDIRP */
+ _label(LEFT_CHILD(a));
+ /* stmt: INDIRP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 5;
+ }
+ /* P: INDIRP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 3;
+ _closure_P(a, c + 0);
+ }
+ break;
+ case 73: /* INDIRB */
+ _label(LEFT_CHILD(a));
+ /* stmt: INDIRB(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 1;
+ }
+ /* B: INDIRB(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_B_NT]) {
+ p->cost[_B_NT] = c + 0;
+ p->rule._B = 2;
+ _closure_B(a, c + 0);
+ }
+ break;
+ case 113: /* CVFF */
+ _label(LEFT_CHILD(a));
+ /* F: CVFF(F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 5;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 117: /* CVFI */
+ _label(LEFT_CHILD(a));
+ /* I: CVFI(F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 6;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 129: /* CVIF */
+ _label(LEFT_CHILD(a));
+ /* F: CVIF(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 4;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 133: /* CVII */
+ _label(LEFT_CHILD(a));
+ /* I: CVII(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 4;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 134: /* CVIU */
+ _label(LEFT_CHILD(a));
+ /* U: CVIU(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 4;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 150: /* CVPU */
+ _label(LEFT_CHILD(a));
+ /* U: CVPU(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 6;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 151: /* CVPP */
+ _label(LEFT_CHILD(a));
+ /* P: CVPP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 5;
+ _closure_P(a, c + 0);
+ }
+ break;
+ case 181: /* CVUI */
+ _label(LEFT_CHILD(a));
+ /* I: CVUI(U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 5;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 182: /* CVUU */
+ _label(LEFT_CHILD(a));
+ /* U: CVUU(U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 5;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 183: /* CVUP */
+ _label(LEFT_CHILD(a));
+ /* P: CVUP(U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 4;
+ _closure_P(a, c + 0);
+ }
+ break;
+ case 193: /* NEGF */
+ _label(LEFT_CHILD(a));
+ /* F: NEGF(F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 6;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 197: /* NEGI */
+ _label(LEFT_CHILD(a));
+ /* I: NEGI(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 7;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 209: /* CALLF */
+ _label(LEFT_CHILD(a));
+ /* stmt: CALLF(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 6;
+ }
+ /* F: CALLF(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 7;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 213: /* CALLI */
+ _label(LEFT_CHILD(a));
+ /* stmt: CALLI(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 7;
+ }
+ /* I: CALLI(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 8;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 214: /* CALLU */
+ _label(LEFT_CHILD(a));
+ /* stmt: CALLU(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 8;
+ }
+ /* U: CALLU(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 7;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 215: /* CALLP */
+ _label(LEFT_CHILD(a));
+ /* stmt: CALLP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_stmt_NT]) {
+ p->cost[_stmt_NT] = c + 0;
+ p->rule._stmt = 9;
+ }
+ /* P: CALLP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 6;
+ _closure_P(a, c + 0);
+ }
+ break;
+ case 216: /* CALLV */
+ _label(LEFT_CHILD(a));
+ /* V: CALLV(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 13;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 217: /* CALLB */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: CALLB(P,P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 12;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 241: /* RETF */
+ _label(LEFT_CHILD(a));
+ /* V: RETF(F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 14;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 245: /* RETI */
+ _label(LEFT_CHILD(a));
+ /* V: RETI(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 15;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 246: /* RETU */
+ _label(LEFT_CHILD(a));
+ /* V: RETU(U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 16;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 247: /* RETP */
+ _label(LEFT_CHILD(a));
+ /* V: RETP(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 17;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 248: /* RETV */
+ /* V: RETV */
+ if (0 + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = 0 + 0;
+ p->rule._V = 18;
+ _closure_V(a, 0 + 0);
+ }
+ break;
+ case 263: /* ADDRGP */
+ /* P: ADDRGP */
+ if (0 + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = 0 + 0;
+ p->rule._P = 7;
+ _closure_P(a, 0 + 0);
+ }
+ break;
+ case 279: /* ADDRFP */
+ /* P: ADDRFP */
+ if (0 + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = 0 + 0;
+ p->rule._P = 8;
+ _closure_P(a, 0 + 0);
+ }
+ break;
+ case 295: /* ADDRLP */
+ /* P: ADDRLP */
+ if (0 + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = 0 + 0;
+ p->rule._P = 9;
+ _closure_P(a, 0 + 0);
+ }
+ break;
+ case 305: /* ADDF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* F: ADDF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 8;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 309: /* ADDI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: ADDI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 9;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 310: /* ADDU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: ADDU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 8;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 311: /* ADDP */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* P: ADDP(P,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 10;
+ _closure_P(a, c + 0);
+ }
+ /* P: ADDP(I,P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 11;
+ _closure_P(a, c + 0);
+ }
+ /* P: ADDP(U,P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 12;
+ _closure_P(a, c + 0);
+ }
+ /* P: ADDP(P,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 13;
+ _closure_P(a, c + 0);
+ }
+ break;
+ case 321: /* SUBF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* F: SUBF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 9;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 325: /* SUBI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: SUBI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 10;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 326: /* SUBU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: SUBU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 9;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 327: /* SUBP */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* P: SUBP(P,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 14;
+ _closure_P(a, c + 0);
+ }
+ /* P: SUBP(P,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_P_NT]) {
+ p->cost[_P_NT] = c + 0;
+ p->rule._P = 15;
+ _closure_P(a, c + 0);
+ }
+ break;
+ case 341: /* LSHI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: LSHI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 11;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 342: /* LSHU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: LSHU(U,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 10;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 357: /* MODI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: MODI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 12;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 358: /* MODU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: MODU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 11;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 373: /* RSHI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: RSHI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 13;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 374: /* RSHU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: RSHU(U,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 12;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 389: /* BANDI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: BANDI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 14;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 390: /* BANDU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: BANDU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 13;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 405: /* BCOMI */
+ _label(LEFT_CHILD(a));
+ /* I: BCOMI(I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 15;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 406: /* BCOMU */
+ _label(LEFT_CHILD(a));
+ /* U: BCOMU(U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 14;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 421: /* BORI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: BORI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 16;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 422: /* BORU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: BORU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 15;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 437: /* BXORI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: BXORI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 17;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 438: /* BXORU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: BXORU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 16;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 449: /* DIVF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* F: DIVF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 10;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 453: /* DIVI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: DIVI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 18;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 454: /* DIVU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: DIVU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 17;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 465: /* MULF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* F: MULF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_F_NT]) {
+ p->cost[_F_NT] = c + 0;
+ p->rule._F = 11;
+ _closure_F(a, c + 0);
+ }
+ break;
+ case 469: /* MULI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* I: MULI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_I_NT]) {
+ p->cost[_I_NT] = c + 0;
+ p->rule._I = 19;
+ _closure_I(a, c + 0);
+ }
+ break;
+ case 470: /* MULU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* U: MULU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_U_NT]) {
+ p->cost[_U_NT] = c + 0;
+ p->rule._U = 18;
+ _closure_U(a, c + 0);
+ }
+ break;
+ case 481: /* EQF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: EQF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 19;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 485: /* EQI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: EQI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 20;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 486: /* EQU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: EQU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 21;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 497: /* GEF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: GEF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 22;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 501: /* GEI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: GEI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 23;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 502: /* GEU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: GEU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 24;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 513: /* GTF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: GTF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 25;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 517: /* GTI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: GTI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 26;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 518: /* GTU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: GTU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 27;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 529: /* LEF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: LEF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 28;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 533: /* LEI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: LEI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 29;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 534: /* LEU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: LEU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 30;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 545: /* LTF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: LTF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 31;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 549: /* LTI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: LTI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 32;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 550: /* LTU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: LTU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 33;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 561: /* NEF */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: NEF(F,F) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 34;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 565: /* NEI */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: NEI(I,I) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 35;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 566: /* NEU */
+ _label(LEFT_CHILD(a));
+ _label(RIGHT_CHILD(a));
+ /* V: NEU(U,U) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 36;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 584: /* JUMPV */
+ _label(LEFT_CHILD(a));
+ /* V: JUMPV(P) */
+ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
+ if (c + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = c + 0;
+ p->rule._V = 37;
+ _closure_V(a, c + 0);
+ }
+ break;
+ case 600: /* LABELV */
+ /* V: LABELV */
+ if (0 + 0 < p->cost[_V_NT]) {
+ p->cost[_V_NT] = 0 + 0;
+ p->rule._V = 38;
+ _closure_V(a, 0 + 0);
+ }
+ break;
+ default:
+ fatal("_label", "Bad terminal %d\n", OP_LABEL(a));
+ }
+}
+
+static void _kids(NODEPTR_TYPE p, int eruleno, NODEPTR_TYPE kids[]) {
+ if (!p)
+ fatal("_kids", "Null tree\n", 0);
+ if (!kids)
+ fatal("_kids", "Null kids\n", 0);
+ switch (eruleno) {
+ case 118: /* V: JUMPV(P) */
+ case 89: /* I: BCOMI(I) */
+ case 88: /* U: BCOMU(U) */
+ case 63: /* V: RETP(P) */
+ case 62: /* V: RETU(U) */
+ case 61: /* V: RETI(I) */
+ case 60: /* V: RETF(F) */
+ case 59: /* V: CALLV(P) */
+ case 58: /* P: CALLP(P) */
+ case 57: /* U: CALLU(P) */
+ case 56: /* I: CALLI(P) */
+ case 55: /* F: CALLF(P) */
+ case 53: /* I: NEGI(I) */
+ case 52: /* F: NEGF(F) */
+ case 51: /* P: CVPP(P) */
+ case 50: /* P: CVUP(U) */
+ case 49: /* F: CVFF(F) */
+ case 48: /* F: CVIF(I) */
+ case 47: /* U: CVPU(P) */
+ case 46: /* U: CVUU(U) */
+ case 45: /* U: CVIU(I) */
+ case 44: /* I: CVFI(F) */
+ case 43: /* I: CVUI(U) */
+ case 42: /* I: CVII(I) */
+ case 41: /* P: INDIRP(P) */
+ case 40: /* U: INDIRU(P) */
+ case 39: /* I: INDIRI(P) */
+ case 38: /* F: INDIRF(P) */
+ case 37: /* B: INDIRB(P) */
+ case 31: /* V: ARGP(P) */
+ case 30: /* V: ARGU(U) */
+ case 29: /* V: ARGI(I) */
+ case 28: /* V: ARGF(F) */
+ case 27: /* V: ARGB(B) */
+ case 9: /* stmt: CALLP(P) */
+ case 8: /* stmt: CALLU(P) */
+ case 7: /* stmt: CALLI(P) */
+ case 6: /* stmt: CALLF(P) */
+ case 5: /* stmt: INDIRP(P) */
+ case 4: /* stmt: INDIRU(P) */
+ case 3: /* stmt: INDIRI(P) */
+ case 2: /* stmt: INDIRF(P) */
+ case 1: /* stmt: INDIRB(P) */
+ kids[0] = LEFT_CHILD(p);
+ break;
+ case 22: /* V: bogus */
+ case 21: /* B: bogus */
+ case 20: /* F: bogus */
+ case 19: /* P: bogus */
+ case 18: /* U: bogus */
+ case 17: /* I: bogus */
+ case 16: /* bogus: V */
+ case 15: /* bogus: B */
+ case 14: /* bogus: F */
+ case 13: /* bogus: P */
+ case 12: /* bogus: U */
+ case 11: /* bogus: I */
+ case 10: /* stmt: V */
+ kids[0] = p;
+ break;
+ case 119: /* V: LABELV */
+ case 67: /* P: ADDRLP */
+ case 66: /* P: ADDRFP */
+ case 65: /* P: ADDRGP */
+ case 64: /* V: RETV */
+ case 26: /* U: CNSTU */
+ case 25: /* P: CNSTP */
+ case 24: /* I: CNSTI */
+ case 23: /* F: CNSTF */
+ break;
+ case 117: /* V: NEU(U,U) */
+ case 116: /* V: NEI(I,I) */
+ case 115: /* V: NEF(F,F) */
+ case 114: /* V: LTU(U,U) */
+ case 113: /* V: LTI(I,I) */
+ case 112: /* V: LTF(F,F) */
+ case 111: /* V: LEU(U,U) */
+ case 110: /* V: LEI(I,I) */
+ case 109: /* V: LEF(F,F) */
+ case 108: /* V: GTU(U,U) */
+ case 107: /* V: GTI(I,I) */
+ case 106: /* V: GTF(F,F) */
+ case 105: /* V: GEU(U,U) */
+ case 104: /* V: GEI(I,I) */
+ case 103: /* V: GEF(F,F) */
+ case 102: /* V: EQU(U,U) */
+ case 101: /* V: EQI(I,I) */
+ case 100: /* V: EQF(F,F) */
+ case 99: /* U: MULU(U,U) */
+ case 98: /* I: MULI(I,I) */
+ case 97: /* F: MULF(F,F) */
+ case 96: /* U: DIVU(U,U) */
+ case 95: /* I: DIVI(I,I) */
+ case 94: /* F: DIVF(F,F) */
+ case 93: /* I: BXORI(I,I) */
+ case 92: /* U: BXORU(U,U) */
+ case 91: /* U: BORU(U,U) */
+ case 90: /* I: BORI(I,I) */
+ case 87: /* I: BANDI(I,I) */
+ case 86: /* U: BANDU(U,U) */
+ case 85: /* U: RSHU(U,I) */
+ case 84: /* I: RSHI(I,I) */
+ case 83: /* U: MODU(U,U) */
+ case 82: /* I: MODI(I,I) */
+ case 81: /* U: LSHU(U,I) */
+ case 80: /* I: LSHI(I,I) */
+ case 79: /* U: SUBU(U,U) */
+ case 78: /* P: SUBP(P,U) */
+ case 77: /* P: SUBP(P,I) */
+ case 76: /* I: SUBI(I,I) */
+ case 75: /* F: SUBF(F,F) */
+ case 74: /* U: ADDU(U,U) */
+ case 73: /* P: ADDP(P,U) */
+ case 72: /* P: ADDP(U,P) */
+ case 71: /* P: ADDP(I,P) */
+ case 70: /* P: ADDP(P,I) */
+ case 69: /* I: ADDI(I,I) */
+ case 68: /* F: ADDF(F,F) */
+ case 54: /* V: CALLB(P,P) */
+ case 36: /* V: ASGNP(P,P) */
+ case 35: /* V: ASGNU(P,U) */
+ case 34: /* V: ASGNI(P,I) */
+ case 33: /* V: ASGNF(P,F) */
+ case 32: /* V: ASGNB(P,B) */
+ kids[0] = LEFT_CHILD(p);
+ kids[1] = RIGHT_CHILD(p);
+ break;
+ default:
+ fatal("_kids", "Bad rule number %d\n", eruleno);
+ }
+}
+
+
+static void reduce(NODEPTR_TYPE p, int goalnt) {
+ int i, sz = opsize(p->op), rulenumber = _rule(p->x.state, goalnt);
+ short *nts = _nts[rulenumber];
+ NODEPTR_TYPE kids[10];
+
+ assert(rulenumber);
+ _kids(p, rulenumber, kids);
+ for (i = 0; nts[i]; i++)
+ reduce(kids[i], nts[i]);
+ switch (optype(p->op)) {
+#define xx(ty) if (sz == ty->size) return
+ case I:
+ case U:
+ xx(chartype);
+ xx(shorttype);
+ xx(inttype);
+ xx(longtype);
+ xx(longlong);
+ break;
+ case F:
+ xx(floattype);
+ xx(doubletype);
+ xx(longdouble);
+ break;
+ case P:
+ xx(voidptype);
+ xx(funcptype);
+ break;
+ case V:
+ case B: if (sz == 0) return;
+#undef xx
+ }
+ printdag(p, 2);
+ assert(0);
+}
+
+void check(Node p) {
+ struct _state { short cost[1]; };
+
+ _label(p);
+ if (((struct _state *)p->x.state)->cost[1] > 0) {
+ printdag(p, 2);
+ assert(0);
+ }
+ reduce(p, 1);
+}
|