diff --git a/src/cmd/5a/a.y b/src/cmd/5a/a.y index 89e8e73b25..330b844089 100644 --- a/src/cmd/5a/a.y +++ b/src/cmd/5a/a.y @@ -62,7 +62,7 @@ %token LNAME LLAB LVAR %type con expr oexpr pointer offset sreg spreg creg %type rcon cond reglist -%type gen rel reg regreg freg shift fcon frcon +%type gen rel reg regreg freg shift fcon frcon textsize %type imm ximm name oreg ireg nireg ioreg imsr %% prog: @@ -212,26 +212,15 @@ inst: /* * TEXT */ -| LTYPEB name ',' imm +| LTYPEB name ',' '$' textsize { settext($2.sym); - $4.type = TYPE_TEXTSIZE; - $4.u.argsize = ArgsSizeUnknown; - outcode($1, Always, &$2, 0, &$4); + outcode($1, Always, &$2, 0, &$5); } -| LTYPEB name ',' con ',' imm +| LTYPEB name ',' con ',' '$' textsize { settext($2.sym); - $6.type = TYPE_TEXTSIZE; - $6.u.argsize = ArgsSizeUnknown; - outcode($1, Always, &$2, $4, &$6); - } -| LTYPEB name ',' con ',' imm '-' con - { - settext($2.sym); - $6.type = TYPE_TEXTSIZE; - $6.u.argsize = $8; - outcode($1, Always, &$2, $4, &$6); + outcode($1, Always, &$2, $4, &$7); } /* * GLOBL @@ -393,6 +382,32 @@ rel: $$.offset = $1->value + $2; } +textsize: + LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = ArgsSizeUnknown; + } +| '-' LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = ArgsSizeUnknown; + } +| LCONST '-' LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = $3; + } +| '-' LCONST '-' LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = $4; + } + ximm: '$' con { $$ = nullgen; diff --git a/src/cmd/5a/y.tab.c b/src/cmd/5a/y.tab.c index c9db3249b9..fe231af860 100644 --- a/src/cmd/5a/y.tab.c +++ b/src/cmd/5a/y.tab.c @@ -438,16 +438,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 636 +#define YYLAST 655 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 72 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 34 +#define YYNNTS 35 /* YYNRULES -- Number of rules. */ -#define YYNRULES 131 +#define YYNRULES 134 /* YYNRULES -- Number of states. */ -#define YYNSTATES 337 +#define YYNSTATES 344 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -462,8 +462,8 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 70, 12, 5, 2, - 68, 69, 10, 8, 65, 9, 2, 11, 2, 2, + 2, 2, 2, 2, 2, 2, 68, 12, 5, 2, + 69, 70, 10, 8, 65, 9, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 62, 64, 6, 63, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -500,75 +500,75 @@ static const yytype_uint16 yyprhs[] = 0, 0, 3, 4, 5, 9, 10, 15, 20, 25, 27, 30, 33, 41, 48, 54, 60, 66, 71, 76, 80, 84, 89, 96, 104, 112, 120, 127, 134, 138, - 143, 150, 159, 164, 171, 178, 183, 187, 193, 199, - 207, 214, 227, 235, 245, 248, 253, 258, 261, 262, - 265, 268, 269, 272, 277, 280, 283, 286, 289, 291, - 294, 298, 300, 304, 308, 310, 312, 314, 319, 321, - 323, 325, 327, 329, 331, 333, 337, 339, 344, 346, - 351, 353, 355, 357, 359, 362, 364, 370, 375, 380, - 385, 390, 392, 394, 396, 398, 403, 405, 407, 409, - 414, 416, 418, 420, 425, 430, 436, 444, 445, 448, - 451, 453, 455, 457, 459, 461, 464, 467, 470, 474, - 475, 478, 480, 484, 488, 492, 496, 500, 505, 510, - 514, 518 + 144, 152, 157, 164, 171, 176, 180, 186, 192, 200, + 207, 220, 228, 238, 241, 246, 251, 254, 255, 258, + 261, 262, 265, 270, 273, 275, 278, 282, 287, 290, + 293, 296, 298, 301, 305, 307, 311, 315, 317, 319, + 321, 326, 328, 330, 332, 334, 336, 338, 340, 344, + 346, 351, 353, 358, 360, 362, 364, 366, 369, 371, + 377, 382, 387, 392, 397, 399, 401, 403, 405, 410, + 412, 414, 416, 421, 423, 425, 427, 432, 437, 443, + 451, 452, 455, 458, 460, 462, 464, 466, 468, 471, + 474, 477, 481, 482, 485, 487, 491, 495, 499, 503, + 507, 512, 517, 521, 525 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 73, 0, -1, -1, -1, 73, 74, 75, -1, -1, - 59, 62, 76, 75, -1, 59, 63, 105, 64, -1, - 61, 63, 105, 64, -1, 64, -1, 77, 64, -1, - 1, 64, -1, 13, 78, 89, 65, 96, 65, 91, - -1, 13, 78, 89, 65, 96, 65, -1, 13, 78, - 89, 65, 91, -1, 14, 78, 89, 65, 91, -1, - 15, 78, 84, 65, 84, -1, 16, 78, 79, 80, - -1, 16, 78, 79, 85, -1, 36, 79, 86, -1, - 17, 79, 80, -1, 18, 78, 79, 84, -1, 19, - 78, 89, 65, 96, 79, -1, 20, 78, 87, 65, - 66, 83, 67, -1, 20, 78, 66, 83, 67, 65, - 87, -1, 21, 78, 91, 65, 86, 65, 91, -1, - 21, 78, 91, 65, 86, 79, -1, 21, 78, 79, - 86, 65, 91, -1, 22, 78, 79, -1, 23, 100, - 65, 90, -1, 23, 100, 65, 103, 65, 90, -1, - 23, 100, 65, 103, 65, 90, 9, 103, -1, 24, - 100, 65, 90, -1, 24, 100, 65, 103, 65, 90, - -1, 25, 100, 11, 103, 65, 81, -1, 26, 78, - 91, 79, -1, 29, 79, 81, -1, 30, 78, 99, - 65, 99, -1, 32, 78, 98, 65, 99, -1, 32, - 78, 98, 65, 49, 65, 99, -1, 33, 78, 99, - 65, 99, 79, -1, 31, 78, 103, 65, 105, 65, - 96, 65, 97, 65, 97, 104, -1, 34, 78, 91, - 65, 91, 65, 92, -1, 35, 78, 91, 65, 91, - 65, 91, 65, 96, -1, 37, 88, -1, 44, 84, - 65, 84, -1, 45, 84, 65, 84, -1, 27, 79, - -1, -1, 78, 54, -1, 78, 55, -1, -1, 65, - 79, -1, 103, 68, 42, 69, -1, 59, 101, -1, - 70, 103, -1, 70, 88, -1, 70, 58, -1, 82, - -1, 70, 57, -1, 70, 9, 57, -1, 96, -1, - 96, 9, 96, -1, 96, 79, 83, -1, 91, -1, - 81, -1, 93, -1, 93, 68, 96, 69, -1, 52, - -1, 53, -1, 103, -1, 88, -1, 99, -1, 86, - -1, 100, -1, 68, 96, 69, -1, 86, -1, 103, - 68, 95, 69, -1, 100, -1, 100, 68, 95, 69, - -1, 87, -1, 91, -1, 90, -1, 93, -1, 70, - 103, -1, 96, -1, 68, 96, 65, 96, 69, -1, - 96, 6, 6, 94, -1, 96, 7, 7, 94, -1, - 96, 9, 7, 94, -1, 96, 56, 7, 94, -1, - 96, -1, 103, -1, 47, -1, 42, -1, 46, 68, - 105, 69, -1, 95, -1, 39, -1, 51, -1, 50, - 68, 105, 69, -1, 99, -1, 82, -1, 49, -1, - 48, 68, 103, 69, -1, 103, 68, 102, 69, -1, - 59, 101, 68, 102, 69, -1, 59, 6, 7, 101, - 68, 40, 69, -1, -1, 8, 103, -1, 9, 103, - -1, 40, -1, 39, -1, 41, -1, 38, -1, 61, - -1, 9, 103, -1, 8, 103, -1, 71, 103, -1, - 68, 105, 69, -1, -1, 65, 105, -1, 103, -1, - 105, 8, 105, -1, 105, 9, 105, -1, 105, 10, - 105, -1, 105, 11, 105, -1, 105, 12, 105, -1, - 105, 6, 6, 105, -1, 105, 7, 7, 105, -1, - 105, 5, 105, -1, 105, 4, 105, -1, 105, 3, - 105, -1 + 59, 62, 76, 75, -1, 59, 63, 106, 64, -1, + 61, 63, 106, 64, -1, 64, -1, 77, 64, -1, + 1, 64, -1, 13, 78, 90, 65, 97, 65, 92, + -1, 13, 78, 90, 65, 97, 65, -1, 13, 78, + 90, 65, 92, -1, 14, 78, 90, 65, 92, -1, + 15, 78, 85, 65, 85, -1, 16, 78, 79, 80, + -1, 16, 78, 79, 86, -1, 36, 79, 87, -1, + 17, 79, 80, -1, 18, 78, 79, 85, -1, 19, + 78, 90, 65, 97, 79, -1, 20, 78, 88, 65, + 66, 84, 67, -1, 20, 78, 66, 84, 67, 65, + 88, -1, 21, 78, 92, 65, 87, 65, 92, -1, + 21, 78, 92, 65, 87, 79, -1, 21, 78, 79, + 87, 65, 92, -1, 22, 78, 79, -1, 23, 101, + 65, 68, 81, -1, 23, 101, 65, 104, 65, 68, + 81, -1, 24, 101, 65, 91, -1, 24, 101, 65, + 104, 65, 91, -1, 25, 101, 11, 104, 65, 82, + -1, 26, 78, 92, 79, -1, 29, 79, 82, -1, + 30, 78, 100, 65, 100, -1, 32, 78, 99, 65, + 100, -1, 32, 78, 99, 65, 49, 65, 100, -1, + 33, 78, 100, 65, 100, 79, -1, 31, 78, 104, + 65, 106, 65, 97, 65, 98, 65, 98, 105, -1, + 34, 78, 92, 65, 92, 65, 93, -1, 35, 78, + 92, 65, 92, 65, 92, 65, 97, -1, 37, 89, + -1, 44, 85, 65, 85, -1, 45, 85, 65, 85, + -1, 27, 79, -1, -1, 78, 54, -1, 78, 55, + -1, -1, 65, 79, -1, 104, 69, 42, 70, -1, + 59, 102, -1, 38, -1, 9, 38, -1, 38, 9, + 38, -1, 9, 38, 9, 38, -1, 68, 104, -1, + 68, 89, -1, 68, 58, -1, 83, -1, 68, 57, + -1, 68, 9, 57, -1, 97, -1, 97, 9, 97, + -1, 97, 79, 84, -1, 92, -1, 82, -1, 94, + -1, 94, 69, 97, 70, -1, 52, -1, 53, -1, + 104, -1, 89, -1, 100, -1, 87, -1, 101, -1, + 69, 97, 70, -1, 87, -1, 104, 69, 96, 70, + -1, 101, -1, 101, 69, 96, 70, -1, 88, -1, + 92, -1, 91, -1, 94, -1, 68, 104, -1, 97, + -1, 69, 97, 65, 97, 70, -1, 97, 6, 6, + 95, -1, 97, 7, 7, 95, -1, 97, 9, 7, + 95, -1, 97, 56, 7, 95, -1, 97, -1, 104, + -1, 47, -1, 42, -1, 46, 69, 106, 70, -1, + 96, -1, 39, -1, 51, -1, 50, 69, 106, 70, + -1, 100, -1, 83, -1, 49, -1, 48, 69, 104, + 70, -1, 104, 69, 103, 70, -1, 59, 102, 69, + 103, 70, -1, 59, 6, 7, 102, 69, 40, 70, + -1, -1, 8, 104, -1, 9, 104, -1, 40, -1, + 39, -1, 41, -1, 38, -1, 61, -1, 9, 104, + -1, 8, 104, -1, 71, 104, -1, 69, 106, 70, + -1, -1, 65, 106, -1, 104, -1, 106, 8, 106, + -1, 106, 9, 106, -1, 106, 10, 106, -1, 106, + 11, 106, -1, 106, 12, 106, -1, 106, 6, 6, + 106, -1, 106, 7, 7, 106, -1, 106, 5, 106, + -1, 106, 4, 106, -1, 106, 3, 106, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -577,17 +577,17 @@ static const yytype_uint16 yyrline[] = 0, 68, 68, 70, 69, 77, 76, 85, 90, 96, 97, 98, 104, 108, 112, 119, 126, 133, 137, 144, 151, 158, 165, 172, 181, 193, 197, 201, 208, 215, - 222, 229, 239, 244, 252, 259, 266, 273, 277, 281, - 285, 292, 314, 322, 331, 338, 347, 358, 364, 367, - 371, 376, 377, 380, 386, 396, 402, 407, 413, 416, - 422, 430, 434, 443, 449, 450, 451, 452, 457, 463, - 469, 475, 476, 479, 480, 488, 497, 498, 507, 508, - 514, 517, 518, 519, 521, 529, 537, 546, 552, 558, - 564, 572, 578, 586, 587, 591, 599, 600, 606, 607, - 615, 616, 619, 625, 633, 641, 649, 659, 662, 666, - 672, 673, 674, 677, 678, 682, 686, 690, 694, 700, - 703, 709, 710, 714, 718, 722, 726, 730, 734, 738, - 742, 746 + 220, 228, 233, 241, 248, 255, 262, 266, 270, 274, + 281, 303, 311, 320, 327, 336, 347, 353, 356, 360, + 365, 366, 369, 375, 386, 392, 398, 404, 411, 417, + 422, 428, 431, 437, 445, 449, 458, 464, 465, 466, + 467, 472, 478, 484, 490, 491, 494, 495, 503, 512, + 513, 522, 523, 529, 532, 533, 534, 536, 544, 552, + 561, 567, 573, 579, 587, 593, 601, 602, 606, 614, + 615, 621, 622, 630, 631, 634, 640, 648, 656, 664, + 674, 677, 681, 687, 688, 689, 692, 693, 697, 701, + 705, 709, 715, 718, 724, 725, 729, 733, 737, 741, + 745, 749, 753, 757, 761 }; #endif @@ -604,10 +604,10 @@ static const char *const yytname[] = "LCONST", "LSP", "LSB", "LFP", "LPC", "LTYPEX", "LTYPEPC", "LTYPEF", "LR", "LREG", "LF", "LFREG", "LC", "LCREG", "LPSR", "LFCR", "LCOND", "LS", "LAT", "LFCONST", "LSCONST", "LNAME", "LLAB", "LVAR", "':'", "'='", - "';'", "','", "'['", "']'", "'('", "')'", "'$'", "'~'", "$accept", - "prog", "@1", "line", "@2", "inst", "cond", "comma", "rel", "ximm", - "fcon", "reglist", "gen", "nireg", "ireg", "ioreg", "oreg", "imsr", - "imm", "reg", "regreg", "shift", "rcon", "sreg", "spreg", "creg", + "';'", "','", "'['", "']'", "'$'", "'('", "')'", "'~'", "$accept", + "prog", "@1", "line", "@2", "inst", "cond", "comma", "rel", "textsize", + "ximm", "fcon", "reglist", "gen", "nireg", "ireg", "ioreg", "oreg", + "imsr", "imm", "reg", "regreg", "shift", "rcon", "sreg", "spreg", "creg", "frcon", "freg", "name", "offset", "pointer", "con", "oexpr", "expr", 0 }; #endif @@ -623,8 +623,8 @@ static const yytype_uint16 yytoknum[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 58, 61, 59, 44, 91, 93, 40, 41, - 36, 126 + 305, 306, 58, 61, 59, 44, 91, 93, 36, 40, + 41, 126 }; # endif @@ -635,16 +635,16 @@ static const yytype_uint8 yyr1[] = 75, 75, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, - 78, 79, 79, 80, 80, 81, 81, 81, 81, 82, - 82, 83, 83, 83, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 85, 85, 86, 87, 87, 88, 88, - 88, 89, 89, 89, 90, 91, 92, 93, 93, 93, - 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, - 98, 98, 99, 99, 100, 100, 100, 101, 101, 101, - 102, 102, 102, 103, 103, 103, 103, 103, 103, 104, - 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105 + 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, + 79, 79, 80, 80, 81, 81, 81, 81, 82, 82, + 82, 82, 83, 83, 84, 84, 84, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 86, 86, 87, 88, + 88, 89, 89, 89, 90, 90, 90, 91, 92, 93, + 94, 94, 94, 94, 95, 95, 96, 96, 96, 97, + 97, 98, 98, 99, 99, 100, 100, 101, 101, 101, + 102, 102, 102, 103, 103, 103, 104, 104, 104, 104, + 104, 104, 105, 105, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -652,18 +652,18 @@ static const yytype_uint8 yyr2[] = { 0, 2, 0, 0, 3, 0, 4, 4, 4, 1, 2, 2, 7, 6, 5, 5, 5, 4, 4, 3, - 3, 4, 6, 7, 7, 7, 6, 6, 3, 4, - 6, 8, 4, 6, 6, 4, 3, 5, 5, 7, - 6, 12, 7, 9, 2, 4, 4, 2, 0, 2, - 2, 0, 2, 4, 2, 2, 2, 2, 1, 2, - 3, 1, 3, 3, 1, 1, 1, 4, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 4, - 1, 1, 1, 1, 2, 1, 5, 4, 4, 4, - 4, 1, 1, 1, 1, 4, 1, 1, 1, 4, - 1, 1, 1, 4, 4, 5, 7, 0, 2, 2, - 1, 1, 1, 1, 1, 2, 2, 2, 3, 0, - 2, 1, 3, 3, 3, 3, 3, 4, 4, 3, - 3, 3 + 3, 4, 6, 7, 7, 7, 6, 6, 3, 5, + 7, 4, 6, 6, 4, 3, 5, 5, 7, 6, + 12, 7, 9, 2, 4, 4, 2, 0, 2, 2, + 0, 2, 4, 2, 1, 2, 3, 4, 2, 2, + 2, 1, 2, 3, 1, 3, 3, 1, 1, 1, + 4, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 4, 1, 4, 1, 1, 1, 1, 2, 1, 5, + 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, + 1, 1, 4, 1, 1, 1, 4, 4, 5, 7, + 0, 2, 2, 1, 1, 1, 1, 1, 2, 2, + 2, 3, 0, 2, 1, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -671,240 +671,246 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 3, 1, 0, 0, 48, 48, 48, 48, 51, - 48, 48, 48, 48, 48, 0, 0, 0, 48, 51, - 51, 48, 48, 48, 48, 48, 48, 51, 0, 0, + 2, 3, 1, 0, 0, 47, 47, 47, 47, 50, + 47, 47, 47, 47, 47, 0, 0, 0, 47, 50, + 50, 47, 47, 47, 47, 47, 47, 50, 0, 0, 0, 0, 0, 9, 4, 0, 11, 0, 0, 0, - 51, 51, 0, 51, 0, 0, 51, 51, 0, 0, - 113, 107, 114, 0, 0, 0, 0, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 80, 44, 78, 0, 97, 94, 0, 93, 0, - 102, 68, 69, 0, 65, 58, 0, 71, 64, 66, - 96, 85, 72, 70, 0, 5, 0, 0, 10, 49, - 50, 0, 0, 82, 81, 83, 0, 0, 0, 52, - 107, 20, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 28, 116, 115, 0, 0, 0, 0, 121, 0, - 117, 0, 0, 0, 0, 51, 36, 0, 0, 0, - 101, 0, 100, 0, 0, 0, 0, 19, 0, 0, - 0, 0, 0, 0, 59, 57, 56, 55, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 0, 0, 107, 17, 18, 73, 74, 0, 54, 0, - 21, 0, 0, 51, 0, 0, 0, 0, 107, 108, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 29, 0, 111, 110, 112, 0, 32, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 75, 0, 0, 0, 0, 60, 45, 0, 0, 0, - 0, 0, 46, 6, 7, 8, 14, 85, 15, 16, - 54, 0, 0, 51, 0, 0, 0, 0, 0, 51, - 0, 0, 131, 130, 129, 0, 0, 122, 123, 124, - 125, 126, 0, 104, 0, 0, 37, 0, 102, 38, - 51, 0, 0, 79, 77, 95, 103, 67, 87, 91, - 92, 88, 89, 90, 13, 53, 22, 0, 62, 63, - 0, 27, 51, 26, 0, 105, 127, 128, 30, 33, - 34, 0, 0, 40, 0, 0, 12, 24, 23, 25, - 0, 0, 0, 39, 0, 42, 0, 106, 31, 0, - 0, 0, 0, 98, 0, 0, 43, 0, 0, 0, - 0, 119, 86, 99, 0, 41, 120 + 50, 50, 0, 50, 0, 0, 50, 50, 0, 0, + 116, 110, 117, 0, 0, 0, 0, 0, 0, 0, + 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 83, 43, 81, 0, 100, 97, 0, 96, 0, + 105, 71, 72, 0, 68, 61, 0, 74, 67, 69, + 99, 88, 75, 73, 0, 5, 0, 0, 10, 48, + 49, 0, 0, 85, 84, 86, 0, 0, 0, 51, + 110, 20, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 28, 119, 118, 0, 0, 0, 0, 124, 0, + 120, 0, 0, 0, 0, 50, 35, 0, 0, 0, + 104, 0, 103, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, 62, 60, 59, 58, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 0, 110, 17, 18, 76, 77, 0, 53, 0, + 21, 0, 0, 50, 0, 0, 0, 0, 110, 111, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 121, 0, 0, 114, 113, 115, 0, 31, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, + 78, 0, 0, 0, 0, 63, 44, 0, 0, 0, + 0, 0, 45, 6, 7, 8, 14, 88, 15, 16, + 53, 0, 0, 50, 0, 0, 0, 0, 0, 50, + 0, 0, 134, 133, 132, 0, 0, 125, 126, 127, + 128, 129, 0, 54, 29, 0, 107, 0, 0, 36, + 0, 105, 37, 50, 0, 0, 82, 80, 98, 106, + 70, 90, 94, 95, 91, 92, 93, 13, 52, 22, + 0, 65, 66, 0, 27, 50, 26, 0, 108, 130, + 131, 55, 0, 0, 32, 33, 0, 0, 39, 0, + 0, 12, 24, 23, 25, 0, 0, 56, 30, 0, + 38, 0, 41, 0, 109, 57, 0, 0, 0, 0, + 101, 0, 0, 42, 0, 0, 0, 0, 122, 89, + 102, 0, 40, 123 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 3, 34, 165, 35, 37, 109, 111, 84, - 85, 182, 86, 174, 70, 71, 87, 102, 103, 88, - 315, 89, 278, 90, 120, 324, 141, 92, 73, 127, - 208, 128, 335, 129 + -1, 1, 3, 34, 165, 35, 37, 109, 111, 264, + 84, 85, 182, 86, 174, 70, 71, 87, 102, 103, + 88, 322, 89, 281, 90, 120, 331, 141, 92, 73, + 127, 208, 128, 342, 129 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -99 +#define YYPACT_NINF -130 static const yytype_int16 yypact[] = { - -99, 8, -99, 307, -38, -99, -99, -99, -99, -37, - -99, -99, -99, -99, -99, 64, 64, 64, -99, -37, - -37, -99, -99, -99, -99, -99, -99, -37, 226, 364, - 364, -8, -32, -99, -99, -29, -99, 514, 514, 337, - 112, -37, 418, 112, 514, 386, 516, 112, 453, 453, - -99, 304, -99, 453, 453, -27, -24, -2, 30, 464, - -99, -3, 315, 410, 93, 315, 464, 464, -21, 53, - -99, -99, -99, 2, 33, -99, -99, 35, -99, 52, - -99, -99, -99, 392, -99, -99, 32, -99, -99, 54, - -99, 98, -99, 33, 61, -99, 453, 453, -99, -99, - -99, 453, 69, -99, -99, -99, 81, 88, 429, -99, - 80, -99, 68, 364, 100, 272, 105, 110, -21, 154, - -99, -99, -99, -99, 216, 453, 453, 156, -99, 181, - -99, 434, 90, 434, 453, -37, -99, 171, 174, 12, - -99, 177, -99, 178, 184, 196, 272, -99, 193, 29, - 227, 453, 453, 232, -99, -99, -99, 33, 364, 272, - 240, 258, 264, 274, 364, 307, 530, 540, -99, 272, - 272, 364, 304, -99, -99, -99, -99, 220, -99, 242, - -99, 272, 223, 20, 233, 29, 236, -21, 80, -99, - -99, 90, 453, 453, 453, 286, 291, 453, 453, 453, - 453, 453, -99, -99, 250, -99, -99, -99, 266, -99, - 300, 302, -99, 146, 453, 317, 159, 146, 272, 272, - -99, 309, 318, 194, 319, -99, -99, 324, 53, 53, - 53, 53, -99, -99, -99, -99, -99, 312, -99, -99, - 156, 308, 328, -37, 334, 272, 272, 272, 272, 339, - 237, 340, 568, 617, 624, 453, 453, 221, 221, -99, - -99, -99, 344, -99, 344, -3, -99, 350, 355, -99, - -37, 356, 357, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, 272, -99, -99, 461, -99, -99, - 361, -99, 183, -99, 389, -99, 267, 267, 422, -99, - -99, 272, 146, -99, 365, 272, -99, -99, -99, -99, - 367, 453, 374, -99, 272, -99, 379, -99, -99, 62, - 380, 272, 378, -99, 390, 272, -99, 453, 62, 397, - 248, 393, -99, -99, 453, -99, 609 + -130, 12, -130, 305, -35, -130, -130, -130, -130, -33, + -130, -130, -130, -130, -130, 427, 427, 427, -130, -33, + -33, -130, -130, -130, -130, -130, -130, -33, 445, 370, + 370, 10, -24, -130, -130, -30, -130, 140, 140, 335, + -13, -33, 449, -13, 140, 70, 484, -13, 359, 359, + -130, 114, -130, 359, 359, 27, -11, 62, 76, 167, + -130, 7, 171, 424, 64, 171, 167, 167, 65, 405, + -130, -130, -130, 68, 74, -130, -130, 78, -130, 86, + -130, -130, -130, 402, -130, -130, 96, -130, -130, 107, + -130, 21, -130, 74, 118, -130, 359, 359, -130, -130, + -130, 359, 131, -130, -130, -130, 150, 158, 473, -130, + 98, -130, 155, 370, 187, 43, 192, 199, 65, 205, + -130, -130, -130, -130, 262, 359, 359, 203, -130, 90, + -130, 106, 164, 233, 359, -33, -130, 211, 223, -3, + -130, 226, -130, 231, 235, 240, 43, -130, 220, 122, + 608, 359, 359, 491, -130, -130, -130, 74, 370, 43, + 287, 291, 300, 301, 370, 305, 560, 582, -130, 43, + 43, 370, 114, -130, -130, -130, -130, 264, -130, 267, + -130, 43, 279, -4, 281, 122, 283, 65, 98, -130, + -130, 164, 359, 359, 359, 345, 356, 359, 359, 359, + 359, 359, -130, 15, 306, -130, -130, -130, 282, -130, + 307, 310, -130, 32, 359, 308, 132, 32, 43, 43, + -130, 315, 316, 225, 321, -130, -130, 322, 405, 405, + 405, 405, -130, -130, -130, -130, -130, 311, -130, -130, + 203, 204, 323, -33, 333, 43, 43, 43, 43, 334, + 331, 337, 631, 611, 547, 359, 359, 228, 228, -130, + -130, -130, 332, 371, -130, 353, -130, 357, 7, -130, + 350, 336, -130, -33, 340, 361, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, 43, -130, -130, + 513, -130, -130, 360, -130, 146, -130, 384, -130, 303, + 303, 425, 399, 15, -130, -130, 43, 32, -130, 373, + 43, -130, -130, -130, -130, 375, 408, -130, -130, 383, + -130, 43, -130, 385, -130, -130, 120, 390, 43, 380, + -130, 391, 43, -130, 359, 120, 394, 275, 403, -130, + -130, 359, -130, 622 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -99, -99, -99, 294, -99, -99, 585, 37, 360, -44, - 409, -86, -7, -99, -59, -42, -23, -22, -91, -1, - -99, 71, 151, -68, -19, 147, -99, -58, 36, -98, - 283, -15, -99, -18 + -130, -130, -130, 302, -130, -130, 589, 24, 362, 166, + -58, 411, -57, -8, -130, -61, -43, -7, 22, -129, + -21, -130, 72, 34, -94, -29, 137, -130, -51, 3, + -84, 286, 20, -130, 61 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -62 +#define YYTABLE_NINF -65 static const yytype_int16 yytable[] = { - 56, 56, 56, 116, 137, 72, 142, 143, 2, 147, - 91, 91, 178, 74, 93, 93, 106, 136, 91, 91, - 91, 215, 114, 94, 93, 91, 36, 112, 41, 245, - 117, 97, 107, 122, 123, 98, 104, 104, 131, 130, - 203, 134, 209, 104, 132, 119, 42, 146, 138, 175, - 148, 55, 57, 58, 95, 96, 60, 61, 135, 186, - 156, 48, 49, 133, 68, 144, 145, 83, 157, 154, - 149, 76, 48, 49, 240, 77, 78, 108, 166, 167, - 113, 221, 222, 118, 121, 41, 168, -61, 125, 126, - 250, 50, 75, 177, 91, 76, 183, 158, 93, 77, - 78, 150, 50, 151, 160, 161, 180, 162, 105, 105, - 189, 190, 322, 323, 52, 105, 204, 222, 210, 211, - 152, 53, 159, 51, 54, 52, 164, 148, 249, 205, - 206, 207, 53, 223, 169, 54, 179, 224, 123, 91, - 227, 79, 80, 93, 176, 91, 170, 99, 100, 93, - 237, 226, 91, 171, 163, 266, 93, 232, 269, 270, - 289, 290, 243, 139, 239, 181, 99, 100, 236, 238, - 184, 298, 212, 299, 252, 253, 254, 41, 185, 257, - 258, 259, 260, 261, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 79, 80, 267, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 79, 268, 279, - 279, 279, 279, 280, 280, 280, 280, 271, 272, 187, - 246, 300, 75, 188, 191, 76, 288, 183, 183, 77, - 78, 199, 200, 201, 48, 49, 213, 296, 297, 214, - 48, 49, 216, 217, 313, 307, 228, 291, 41, 218, - 202, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 219, 220, 275, 50, 229, 205, 206, 207, 76, - 50, 230, 117, 77, 78, 197, 198, 199, 200, 201, - 286, 231, 312, 306, 242, 51, 293, 52, 241, 225, - 244, 309, 255, 52, 69, 320, 318, 54, 256, 247, - 53, 248, 326, 54, 316, 294, 329, 303, 4, 330, - 124, 75, 125, 126, 76, 262, 336, 333, 77, 78, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 263, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 48, 49, 205, 206, 207, - 242, 29, 30, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 79, 80, 264, 31, 265, 32, 99, - 100, 33, 48, 49, 225, 50, 75, 284, 273, 76, - 281, 282, 283, 77, 78, 79, 80, 274, 276, 81, - 82, 99, 100, 277, 48, 49, 51, 285, 52, 287, - 48, 153, 50, 75, 292, 69, 76, 83, 54, 295, - 77, 78, 79, 80, 101, 301, 81, 82, 48, 49, - 302, 304, 305, 51, 50, 52, 48, 49, 308, 310, - 50, 311, 69, 314, 83, 54, 317, 48, 49, 319, - 99, 100, 48, 49, 321, 325, 327, 52, 50, 154, - 155, 51, 115, 52, 69, 328, 50, 54, 334, 233, - 69, 48, 49, 54, 99, 100, 332, 50, 173, 48, - 49, 52, 50, 140, 251, 331, 0, 110, 53, 52, - 0, 54, 0, 0, 0, 0, 53, 0, 172, 54, - 52, 50, 0, 0, 0, 52, 0, 69, 0, 50, - 54, 0, 53, 75, 101, 54, 76, 0, 0, 0, - 77, 78, 0, 0, 52, 0, 0, 0, 99, 100, - 0, 53, 52, 0, 54, 0, 0, 0, 0, 69, - 0, 0, 54, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 75, 0, 75, 76, 0, 76, 0, - 77, 78, 77, 78, 0, 0, 0, 0, 99, 100, - 99, 100, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 41, 0, 0, 101, 0, 0, 0, 0, 0, - 0, 38, 39, 40, 234, 43, 44, 45, 46, 47, - 0, 0, 0, 59, 235, 0, 62, 63, 64, 65, - 66, 67, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 194, 195, 196, 197, 198, 199, 200, 201, - 195, 196, 197, 198, 199, 200, 201 + 91, 91, 116, 136, 209, 245, 215, 147, 91, 91, + 91, 137, 2, 142, 143, 91, 104, 104, 55, 57, + 58, 72, 94, 104, 262, 119, 178, 160, 161, 36, + 162, 107, 41, 42, 98, 56, 56, 56, 135, 97, + 148, 99, 100, 60, 61, 144, 145, 175, 74, 93, + 93, 68, 41, 263, 154, 221, 222, 186, 132, 93, + 106, 41, 112, -64, 108, 117, 114, 113, 122, 123, + 118, 121, 95, 96, 130, 83, 156, 163, 48, 49, + 79, 80, 75, 138, 91, 76, 183, 134, 240, 77, + 78, 222, 131, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 157, 250, 180, 125, 126, 50, 105, + 105, 176, 79, 80, 48, 49, 105, 148, 99, 100, + 124, 168, 125, 126, 99, 100, 249, 133, 177, 91, + 227, 52, 139, 93, 146, 91, 115, 149, 304, 69, + 237, 54, 91, 150, 50, 189, 190, 151, 236, 238, + 226, 204, 243, 210, 211, 152, 232, 166, 167, 212, + 202, 158, 269, 239, 76, 272, 273, 52, 77, 78, + 329, 330, 224, 123, 203, 53, 159, 54, 93, 75, + 79, 271, 76, 164, 93, 75, 77, 78, 76, 292, + 293, 93, 77, 78, 99, 100, 169, 274, 275, 282, + 282, 282, 282, 205, 206, 207, 75, 246, 101, 76, + 305, 41, 223, 77, 78, 170, 291, 183, 183, 79, + 80, 99, 100, 171, 179, 99, 100, 294, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 199, 200, + 201, 48, 49, 205, 206, 207, 242, 312, 283, 283, + 283, 283, 181, 252, 253, 254, 320, 184, 257, 258, + 259, 260, 261, 284, 285, 286, 311, 289, 185, 188, + 187, 50, 191, 296, 314, 270, 213, 319, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 214, 323, + 220, 216, 327, 228, 52, 278, 217, 308, 229, 333, + 218, 101, 53, 336, 54, 219, 4, 230, 231, 242, + 117, 197, 198, 199, 200, 201, 299, 300, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 241, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 48, 49, 340, 244, 247, 248, 29, + 30, 255, 266, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 256, 31, 225, 32, 48, 49, 33, + 301, 265, 267, 50, 75, 268, 287, 76, 48, 49, + 302, 77, 78, 79, 80, 276, 277, 81, 82, 99, + 100, 279, 280, 288, 51, 337, 52, 50, 290, 295, + 297, 307, 343, 83, 69, 309, 54, 298, 50, 75, + 48, 153, 76, 48, 49, 306, 77, 78, 79, 80, + 52, 303, 81, 82, 315, 101, 310, 313, 53, 51, + 54, 52, 48, 49, 316, 48, 49, 317, 83, 69, + 50, 54, 321, 50, 75, 324, 325, 76, 326, 334, + 328, 77, 78, 48, 49, 332, 335, 48, 49, 154, + 155, 51, 50, 52, 339, 50, 52, 233, 341, 318, + 173, 69, 338, 54, 53, 140, 54, 251, 99, 100, + 0, 48, 49, 50, 0, 52, 51, 50, 52, 0, + 0, 0, 0, 53, 0, 54, 53, 0, 54, 48, + 49, 0, 0, 0, 51, 0, 52, 0, 110, 0, + 52, 50, 0, 0, 69, 0, 54, 0, 53, 0, + 54, 48, 49, 75, 0, 0, 76, 0, 0, 50, + 77, 78, 172, 0, 52, 0, 0, 0, 99, 100, + 0, 0, 69, 0, 54, 0, 0, 0, 225, 41, + 0, 50, 52, 195, 196, 197, 198, 199, 200, 201, + 53, 0, 54, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 54, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 38, 39, 40, 0, 43, + 44, 45, 46, 47, 0, 0, 0, 59, 0, 0, + 62, 63, 64, 65, 66, 67, 194, 195, 196, 197, + 198, 199, 200, 201, 234, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 0, 0, 235, 205, 206, 207, + 76, 0, 0, 0, 77, 78 }; static const yytype_int16 yycheck[] = { - 15, 16, 17, 45, 62, 28, 64, 65, 0, 68, - 29, 30, 110, 28, 29, 30, 38, 61, 37, 38, - 39, 9, 44, 30, 39, 44, 64, 42, 65, 9, - 45, 63, 39, 48, 49, 64, 37, 38, 65, 54, - 131, 11, 133, 44, 68, 46, 9, 68, 63, 108, - 69, 15, 16, 17, 62, 63, 19, 20, 59, 118, - 83, 8, 9, 65, 27, 66, 67, 70, 83, 57, - 68, 42, 8, 9, 172, 46, 47, 40, 96, 97, - 43, 149, 150, 46, 47, 65, 101, 67, 8, 9, - 188, 38, 39, 108, 113, 42, 115, 65, 113, 46, - 47, 68, 38, 68, 6, 7, 113, 9, 37, 38, - 125, 126, 50, 51, 61, 44, 131, 185, 133, 134, - 68, 68, 68, 59, 71, 61, 65, 146, 187, 39, - 40, 41, 68, 151, 65, 71, 68, 152, 153, 158, - 159, 48, 49, 158, 108, 164, 65, 54, 55, 164, - 169, 158, 171, 65, 56, 213, 171, 164, 216, 217, - 246, 247, 181, 70, 171, 65, 54, 55, 169, 170, - 65, 262, 135, 264, 192, 193, 194, 65, 68, 197, - 198, 199, 200, 201, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 48, 49, 214, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 48, 49, 228, - 229, 230, 231, 228, 229, 230, 231, 218, 219, 65, - 183, 265, 39, 7, 68, 42, 245, 246, 247, 46, - 47, 10, 11, 12, 8, 9, 65, 255, 256, 65, - 8, 9, 65, 65, 302, 287, 6, 248, 65, 65, - 69, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 65, 69, 69, 38, 7, 39, 40, 41, 42, - 38, 7, 287, 46, 47, 8, 9, 10, 11, 12, - 243, 7, 301, 284, 42, 59, 249, 61, 68, 57, - 67, 292, 6, 61, 68, 314, 311, 71, 7, 66, - 68, 65, 321, 71, 305, 68, 325, 270, 1, 327, - 6, 39, 8, 9, 42, 65, 334, 69, 46, 47, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 69, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 8, 9, 39, 40, 41, - 42, 44, 45, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 48, 49, 65, 59, 65, 61, 54, - 55, 64, 8, 9, 57, 38, 39, 65, 69, 42, - 229, 230, 231, 46, 47, 48, 49, 69, 69, 52, - 53, 54, 55, 69, 8, 9, 59, 69, 61, 65, - 8, 9, 38, 39, 65, 68, 42, 70, 71, 69, - 46, 47, 48, 49, 70, 65, 52, 53, 8, 9, - 65, 65, 65, 59, 38, 61, 8, 9, 67, 40, - 38, 9, 68, 68, 70, 71, 69, 8, 9, 65, - 54, 55, 8, 9, 65, 65, 68, 61, 38, 57, - 58, 59, 66, 61, 68, 65, 38, 71, 65, 165, - 68, 8, 9, 71, 54, 55, 69, 38, 108, 8, - 9, 61, 38, 64, 191, 328, -1, 59, 68, 61, - -1, 71, -1, -1, -1, -1, 68, -1, 59, 71, - 61, 38, -1, -1, -1, 61, -1, 68, -1, 38, - 71, -1, 68, 39, 70, 71, 42, -1, -1, -1, - 46, 47, -1, -1, 61, -1, -1, -1, 54, 55, - -1, 68, 61, -1, 71, -1, -1, -1, -1, 68, - -1, -1, 71, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 39, -1, 39, 42, -1, 42, -1, - 46, 47, 46, 47, -1, -1, -1, -1, 54, 55, - 54, 55, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 65, -1, -1, 70, -1, -1, -1, -1, -1, - -1, 6, 7, 8, 64, 10, 11, 12, 13, 14, - -1, -1, -1, 18, 64, -1, 21, 22, 23, 24, - 25, 26, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 5, 6, 7, 8, 9, 10, 11, 12, - 6, 7, 8, 9, 10, 11, 12 + 29, 30, 45, 61, 133, 9, 9, 68, 37, 38, + 39, 62, 0, 64, 65, 44, 37, 38, 15, 16, + 17, 28, 30, 44, 9, 46, 110, 6, 7, 64, + 9, 39, 65, 9, 64, 15, 16, 17, 59, 63, + 69, 54, 55, 19, 20, 66, 67, 108, 28, 29, + 30, 27, 65, 38, 57, 149, 150, 118, 69, 39, + 38, 65, 42, 67, 40, 45, 44, 43, 48, 49, + 46, 47, 62, 63, 54, 68, 83, 56, 8, 9, + 48, 49, 39, 63, 113, 42, 115, 11, 172, 46, + 47, 185, 65, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 83, 188, 113, 8, 9, 38, 37, + 38, 108, 48, 49, 8, 9, 44, 146, 54, 55, + 6, 101, 8, 9, 54, 55, 187, 65, 108, 158, + 159, 61, 68, 113, 69, 164, 66, 69, 267, 69, + 169, 71, 171, 69, 38, 125, 126, 69, 169, 170, + 158, 131, 181, 133, 134, 69, 164, 96, 97, 135, + 70, 65, 213, 171, 42, 216, 217, 61, 46, 47, + 50, 51, 152, 153, 68, 69, 69, 71, 158, 39, + 48, 49, 42, 65, 164, 39, 46, 47, 42, 246, + 247, 171, 46, 47, 54, 55, 65, 218, 219, 228, + 229, 230, 231, 39, 40, 41, 39, 183, 68, 42, + 268, 65, 151, 46, 47, 65, 245, 246, 247, 48, + 49, 54, 55, 65, 69, 54, 55, 248, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 10, 11, + 12, 8, 9, 39, 40, 41, 42, 290, 228, 229, + 230, 231, 65, 192, 193, 194, 307, 65, 197, 198, + 199, 200, 201, 229, 230, 231, 287, 243, 69, 7, + 65, 38, 69, 249, 295, 214, 65, 306, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 65, 310, + 70, 65, 321, 6, 61, 70, 65, 273, 7, 328, + 65, 68, 69, 332, 71, 65, 1, 7, 7, 42, + 290, 8, 9, 10, 11, 12, 255, 256, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 69, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 8, 9, 70, 67, 66, 65, 44, + 45, 6, 70, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 7, 59, 57, 61, 8, 9, 64, + 38, 65, 65, 38, 39, 65, 65, 42, 8, 9, + 9, 46, 47, 48, 49, 70, 70, 52, 53, 54, + 55, 70, 70, 70, 59, 334, 61, 38, 65, 65, + 69, 65, 341, 68, 69, 65, 71, 70, 38, 39, + 8, 9, 42, 8, 9, 65, 46, 47, 48, 49, + 61, 68, 52, 53, 40, 68, 65, 67, 69, 59, + 71, 61, 8, 9, 9, 8, 9, 38, 68, 69, + 38, 71, 69, 38, 39, 70, 38, 42, 65, 69, + 65, 46, 47, 8, 9, 65, 65, 8, 9, 57, + 58, 59, 38, 61, 70, 38, 61, 165, 65, 303, + 108, 69, 335, 71, 69, 64, 71, 191, 54, 55, + -1, 8, 9, 38, -1, 61, 59, 38, 61, -1, + -1, -1, -1, 69, -1, 71, 69, -1, 71, 8, + 9, -1, -1, -1, 59, -1, 61, -1, 59, -1, + 61, 38, -1, -1, 69, -1, 71, -1, 69, -1, + 71, 8, 9, 39, -1, -1, 42, -1, -1, 38, + 46, 47, 59, -1, 61, -1, -1, -1, 54, 55, + -1, -1, 69, -1, 71, -1, -1, -1, 57, 65, + -1, 38, 61, 6, 7, 8, 9, 10, 11, 12, + 69, -1, 71, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, -1, 61, -1, -1, -1, -1, -1, + -1, -1, 69, -1, 71, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 6, 7, 8, -1, 10, + 11, 12, 13, 14, -1, -1, -1, 18, -1, -1, + 21, 22, 23, 24, 25, 26, 5, 6, 7, 8, + 9, 10, 11, 12, 64, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 4, 5, 6, 7, 8, + 9, 10, 11, 12, -1, -1, 64, 39, 40, 41, + 42, -1, -1, -1, 46, 47 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -916,35 +922,36 @@ static const yytype_uint8 yystos[] = 29, 30, 31, 32, 33, 34, 35, 36, 37, 44, 45, 59, 61, 64, 75, 77, 64, 78, 78, 78, 78, 65, 79, 78, 78, 78, 78, 78, 8, 9, - 38, 59, 61, 68, 71, 100, 103, 100, 100, 78, - 79, 79, 78, 78, 78, 78, 78, 78, 79, 68, - 86, 87, 88, 100, 103, 39, 42, 46, 47, 48, - 49, 52, 53, 70, 81, 82, 84, 88, 91, 93, - 95, 96, 99, 103, 84, 62, 63, 63, 64, 54, - 55, 70, 89, 90, 91, 93, 89, 84, 79, 79, - 59, 80, 103, 79, 89, 66, 87, 103, 79, 91, - 96, 79, 103, 103, 6, 8, 9, 101, 103, 105, - 103, 65, 68, 65, 11, 91, 81, 99, 103, 70, - 82, 98, 99, 99, 91, 91, 68, 86, 96, 68, - 68, 68, 68, 9, 57, 58, 88, 103, 65, 68, - 6, 7, 9, 56, 65, 76, 105, 105, 103, 65, - 65, 65, 59, 80, 85, 86, 100, 103, 101, 68, - 84, 65, 83, 96, 65, 68, 86, 65, 7, 103, - 103, 68, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 69, 90, 103, 39, 40, 41, 102, 90, - 103, 103, 79, 65, 65, 9, 65, 65, 65, 65, - 69, 95, 95, 105, 103, 57, 84, 96, 6, 7, - 7, 7, 84, 75, 64, 64, 91, 96, 91, 84, - 101, 68, 42, 96, 67, 9, 79, 66, 65, 86, - 101, 102, 105, 105, 105, 6, 7, 105, 105, 105, - 105, 105, 65, 69, 65, 65, 99, 105, 49, 99, - 99, 91, 91, 69, 69, 69, 69, 69, 94, 96, - 103, 94, 94, 94, 65, 69, 79, 65, 96, 83, - 83, 91, 65, 79, 68, 69, 105, 105, 90, 90, - 81, 65, 65, 79, 65, 65, 91, 87, 67, 91, - 40, 9, 96, 99, 68, 92, 91, 69, 103, 65, - 96, 65, 50, 51, 97, 65, 96, 68, 65, 96, - 105, 97, 69, 69, 65, 104, 105 + 38, 59, 61, 69, 71, 101, 104, 101, 101, 78, + 79, 79, 78, 78, 78, 78, 78, 78, 79, 69, + 87, 88, 89, 101, 104, 39, 42, 46, 47, 48, + 49, 52, 53, 68, 82, 83, 85, 89, 92, 94, + 96, 97, 100, 104, 85, 62, 63, 63, 64, 54, + 55, 68, 90, 91, 92, 94, 90, 85, 79, 79, + 59, 80, 104, 79, 90, 66, 88, 104, 79, 92, + 97, 79, 104, 104, 6, 8, 9, 102, 104, 106, + 104, 65, 69, 65, 11, 92, 82, 100, 104, 68, + 83, 99, 100, 100, 92, 92, 69, 87, 97, 69, + 69, 69, 69, 9, 57, 58, 89, 104, 65, 69, + 6, 7, 9, 56, 65, 76, 106, 106, 104, 65, + 65, 65, 59, 80, 86, 87, 101, 104, 102, 69, + 85, 65, 84, 97, 65, 69, 87, 65, 7, 104, + 104, 69, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 70, 68, 104, 39, 40, 41, 103, 91, + 104, 104, 79, 65, 65, 9, 65, 65, 65, 65, + 70, 96, 96, 106, 104, 57, 85, 97, 6, 7, + 7, 7, 85, 75, 64, 64, 92, 97, 92, 85, + 102, 69, 42, 97, 67, 9, 79, 66, 65, 87, + 102, 103, 106, 106, 106, 6, 7, 106, 106, 106, + 106, 106, 9, 38, 81, 65, 70, 65, 65, 100, + 106, 49, 100, 100, 92, 92, 70, 70, 70, 70, + 70, 95, 97, 104, 95, 95, 95, 65, 70, 79, + 65, 97, 84, 84, 92, 65, 79, 69, 70, 106, + 106, 38, 9, 68, 91, 82, 65, 65, 79, 65, + 65, 92, 88, 67, 92, 40, 9, 38, 81, 97, + 100, 69, 93, 92, 70, 38, 65, 97, 65, 50, + 51, 98, 65, 97, 69, 65, 97, 106, 98, 70, + 70, 65, 105, 106 }; #define yyerrok (yyerrstatus = 0) @@ -1925,100 +1932,86 @@ yyreduce: case 29: #line 216 "a.y" { - settext((yyvsp[(2) - (4)].addr).sym); - (yyvsp[(4) - (4)].addr).type = TYPE_TEXTSIZE; - (yyvsp[(4) - (4)].addr).u.argsize = ArgsSizeUnknown; - outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); + settext((yyvsp[(2) - (5)].addr).sym); + outcode((yyvsp[(1) - (5)].lval), Always, &(yyvsp[(2) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr)); } break; case 30: -#line 223 "a.y" +#line 221 "a.y" { - settext((yyvsp[(2) - (6)].addr).sym); - (yyvsp[(6) - (6)].addr).type = TYPE_TEXTSIZE; - (yyvsp[(6) - (6)].addr).u.argsize = ArgsSizeUnknown; - outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); + settext((yyvsp[(2) - (7)].addr).sym); + outcode((yyvsp[(1) - (7)].lval), Always, &(yyvsp[(2) - (7)].addr), (yyvsp[(4) - (7)].lval), &(yyvsp[(7) - (7)].addr)); } break; case 31: -#line 230 "a.y" - { - settext((yyvsp[(2) - (8)].addr).sym); - (yyvsp[(6) - (8)].addr).type = TYPE_TEXTSIZE; - (yyvsp[(6) - (8)].addr).u.argsize = (yyvsp[(8) - (8)].lval); - outcode((yyvsp[(1) - (8)].lval), Always, &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].addr)); - } - break; - - case 32: -#line 240 "a.y" +#line 229 "a.y" { settext((yyvsp[(2) - (4)].addr).sym); outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); } break; - case 33: -#line 245 "a.y" + case 32: +#line 234 "a.y" { settext((yyvsp[(2) - (6)].addr).sym); outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; + case 33: +#line 242 "a.y" + { + outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); + } + break; + case 34: -#line 253 "a.y" - { - outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); - } - break; - - case 35: -#line 260 "a.y" +#line 249 "a.y" { outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].addr), 0, &nullgen); } break; - case 36: -#line 267 "a.y" + case 35: +#line 256 "a.y" { outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, 0, &(yyvsp[(3) - (3)].addr)); } break; + case 36: +#line 263 "a.y" + { + outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr)); + } + break; + case 37: -#line 274 "a.y" +#line 267 "a.y" { outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr)); } break; case 38: -#line 278 "a.y" - { - outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr)); - } - break; - - case 39: -#line 282 "a.y" +#line 271 "a.y" { outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr)); } break; - case 40: -#line 286 "a.y" + case 39: +#line 275 "a.y" { outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].addr).reg, &nullgen); } break; - case 41: -#line 293 "a.y" + case 40: +#line 282 "a.y" { Addr g; @@ -2039,15 +2032,15 @@ yyreduce: } break; - case 42: -#line 315 "a.y" + case 41: +#line 304 "a.y" { outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr)); } break; - case 43: -#line 323 "a.y" + case 42: +#line 312 "a.y" { (yyvsp[(7) - (9)].addr).type = TYPE_REGREG2; (yyvsp[(7) - (9)].addr).offset = (yyvsp[(9) - (9)].lval); @@ -2055,15 +2048,15 @@ yyreduce: } break; - case 44: -#line 332 "a.y" + case 43: +#line 321 "a.y" { outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].addr), 0, &nullgen); } break; - case 45: -#line 339 "a.y" + case 44: +#line 328 "a.y" { if((yyvsp[(2) - (4)].addr).type != TYPE_CONST || (yyvsp[(4) - (4)].addr).type != TYPE_CONST) yyerror("arguments to PCDATA must be integer constants"); @@ -2071,8 +2064,8 @@ yyreduce: } break; - case 46: -#line 348 "a.y" + case 45: +#line 337 "a.y" { if((yyvsp[(2) - (4)].addr).type != TYPE_CONST) yyerror("index for FUNCDATA must be integer constant"); @@ -2082,36 +2075,36 @@ yyreduce: } break; - case 47: -#line 359 "a.y" + case 46: +#line 348 "a.y" { outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, 0, &nullgen); } break; - case 48: -#line 364 "a.y" + case 47: +#line 353 "a.y" { (yyval.lval) = Always; } break; - case 49: -#line 368 "a.y" + case 48: +#line 357 "a.y" { (yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval); } break; - case 50: -#line 372 "a.y" + case 49: +#line 361 "a.y" { (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); } break; - case 53: -#line 381 "a.y" + case 52: +#line 370 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_BRANCH; @@ -2119,8 +2112,8 @@ yyreduce: } break; - case 54: -#line 387 "a.y" + case 53: +#line 376 "a.y" { (yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym)); (yyval.addr) = nullgen; @@ -2131,8 +2124,44 @@ yyreduce: } break; + case 54: +#line 387 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (1)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; + } + break; + case 55: -#line 397 "a.y" +#line 393 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (2)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; + } + break; + + case 56: +#line 399 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (3)].lval); + (yyval.addr).u.argsize = (yyvsp[(3) - (3)].lval); + } + break; + + case 57: +#line 405 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (4)].lval); + (yyval.addr).u.argsize = (yyvsp[(4) - (4)].lval); + } + break; + + case 58: +#line 412 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_CONST; @@ -2140,34 +2169,34 @@ yyreduce: } break; - case 56: -#line 403 "a.y" + case 59: +#line 418 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).type = TYPE_CONST; } break; - case 57: -#line 408 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_SCONST; - memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); - } - break; - - case 59: -#line 417 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_FCONST; - (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); - } - break; - case 60: #line 423 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_SCONST; + memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); + } + break; + + case 62: +#line 432 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_FCONST; + (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); + } + break; + + case 63: +#line 438 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2175,15 +2204,15 @@ yyreduce: } break; - case 61: -#line 431 "a.y" + case 64: +#line 446 "a.y" { (yyval.lval) = 1 << (yyvsp[(1) - (1)].lval); } break; - case 62: -#line 435 "a.y" + case 65: +#line 450 "a.y" { int i; (yyval.lval)=0; @@ -2194,23 +2223,23 @@ yyreduce: } break; - case 63: -#line 444 "a.y" + case 66: +#line 459 "a.y" { (yyval.lval) = (1<<(yyvsp[(1) - (3)].lval)) | (yyvsp[(3) - (3)].lval); } break; - case 67: -#line 453 "a.y" + case 70: +#line 468 "a.y" { (yyval.addr) = (yyvsp[(1) - (4)].addr); (yyval.addr).reg = (yyvsp[(3) - (4)].lval); } break; - case 68: -#line 458 "a.y" + case 71: +#line 473 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2218,8 +2247,8 @@ yyreduce: } break; - case 69: -#line 464 "a.y" + case 72: +#line 479 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2227,8 +2256,8 @@ yyreduce: } break; - case 70: -#line 470 "a.y" + case 73: +#line 485 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2236,8 +2265,8 @@ yyreduce: } break; - case 74: -#line 481 "a.y" + case 77: +#line 496 "a.y" { (yyval.addr) = (yyvsp[(1) - (1)].addr); if((yyvsp[(1) - (1)].addr).name != NAME_EXTERN && (yyvsp[(1) - (1)].addr).name != NAME_STATIC) { @@ -2245,8 +2274,8 @@ yyreduce: } break; - case 75: -#line 489 "a.y" + case 78: +#line 504 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2255,8 +2284,8 @@ yyreduce: } break; - case 77: -#line 499 "a.y" + case 80: +#line 514 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2265,8 +2294,8 @@ yyreduce: } break; - case 79: -#line 509 "a.y" + case 82: +#line 524 "a.y" { (yyval.addr) = (yyvsp[(1) - (4)].addr); (yyval.addr).type = TYPE_MEM; @@ -2274,8 +2303,8 @@ yyreduce: } break; - case 84: -#line 522 "a.y" + case 87: +#line 537 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_CONST; @@ -2283,8 +2312,8 @@ yyreduce: } break; - case 85: -#line 530 "a.y" + case 88: +#line 545 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2292,8 +2321,8 @@ yyreduce: } break; - case 86: -#line 538 "a.y" + case 89: +#line 553 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REGREG; @@ -2302,8 +2331,8 @@ yyreduce: } break; - case 87: -#line 547 "a.y" + case 90: +#line 562 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SHIFT; @@ -2311,8 +2340,8 @@ yyreduce: } break; - case 88: -#line 553 "a.y" + case 91: +#line 568 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SHIFT; @@ -2320,8 +2349,8 @@ yyreduce: } break; - case 89: -#line 559 "a.y" + case 92: +#line 574 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SHIFT; @@ -2329,8 +2358,8 @@ yyreduce: } break; - case 90: -#line 565 "a.y" + case 93: +#line 580 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SHIFT; @@ -2338,8 +2367,8 @@ yyreduce: } break; - case 91: -#line 573 "a.y" + case 94: +#line 588 "a.y" { if((yyval.lval) < REG_R0 || (yyval.lval) > REG_R15) print("register value out of range in shift\n"); @@ -2347,8 +2376,8 @@ yyreduce: } break; - case 92: -#line 579 "a.y" + case 95: +#line 594 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= 32) print("shift value out of range\n"); @@ -2356,15 +2385,15 @@ yyreduce: } break; - case 94: -#line 588 "a.y" + case 97: +#line 603 "a.y" { (yyval.lval) = REGPC; } break; - case 95: -#line 592 "a.y" + case 98: +#line 607 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range in R(...)\n"); @@ -2372,15 +2401,15 @@ yyreduce: } break; - case 97: -#line 601 "a.y" + case 100: +#line 616 "a.y" { (yyval.lval) = REGSP; } break; - case 99: -#line 608 "a.y" + case 102: +#line 623 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range in C(...)\n"); @@ -2388,8 +2417,8 @@ yyreduce: } break; - case 102: -#line 620 "a.y" + case 105: +#line 635 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2397,8 +2426,8 @@ yyreduce: } break; - case 103: -#line 626 "a.y" + case 106: +#line 641 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2406,8 +2435,8 @@ yyreduce: } break; - case 104: -#line 634 "a.y" + case 107: +#line 649 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2417,8 +2446,8 @@ yyreduce: } break; - case 105: -#line 642 "a.y" + case 108: +#line 657 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2428,8 +2457,8 @@ yyreduce: } break; - case 106: -#line 650 "a.y" + case 109: +#line 665 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2439,141 +2468,141 @@ yyreduce: } break; - case 107: -#line 659 "a.y" + case 110: +#line 674 "a.y" { (yyval.lval) = 0; } break; - case 108: -#line 663 "a.y" + case 111: +#line 678 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 109: -#line 667 "a.y" + case 112: +#line 682 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 114: -#line 679 "a.y" + case 117: +#line 694 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; - case 115: -#line 683 "a.y" + case 118: +#line 698 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 116: -#line 687 "a.y" + case 119: +#line 702 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 117: -#line 691 "a.y" + case 120: +#line 706 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; - case 118: -#line 695 "a.y" + case 121: +#line 710 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; - case 119: -#line 700 "a.y" + case 122: +#line 715 "a.y" { (yyval.lval) = 0; } break; - case 120: -#line 704 "a.y" + case 123: +#line 719 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 122: -#line 711 "a.y" + case 125: +#line 726 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; - case 123: -#line 715 "a.y" + case 126: +#line 730 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; - case 124: -#line 719 "a.y" + case 127: +#line 734 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; - case 125: -#line 723 "a.y" + case 128: +#line 738 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; - case 126: -#line 727 "a.y" + case 129: +#line 742 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; - case 127: -#line 731 "a.y" + case 130: +#line 746 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; - case 128: -#line 735 "a.y" + case 131: +#line 750 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; - case 129: -#line 739 "a.y" + case 132: +#line 754 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; - case 130: -#line 743 "a.y" + case 133: +#line 758 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; - case 131: -#line 747 "a.y" + case 134: +#line 762 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } @@ -2581,7 +2610,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2585 "y.tab.c" +#line 2614 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/cmd/5g/ggen.c b/src/cmd/5g/ggen.c index 7f1716e91c..f772f03ce6 100644 --- a/src/cmd/5g/ggen.c +++ b/src/cmd/5g/ggen.c @@ -21,12 +21,10 @@ defframe(Prog *ptxt) NodeList *l; Node *n; - // fill in argument size + // fill in argument size, stack size ptxt->to.type = TYPE_TEXTSIZE; ptxt->to.u.argsize = rnd(curfn->type->argwid, widthptr); - - // fill in final stack size - frame = rnd(stksize+maxarg, widthptr); + frame = rnd(stksize+maxarg, widthreg); ptxt->to.offset = frame; // insert code to contain ambiguously live variables diff --git a/src/cmd/5l/5.out.h b/src/cmd/5l/5.out.h index ba738eeb63..52a0d8b667 100644 --- a/src/cmd/5l/5.out.h +++ b/src/cmd/5l/5.out.h @@ -149,6 +149,7 @@ enum C_HREG, C_ADDR, /* reference to relocatable address */ + C_TEXTSIZE, C_GOK, diff --git a/src/cmd/6a/a.y b/src/cmd/6a/a.y index 39b075b976..954884463c 100644 --- a/src/cmd/6a/a.y +++ b/src/cmd/6a/a.y @@ -57,8 +57,8 @@ %token LFCONST %token LSCONST LSP %token LNAME LLAB LVAR -%type con con2 expr pointer offset -%type mem imm imm2 reg nam rel rem rim rom omem nmem +%type con expr pointer offset +%type mem imm reg nam rel rem rim rom omem nmem textsize %type nonnon nonrel nonrem rimnon rimrem remrim %type spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 %type spec10 spec11 spec12 spec13 @@ -191,18 +191,18 @@ spec1: /* DATA */ } spec2: /* TEXT */ - mem ',' imm2 + mem ',' '$' textsize { settext($1.sym); $$.from = $1; - $$.to = $3; + $$.to = $4; } -| mem ',' con ',' imm2 +| mem ',' con ',' '$' textsize { settext($1.sym); $$.from = $1; $$.from.scale = $3; - $$.to = $5; + $$.to = $6; } spec3: /* JMP/CALL */ @@ -412,13 +412,6 @@ reg: $$.type = TYPE_REG; $$.reg = $1; } -imm2: - '$' con2 - { - $$ = nullgen; - $$.type = TYPE_CONST; - $$.offset = $2; - } imm: '$' con @@ -634,26 +627,30 @@ con: $$ = $2; } -con2: +textsize: LCONST { - $$ = ($1 & 0xffffffffLL) + - ((vlong)ArgsSizeUnknown << 32); + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = ArgsSizeUnknown; } | '-' LCONST { - $$ = (-$2 & 0xffffffffLL) + - ((vlong)ArgsSizeUnknown << 32); + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = ArgsSizeUnknown; } | LCONST '-' LCONST { - $$ = ($1 & 0xffffffffLL) + - (($3 & 0xffffLL) << 32); + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = $3; } | '-' LCONST '-' LCONST { - $$ = (-$2 & 0xffffffffLL) + - (($4 & 0xffffLL) << 32); + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = $4; } expr: diff --git a/src/cmd/6a/y.tab.c b/src/cmd/6a/y.tab.c index 70d4e1dfe2..61855c4431 100644 --- a/src/cmd/6a/y.tab.c +++ b/src/cmd/6a/y.tab.c @@ -411,14 +411,14 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 549 +#define YYLAST 531 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 56 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 41 +#define YYNNTS 40 /* YYNRULES -- Number of rules. */ -#define YYNRULES 134 +#define YYNRULES 133 /* YYNRULES -- Number of states. */ #define YYNSTATES 271 @@ -435,8 +435,8 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 54, 12, 5, 2, - 52, 53, 10, 8, 51, 9, 2, 11, 2, 2, + 2, 2, 2, 2, 2, 2, 52, 12, 5, 2, + 53, 54, 10, 8, 51, 9, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, 49, 6, 50, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -473,16 +473,16 @@ static const yytype_uint16 yyprhs[] = 23, 27, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 89, 91, 95, 99, 102, 104, 107, 109, - 112, 114, 118, 124, 128, 134, 137, 139, 141, 143, - 147, 153, 157, 163, 166, 168, 172, 178, 184, 185, - 187, 191, 197, 201, 205, 207, 209, 211, 213, 216, - 219, 221, 223, 225, 227, 232, 235, 237, 239, 241, - 243, 245, 247, 249, 252, 255, 258, 261, 264, 269, - 275, 279, 281, 283, 285, 290, 295, 300, 307, 317, - 327, 331, 335, 341, 350, 352, 359, 365, 373, 374, - 377, 380, 382, 384, 386, 388, 390, 393, 396, 399, - 403, 405, 408, 412, 417, 419, 423, 427, 431, 435, - 439, 444, 449, 453, 457 + 112, 114, 118, 124, 129, 136, 139, 141, 143, 145, + 149, 155, 159, 165, 168, 170, 174, 180, 186, 187, + 189, 193, 199, 203, 207, 209, 211, 213, 215, 218, + 221, 223, 225, 227, 229, 234, 237, 239, 241, 243, + 245, 247, 249, 251, 254, 257, 260, 263, 268, 274, + 278, 280, 282, 284, 289, 294, 299, 306, 316, 326, + 330, 334, 340, 349, 351, 358, 364, 372, 373, 376, + 379, 381, 383, 385, 387, 389, 392, 395, 398, 402, + 404, 407, 411, 416, 418, 422, 426, 430, 434, 438, + 443, 448, 452, 456 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -490,7 +490,7 @@ static const yytype_int8 yyrhs[] = { 57, 0, -1, -1, -1, 57, 58, 59, -1, -1, 45, 48, 60, 59, -1, 49, -1, 61, 49, -1, - 1, 49, -1, 45, 50, 96, -1, 47, 50, 96, + 1, 49, -1, 45, 50, 95, -1, 47, 50, 95, -1, 13, 62, -1, 14, 66, -1, 15, 65, -1, 16, 63, -1, 17, 64, -1, 21, 67, -1, 19, 68, -1, 22, 69, -1, 18, 70, -1, 20, 71, @@ -499,42 +499,41 @@ static const yytype_int8 yyrhs[] = 78, -1, 24, 79, -1, 31, 80, -1, -1, 51, -1, 83, 51, 81, -1, 81, 51, 83, -1, 83, 51, -1, 83, -1, 51, 81, -1, 81, -1, 51, - 84, -1, 84, -1, 87, 51, 84, -1, 91, 11, - 94, 51, 87, -1, 88, 51, 86, -1, 88, 51, - 94, 51, 86, -1, 51, 82, -1, 82, -1, 62, - -1, 66, -1, 83, 51, 81, -1, 83, 51, 81, - 48, 37, -1, 83, 51, 81, -1, 83, 51, 81, - 48, 38, -1, 83, 51, -1, 83, -1, 83, 51, - 81, -1, 85, 51, 81, 51, 94, -1, 87, 51, - 81, 51, 85, -1, -1, 87, -1, 88, 51, 87, - -1, 88, 51, 94, 51, 87, -1, 83, 51, 83, - -1, 83, 51, 83, -1, 85, -1, 88, -1, 84, - -1, 90, -1, 10, 85, -1, 10, 89, -1, 85, - -1, 89, -1, 81, -1, 87, -1, 94, 52, 34, - 53, -1, 45, 92, -1, 36, -1, 39, -1, 37, - -1, 40, -1, 44, -1, 38, -1, 41, -1, 54, - 95, -1, 54, 94, -1, 54, 91, -1, 54, 43, - -1, 54, 42, -1, 54, 52, 42, 53, -1, 54, - 52, 9, 42, 53, -1, 54, 9, 42, -1, 89, - -1, 90, -1, 94, -1, 94, 52, 37, 53, -1, - 94, 52, 44, 53, -1, 94, 52, 38, 53, -1, - 94, 52, 37, 10, 94, 53, -1, 94, 52, 37, - 53, 52, 37, 10, 94, 53, -1, 94, 52, 37, - 53, 52, 38, 10, 94, 53, -1, 52, 37, 53, - -1, 52, 44, 53, -1, 52, 37, 10, 94, 53, - -1, 52, 37, 53, 52, 37, 10, 94, 53, -1, - 91, -1, 91, 52, 37, 10, 94, 53, -1, 45, - 92, 52, 93, 53, -1, 45, 6, 7, 92, 52, - 35, 53, -1, -1, 8, 94, -1, 9, 94, -1, - 35, -1, 44, -1, 33, -1, 32, -1, 47, -1, - 9, 94, -1, 8, 94, -1, 55, 94, -1, 52, - 96, 53, -1, 32, -1, 9, 32, -1, 32, 9, - 32, -1, 9, 32, 9, 32, -1, 94, -1, 96, - 8, 96, -1, 96, 9, 96, -1, 96, 10, 96, - -1, 96, 11, 96, -1, 96, 12, 96, -1, 96, - 6, 6, 96, -1, 96, 7, 7, 96, -1, 96, - 5, 96, -1, 96, 4, 96, -1, 96, 3, 96, - -1 + 84, -1, 84, -1, 86, 51, 84, -1, 90, 11, + 93, 51, 86, -1, 87, 51, 52, 94, -1, 87, + 51, 93, 51, 52, 94, -1, 51, 82, -1, 82, + -1, 62, -1, 66, -1, 83, 51, 81, -1, 83, + 51, 81, 48, 37, -1, 83, 51, 81, -1, 83, + 51, 81, 48, 38, -1, 83, 51, -1, 83, -1, + 83, 51, 81, -1, 85, 51, 81, 51, 93, -1, + 86, 51, 81, 51, 85, -1, -1, 86, -1, 87, + 51, 86, -1, 87, 51, 93, 51, 86, -1, 83, + 51, 83, -1, 83, 51, 83, -1, 85, -1, 87, + -1, 84, -1, 89, -1, 10, 85, -1, 10, 88, + -1, 85, -1, 88, -1, 81, -1, 86, -1, 93, + 53, 34, 54, -1, 45, 91, -1, 36, -1, 39, + -1, 37, -1, 40, -1, 44, -1, 38, -1, 41, + -1, 52, 93, -1, 52, 90, -1, 52, 43, -1, + 52, 42, -1, 52, 53, 42, 54, -1, 52, 53, + 9, 42, 54, -1, 52, 9, 42, -1, 88, -1, + 89, -1, 93, -1, 93, 53, 37, 54, -1, 93, + 53, 44, 54, -1, 93, 53, 38, 54, -1, 93, + 53, 37, 10, 93, 54, -1, 93, 53, 37, 54, + 53, 37, 10, 93, 54, -1, 93, 53, 37, 54, + 53, 38, 10, 93, 54, -1, 53, 37, 54, -1, + 53, 44, 54, -1, 53, 37, 10, 93, 54, -1, + 53, 37, 54, 53, 37, 10, 93, 54, -1, 90, + -1, 90, 53, 37, 10, 93, 54, -1, 45, 91, + 53, 92, 54, -1, 45, 6, 7, 91, 53, 35, + 54, -1, -1, 8, 93, -1, 9, 93, -1, 35, + -1, 44, -1, 33, -1, 32, -1, 47, -1, 9, + 93, -1, 8, 93, -1, 55, 93, -1, 53, 95, + 54, -1, 32, -1, 9, 32, -1, 32, 9, 32, + -1, 9, 32, 9, 32, -1, 93, -1, 95, 8, + 95, -1, 95, 9, 95, -1, 95, 10, 95, -1, + 95, 11, 95, -1, 95, 12, 95, -1, 95, 6, + 6, 95, -1, 95, 7, 7, 95, -1, 95, 5, + 95, -1, 95, 4, 95, -1, 95, 3, 95, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -548,12 +547,12 @@ static const yytype_uint16 yyrline[] = 230, 240, 245, 255, 260, 265, 272, 280, 290, 294, 301, 306, 314, 323, 334, 335, 338, 339, 340, 344, 348, 349, 352, 353, 356, 362, 373, 379, 385, 391, - 397, 403, 409, 416, 424, 430, 440, 446, 452, 458, - 464, 472, 473, 476, 482, 489, 496, 503, 512, 522, - 532, 538, 544, 552, 563, 567, 576, 584, 594, 597, - 601, 607, 608, 612, 615, 616, 620, 624, 628, 632, - 638, 643, 648, 653, 660, 661, 665, 669, 673, 677, - 681, 685, 689, 693, 697 + 397, 403, 409, 417, 423, 433, 439, 445, 451, 457, + 465, 466, 469, 475, 482, 489, 496, 505, 515, 525, + 531, 537, 545, 556, 560, 569, 577, 587, 590, 594, + 600, 601, 605, 608, 609, 613, 617, 621, 625, 631, + 637, 643, 649, 657, 658, 662, 666, 670, 674, 678, + 682, 686, 690, 694 }; #endif @@ -568,12 +567,12 @@ static const char *const yytname[] = "LTYPEPC", "LTYPES", "LTYPEM", "LTYPEI", "LTYPEXC", "LTYPEX", "LTYPERT", "LTYPEF", "LCONST", "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LMREG", "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", - "LVAR", "':'", "';'", "'='", "','", "'('", "')'", "'$'", "'~'", + "LVAR", "':'", "';'", "'='", "','", "'$'", "'('", "')'", "'~'", "$accept", "prog", "@1", "line", "@2", "inst", "nonnon", "rimrem", "remrim", "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6", "spec7", "spec8", "spec9", "spec10", "spec11", - "spec12", "spec13", "rem", "rom", "rim", "rel", "reg", "imm2", "imm", - "mem", "omem", "nmem", "nam", "offset", "pointer", "con", "con2", "expr", 0 + "spec12", "spec13", "rem", "rom", "rim", "rel", "reg", "imm", "mem", + "omem", "nmem", "nam", "offset", "pointer", "con", "textsize", "expr", 0 }; #endif @@ -587,7 +586,7 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 58, 59, - 61, 44, 40, 41, 36, 126 + 61, 44, 36, 40, 41, 126 }; # endif @@ -602,12 +601,12 @@ static const yytype_uint8 yyr1[] = 72, 73, 73, 74, 74, 74, 75, 76, 77, 77, 78, 78, 79, 80, 81, 81, 82, 82, 82, 82, 82, 82, 83, 83, 84, 84, 85, 85, 85, 85, - 85, 85, 85, 86, 87, 87, 87, 87, 87, 87, - 87, 88, 88, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 90, 90, 91, 91, 92, 92, - 92, 93, 93, 93, 94, 94, 94, 94, 94, 94, - 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96 + 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, + 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 89, 89, 90, 90, 91, 91, 91, + 92, 92, 92, 93, 93, 93, 93, 93, 93, 94, + 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -617,16 +616,16 @@ static const yytype_uint8 yyr2[] = 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 3, 3, 2, 1, 2, 1, 2, - 1, 3, 5, 3, 5, 2, 1, 1, 1, 3, + 1, 3, 5, 4, 6, 2, 1, 1, 1, 3, 5, 3, 5, 2, 1, 3, 5, 5, 0, 1, 3, 5, 3, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 4, 2, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 4, 5, - 3, 1, 1, 1, 4, 4, 4, 6, 9, 9, - 3, 3, 5, 8, 1, 6, 5, 7, 0, 2, - 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, - 1, 2, 3, 4, 1, 3, 3, 3, 3, 3, - 4, 4, 3, 3, 3 + 1, 1, 1, 2, 2, 2, 2, 4, 5, 3, + 1, 1, 1, 4, 4, 4, 6, 9, 9, 3, + 3, 5, 8, 1, 6, 5, 7, 0, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, + 2, 3, 4, 1, 3, 3, 3, 3, 3, 4, + 4, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -637,31 +636,31 @@ static const yytype_uint8 yydefact[] = 2, 3, 1, 0, 0, 31, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 7, 4, 0, 9, - 32, 12, 0, 0, 114, 76, 78, 81, 77, 79, - 82, 80, 108, 115, 0, 0, 0, 13, 38, 64, - 65, 91, 92, 104, 93, 0, 14, 72, 36, 73, - 15, 0, 16, 0, 0, 108, 0, 20, 46, 66, - 70, 71, 67, 93, 18, 0, 32, 47, 48, 21, - 108, 0, 0, 17, 40, 0, 0, 19, 0, 28, + 32, 12, 0, 0, 113, 76, 78, 81, 77, 79, + 82, 80, 107, 114, 0, 0, 0, 13, 38, 64, + 65, 90, 91, 103, 92, 0, 14, 72, 36, 73, + 15, 0, 16, 0, 0, 107, 0, 20, 46, 66, + 70, 71, 67, 92, 18, 0, 32, 47, 48, 21, + 107, 0, 0, 17, 40, 0, 0, 19, 0, 28, 0, 29, 0, 22, 0, 23, 0, 24, 54, 25, 0, 26, 0, 27, 59, 30, 0, 5, 0, 0, - 8, 117, 116, 0, 0, 0, 0, 37, 0, 0, - 124, 0, 118, 0, 0, 0, 87, 86, 0, 85, - 84, 35, 0, 0, 68, 69, 75, 45, 0, 0, + 8, 116, 115, 0, 0, 0, 0, 37, 0, 0, + 123, 0, 117, 0, 0, 0, 86, 85, 0, 84, + 83, 35, 0, 0, 68, 69, 75, 45, 0, 0, 75, 39, 0, 0, 0, 0, 0, 0, 0, 53, - 0, 0, 0, 0, 10, 11, 108, 109, 110, 0, - 0, 100, 101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 0, 90, 0, - 0, 33, 34, 0, 0, 41, 0, 43, 0, 60, - 0, 62, 49, 51, 55, 0, 0, 63, 6, 0, - 113, 111, 112, 0, 0, 0, 134, 133, 132, 0, - 0, 125, 126, 127, 128, 129, 0, 0, 94, 96, - 95, 0, 88, 74, 0, 0, 120, 83, 0, 0, - 0, 0, 0, 0, 0, 106, 102, 0, 130, 131, - 0, 0, 0, 89, 42, 121, 0, 44, 61, 50, - 52, 56, 57, 0, 0, 105, 97, 0, 0, 0, - 122, 107, 0, 0, 0, 123, 103, 0, 0, 98, - 99 + 0, 0, 0, 0, 10, 11, 107, 108, 109, 0, + 0, 99, 100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 118, 0, 0, 0, 0, 89, 0, + 0, 33, 34, 0, 0, 41, 0, 0, 60, 0, + 62, 49, 51, 55, 0, 0, 63, 6, 0, 112, + 110, 111, 0, 0, 0, 133, 132, 131, 0, 0, + 124, 125, 126, 127, 128, 0, 0, 93, 95, 94, + 0, 87, 74, 0, 0, 119, 43, 0, 0, 0, + 0, 0, 0, 0, 105, 101, 0, 129, 130, 0, + 0, 0, 88, 42, 120, 0, 0, 61, 50, 52, + 56, 57, 0, 0, 104, 96, 0, 0, 0, 121, + 44, 106, 0, 0, 0, 122, 102, 0, 0, 97, + 98 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -670,8 +669,7 @@ static const yytype_int16 yydefgoto[] = -1, 1, 3, 27, 153, 28, 31, 60, 62, 56, 47, 83, 74, 87, 67, 79, 93, 95, 97, 99, 101, 103, 89, 91, 105, 57, 68, 58, 69, 49, - 187, 59, 50, 51, 52, 53, 116, 203, 54, 227, - 121 + 59, 50, 51, 52, 53, 116, 202, 54, 226, 121 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -679,44 +677,43 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -89 static const yytype_int16 yypact[] = { - -89, 18, -89, 163, -5, -13, 219, 253, 253, 335, - 194, 16, 274, 369, 418, 418, 253, 253, 253, 253, - 240, 0, 0, 253, -17, 19, -89, -89, 24, -89, - -89, -89, 479, 479, -89, -89, -89, -89, -89, -89, - -89, -89, 111, -89, 335, 397, 479, -89, -89, -89, - -89, -89, -89, 33, 51, 390, -89, -89, 65, -89, - -89, 72, -89, 73, 356, 111, 314, -89, -89, -89, - -89, -89, -89, 74, -89, 30, 335, -89, -89, -89, - 70, 422, 479, -89, -89, 82, 86, -89, 88, -89, - 89, -89, 90, -89, 91, -89, 92, -89, 101, -89, - 105, -89, 114, -89, -89, -89, 116, -89, 479, 479, - -89, -89, -89, 118, 479, 479, 120, -89, 5, 115, - -89, 83, -89, 133, -12, 404, -89, -89, 439, -89, - -89, -89, 335, 253, -89, -89, 120, -89, 9, 479, - -89, -89, 422, 141, 119, 452, 253, 335, 335, 335, - 335, 335, 253, 163, 327, 327, 70, -89, -89, 4, - 479, 143, -89, 479, 479, 479, 190, 191, 479, 479, - 479, 479, 479, -89, 187, 6, 148, 152, -89, 470, - 156, -89, -89, 158, 162, -89, 8, -89, 164, -89, - 166, -89, 170, 171, -89, 169, 172, -89, -89, 173, - -89, -89, -89, 161, 176, 199, 102, 530, 537, 479, - 479, 39, 39, -89, -89, -89, 479, 479, 185, -89, - -89, 189, -89, -89, 0, 208, 234, -89, 193, 0, - 211, 212, 479, 240, 217, -89, -89, 255, 55, 55, - 214, 215, 59, -89, -89, 260, 241, -89, -89, -89, - -89, -89, -89, 222, 479, -89, -89, 262, 276, 256, - -89, -89, 242, 479, 479, -89, -89, 243, 246, -89, + -89, 16, -89, 163, 0, -13, 219, 241, 241, 317, + 193, 13, 267, 333, 164, 164, 241, 241, 241, 241, + 472, 17, 17, 241, -17, 23, -89, -89, 52, -89, + -89, -89, 433, 433, -89, -89, -89, -89, -89, -89, + -89, -89, 45, -89, 317, 358, 433, -89, -89, -89, + -89, -89, -89, 50, 63, 351, -89, -89, 68, -89, + -89, 71, -89, 73, 70, 45, 292, -89, -89, -89, + -89, -89, -89, 80, -89, 117, 317, -89, -89, -89, + 38, 365, 433, -89, -89, 87, 86, -89, 89, -89, + 90, -89, 91, -89, 92, -89, 100, -89, 101, -89, + 105, -89, 114, -89, -89, -89, 115, -89, 433, 433, + -89, -89, -89, 160, 433, 433, 118, -89, 5, 116, + -89, 82, -89, 131, -12, 383, -89, -89, 392, -89, + -89, -89, 317, 241, -89, -89, 118, -89, 6, 433, + -89, -89, 365, 140, 399, 408, 241, 317, 317, 317, + 317, 317, 241, 163, 486, 486, 38, -89, -89, 4, + 433, 122, -89, 433, 433, 433, 189, 190, 433, 433, + 433, 433, 433, -89, 194, 7, 146, 153, -89, 424, + 159, -89, -89, 162, 167, -89, 9, 171, -89, 173, + -89, 166, 178, -89, 184, 185, -89, -89, 186, -89, + -89, -89, 187, 188, 208, 495, 512, 519, 433, 433, + 85, 85, -89, -89, -89, 433, 433, 199, -89, -89, + 207, -89, -89, 17, 215, 253, -89, 213, 17, 230, + 231, 433, 472, 233, -89, -89, 261, 55, 55, 229, + 235, 75, -89, -89, 275, 255, 9, -89, -89, -89, + -89, -89, 236, 433, -89, -89, 281, 282, 263, -89, + -89, -89, 243, 433, 433, -89, -89, 244, 256, -89, -89 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -89, -89, -89, 134, -89, -89, 289, -89, -89, -89, - 290, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -2, 237, 11, -11, -9, - 76, -8, 87, -4, 2, -3, -56, -89, -10, -89, - -88 + -89, -89, -89, 156, -89, -89, 301, -89, -89, -89, + 303, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -2, 250, 11, -11, -9, + -8, 112, -4, 2, -3, -56, -89, -10, 77, -88 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -727,119 +724,117 @@ static const yytype_int16 yypgoto[] = static const yytype_uint16 yytable[] = { 73, 70, 84, 86, 48, 85, 71, 63, 75, 136, - 48, 100, 72, 102, 104, 160, 217, 225, 2, 61, + 48, 100, 72, 102, 104, 160, 2, 216, 224, 61, 154, 155, 111, 112, 140, 175, 176, 92, 94, 96, - 98, 107, 177, 108, 106, 120, 122, 200, 30, 201, - 226, 139, 117, 183, 29, 130, 175, 176, 202, 170, - 171, 172, 129, 177, 55, 134, 73, 70, 161, 218, - 135, 42, 71, 168, 169, 170, 171, 172, 72, 109, - 141, 86, 120, 110, 117, 206, 207, 208, 114, 115, - 211, 212, 213, 214, 215, 123, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 257, 258, 120, 120, - 199, 88, 90, 124, 157, 158, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 112, 131, 113, 120, 114, - 115, 238, 239, 132, 133, 156, 138, 32, 33, 184, - 181, 185, 86, 142, 188, 190, 173, 189, 143, 144, - 145, 146, 147, 148, 182, 192, 193, 194, 195, 196, - 204, 34, 149, 120, 120, 120, 150, 191, 120, 120, - 120, 120, 120, 197, 4, 151, 43, 152, 162, 112, - 174, 82, 159, 186, 46, 183, 5, 6, 7, 8, + 98, 107, 177, 108, 106, 120, 122, 199, 30, 200, + 183, 225, 117, 175, 176, 130, 114, 115, 201, 29, + 177, 113, 129, 114, 115, 134, 73, 70, 42, 161, + 135, 217, 71, 168, 169, 170, 171, 172, 72, 55, + 141, 86, 120, 109, 117, 205, 206, 207, 32, 33, + 210, 211, 212, 213, 214, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 170, 171, 172, 120, 120, + 198, 110, 34, 123, 157, 158, 35, 36, 37, 38, + 39, 40, 256, 257, 41, 112, 124, 43, 120, 131, + 237, 238, 132, 45, 133, 46, 88, 90, 139, 184, + 181, 185, 86, 138, 187, 189, 173, 188, 142, 143, + 144, 145, 146, 147, 182, 191, 192, 193, 194, 195, + 203, 148, 149, 120, 120, 120, 150, 190, 120, 120, + 120, 120, 120, 196, 4, 151, 152, 156, 174, 112, + 162, 159, 32, 33, 183, 204, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 205, 209, 216, 210, 120, - 120, 219, 32, 33, 64, 220, 240, 241, 24, 222, - 25, 223, 26, 224, 235, 228, 244, 229, 230, 231, - 232, 248, 251, 233, 252, 234, 34, 32, 33, 236, - 35, 36, 37, 38, 39, 40, 237, 242, 41, 65, - 245, 43, 243, 246, 262, 66, 45, 186, 249, 46, - 250, 34, 253, 267, 268, 35, 36, 37, 38, 39, - 40, 32, 33, 41, 42, 254, 43, 255, 256, 259, - 44, 45, 263, 260, 46, 261, 35, 36, 37, 38, - 39, 40, 32, 33, 41, 34, 264, 198, 265, 35, - 36, 37, 38, 39, 40, 266, 269, 41, 42, 270, - 43, 77, 78, 137, 247, 45, 34, 55, 46, 0, - 35, 36, 37, 38, 39, 40, 0, 0, 41, 42, - 0, 43, 32, 33, 64, 76, 45, 0, 0, 46, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 0, 0, 0, 32, 33, 0, 34, 0, 0, 0, - 35, 36, 37, 38, 39, 40, 0, 0, 41, 65, - 0, 43, 0, 0, 32, 33, 45, 34, 0, 46, - 0, 35, 36, 37, 38, 39, 40, 32, 33, 41, - 42, 0, 43, 0, 0, 0, 0, 45, 34, 0, - 46, 0, 35, 36, 37, 38, 39, 40, 32, 125, - 41, 34, 0, 43, 0, 32, 33, 0, 45, 0, - 0, 46, 32, 33, 80, 0, 43, 0, 0, 0, - 81, 82, 34, 55, 46, 0, 32, 33, 0, 34, - 32, 33, 126, 127, 118, 42, 34, 43, 0, 0, - 0, 119, 128, 0, 43, 46, 178, 32, 179, 82, - 34, 43, 46, 0, 34, 0, 82, 0, 0, 46, - 32, 33, 0, 42, 0, 43, 0, 80, 0, 43, - 45, 34, 0, 46, 82, 0, 0, 46, 32, 33, - 0, 180, 0, 0, 34, 0, 43, 32, 33, 0, - 0, 82, 0, 0, 46, 0, 0, 0, 0, 43, - 0, 0, 34, 0, 82, 0, 55, 46, 0, 0, - 0, 34, 221, 0, 0, 0, 0, 43, 0, 0, - 0, 0, 82, 0, 0, 46, 43, 0, 0, 0, - 0, 82, 0, 0, 46, 165, 166, 167, 168, 169, - 170, 171, 172, 166, 167, 168, 169, 170, 171, 172 + 19, 20, 21, 22, 23, 208, 34, 209, 120, 120, + 218, 32, 33, 64, 215, 239, 240, 219, 24, 42, + 25, 43, 26, 221, 229, 243, 222, 45, 223, 46, + 247, 250, 227, 251, 228, 34, 230, 32, 33, 35, + 36, 37, 38, 39, 40, 231, 232, 41, 65, 233, + 43, 234, 235, 262, 66, 236, 45, 244, 46, 32, + 33, 34, 241, 267, 268, 35, 36, 37, 38, 39, + 40, 242, 245, 41, 42, 246, 43, 248, 252, 249, + 44, 253, 45, 34, 46, 32, 33, 35, 36, 37, + 38, 39, 40, 254, 258, 41, 42, 259, 43, 255, + 261, 263, 264, 55, 45, 265, 46, 266, 269, 34, + 32, 33, 64, 35, 36, 37, 38, 39, 40, 197, + 270, 41, 42, 77, 43, 78, 137, 0, 76, 0, + 45, 0, 46, 260, 34, 32, 33, 0, 35, 36, + 37, 38, 39, 40, 0, 0, 41, 65, 0, 43, + 0, 32, 33, 0, 0, 45, 0, 46, 0, 34, + 0, 0, 0, 35, 36, 37, 38, 39, 40, 32, + 125, 41, 42, 0, 43, 34, 32, 33, 0, 0, + 45, 0, 46, 32, 33, 0, 0, 0, 80, 0, + 43, 0, 0, 34, 81, 55, 82, 0, 46, 0, + 34, 32, 33, 126, 127, 118, 42, 34, 43, 0, + 32, 179, 119, 0, 128, 43, 46, 32, 33, 0, + 80, 82, 43, 46, 0, 34, 32, 33, 82, 0, + 46, 0, 0, 0, 34, 178, 0, 0, 0, 0, + 43, 34, 32, 33, 180, 0, 82, 0, 46, 43, + 34, 32, 33, 0, 0, 82, 43, 46, 0, 0, + 0, 186, 82, 0, 46, 43, 34, 0, 0, 0, + 55, 82, 0, 46, 0, 34, 220, 0, 0, 0, + 0, 43, 0, 0, 0, 0, 0, 82, 0, 46, + 43, 0, 0, 0, 0, 0, 82, 0, 46, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 35, 36, + 37, 38, 39, 40, 0, 0, 41, 165, 166, 167, + 168, 169, 170, 171, 172, 166, 167, 168, 169, 170, + 171, 172 }; static const yytype_int16 yycheck[] = { 10, 10, 13, 13, 6, 13, 10, 9, 11, 65, - 12, 20, 10, 21, 22, 10, 10, 9, 0, 8, + 12, 20, 10, 21, 22, 10, 0, 10, 9, 8, 108, 109, 32, 33, 80, 37, 38, 16, 17, 18, 19, 48, 44, 50, 23, 45, 46, 33, 51, 35, - 32, 11, 44, 34, 49, 55, 37, 38, 44, 10, - 11, 12, 55, 44, 54, 64, 66, 66, 53, 53, - 64, 45, 66, 8, 9, 10, 11, 12, 66, 50, - 81, 81, 82, 49, 76, 163, 164, 165, 8, 9, - 168, 169, 170, 171, 172, 52, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 37, 38, 108, 109, - 156, 14, 15, 52, 114, 115, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 125, 51, 6, 128, 8, - 9, 209, 210, 51, 51, 7, 52, 8, 9, 139, - 132, 142, 142, 51, 144, 145, 53, 145, 52, 51, + 34, 32, 44, 37, 38, 55, 8, 9, 44, 49, + 44, 6, 55, 8, 9, 64, 66, 66, 45, 54, + 64, 54, 66, 8, 9, 10, 11, 12, 66, 52, + 81, 81, 82, 50, 76, 163, 164, 165, 8, 9, + 168, 169, 170, 171, 172, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 10, 11, 12, 108, 109, + 156, 49, 32, 53, 114, 115, 36, 37, 38, 39, + 40, 41, 37, 38, 44, 125, 53, 47, 128, 51, + 208, 209, 51, 53, 51, 55, 14, 15, 11, 139, + 132, 142, 142, 53, 144, 145, 54, 145, 51, 53, 51, 51, 51, 51, 133, 147, 148, 149, 150, 151, - 160, 32, 51, 163, 164, 165, 51, 146, 168, 169, - 170, 171, 172, 152, 1, 51, 47, 51, 53, 179, - 37, 52, 52, 54, 55, 34, 13, 14, 15, 16, + 160, 51, 51, 163, 164, 165, 51, 146, 168, 169, + 170, 171, 172, 152, 1, 51, 51, 7, 37, 179, + 54, 53, 8, 9, 34, 53, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 52, 6, 10, 7, 209, - 210, 53, 8, 9, 10, 53, 216, 217, 45, 53, - 47, 53, 49, 51, 53, 51, 224, 51, 48, 48, - 51, 229, 232, 51, 233, 52, 32, 8, 9, 53, - 36, 37, 38, 39, 40, 41, 37, 52, 44, 45, - 32, 47, 53, 9, 254, 51, 52, 54, 37, 55, - 38, 32, 35, 263, 264, 36, 37, 38, 39, 40, - 41, 8, 9, 44, 45, 10, 47, 53, 53, 9, - 51, 52, 10, 32, 55, 53, 36, 37, 38, 39, - 40, 41, 8, 9, 44, 32, 10, 153, 32, 36, - 37, 38, 39, 40, 41, 53, 53, 44, 45, 53, - 47, 12, 12, 66, 228, 52, 32, 54, 55, -1, - 36, 37, 38, 39, 40, 41, -1, -1, 44, 45, - -1, 47, 8, 9, 10, 51, 52, -1, -1, 55, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, 8, 9, -1, 32, -1, -1, -1, - 36, 37, 38, 39, 40, 41, -1, -1, 44, 45, - -1, 47, -1, -1, 8, 9, 52, 32, -1, 55, - -1, 36, 37, 38, 39, 40, 41, 8, 9, 44, - 45, -1, 47, -1, -1, -1, -1, 52, 32, -1, - 55, -1, 36, 37, 38, 39, 40, 41, 8, 9, - 44, 32, -1, 47, -1, 8, 9, -1, 52, -1, - -1, 55, 8, 9, 45, -1, 47, -1, -1, -1, - 51, 52, 32, 54, 55, -1, 8, 9, -1, 32, - 8, 9, 42, 43, 37, 45, 32, 47, -1, -1, - -1, 44, 52, -1, 47, 55, 42, 8, 9, 52, - 32, 47, 55, -1, 32, -1, 52, -1, -1, 55, - 8, 9, -1, 45, -1, 47, -1, 45, -1, 47, - 52, 32, -1, 55, 52, -1, -1, 55, 8, 9, - -1, 42, -1, -1, 32, -1, 47, 8, 9, -1, - -1, 52, -1, -1, 55, -1, -1, -1, -1, 47, - -1, -1, 32, -1, 52, -1, 54, 55, -1, -1, - -1, 32, 42, -1, -1, -1, -1, 47, -1, -1, - -1, -1, 52, -1, -1, 55, 47, -1, -1, -1, - -1, 52, -1, -1, 55, 5, 6, 7, 8, 9, - 10, 11, 12, 6, 7, 8, 9, 10, 11, 12 + 27, 28, 29, 30, 31, 6, 32, 7, 208, 209, + 54, 8, 9, 10, 10, 215, 216, 54, 45, 45, + 47, 47, 49, 54, 48, 223, 54, 53, 51, 55, + 228, 231, 51, 232, 51, 32, 48, 8, 9, 36, + 37, 38, 39, 40, 41, 51, 51, 44, 45, 53, + 47, 54, 54, 253, 51, 37, 53, 32, 55, 8, + 9, 32, 53, 263, 264, 36, 37, 38, 39, 40, + 41, 54, 9, 44, 45, 52, 47, 37, 35, 38, + 51, 10, 53, 32, 55, 8, 9, 36, 37, 38, + 39, 40, 41, 54, 9, 44, 45, 32, 47, 54, + 54, 10, 10, 52, 53, 32, 55, 54, 54, 32, + 8, 9, 10, 36, 37, 38, 39, 40, 41, 153, + 54, 44, 45, 12, 47, 12, 66, -1, 51, -1, + 53, -1, 55, 246, 32, 8, 9, -1, 36, 37, + 38, 39, 40, 41, -1, -1, 44, 45, -1, 47, + -1, 8, 9, -1, -1, 53, -1, 55, -1, 32, + -1, -1, -1, 36, 37, 38, 39, 40, 41, 8, + 9, 44, 45, -1, 47, 32, 8, 9, -1, -1, + 53, -1, 55, 8, 9, -1, -1, -1, 45, -1, + 47, -1, -1, 32, 51, 52, 53, -1, 55, -1, + 32, 8, 9, 42, 43, 37, 45, 32, 47, -1, + 8, 9, 44, -1, 53, 47, 55, 8, 9, -1, + 45, 53, 47, 55, -1, 32, 8, 9, 53, -1, + 55, -1, -1, -1, 32, 42, -1, -1, -1, -1, + 47, 32, 8, 9, 42, -1, 53, -1, 55, 47, + 32, 8, 9, -1, -1, 53, 47, 55, -1, -1, + -1, 52, 53, -1, 55, 47, 32, -1, -1, -1, + 52, 53, -1, 55, -1, 32, 42, -1, -1, -1, + -1, 47, -1, -1, -1, -1, -1, 53, -1, 55, + 47, -1, -1, -1, -1, -1, 53, -1, 55, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 36, 37, + 38, 39, 40, 41, -1, -1, 44, 5, 6, 7, + 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, + 11, 12 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -850,30 +845,30 @@ static const yytype_uint8 yystos[] = 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 45, 47, 49, 59, 61, 49, 51, 62, 8, 9, 32, 36, 37, 38, 39, 40, - 41, 44, 45, 47, 51, 52, 55, 66, 81, 85, - 88, 89, 90, 91, 94, 54, 65, 81, 83, 87, + 41, 44, 45, 47, 51, 53, 55, 66, 81, 85, + 87, 88, 89, 90, 93, 52, 65, 81, 83, 86, 63, 83, 64, 81, 10, 45, 51, 70, 82, 84, - 85, 89, 90, 94, 68, 91, 51, 62, 66, 71, - 45, 51, 52, 67, 84, 87, 94, 69, 88, 78, - 88, 79, 83, 72, 83, 73, 83, 74, 83, 75, - 85, 76, 87, 77, 87, 80, 83, 48, 50, 50, - 49, 94, 94, 6, 8, 9, 92, 81, 37, 44, - 94, 96, 94, 52, 52, 9, 42, 43, 52, 91, - 94, 51, 51, 51, 85, 89, 92, 82, 52, 11, - 92, 84, 51, 52, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 60, 96, 96, 7, 94, 94, 52, - 10, 53, 53, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 53, 37, 37, 38, 44, 42, 9, - 42, 81, 83, 34, 94, 84, 54, 86, 94, 87, - 94, 83, 81, 81, 81, 81, 81, 83, 59, 92, - 33, 35, 44, 93, 94, 52, 96, 96, 96, 6, - 7, 96, 96, 96, 96, 96, 10, 10, 53, 53, - 53, 42, 53, 53, 51, 9, 32, 95, 51, 51, - 48, 48, 51, 51, 52, 53, 53, 37, 96, 96, - 94, 94, 52, 53, 87, 32, 9, 86, 87, 37, - 38, 94, 85, 35, 10, 53, 53, 37, 38, 9, - 32, 53, 94, 10, 10, 32, 53, 94, 94, 53, - 53 + 85, 88, 89, 93, 68, 90, 51, 62, 66, 71, + 45, 51, 53, 67, 84, 86, 93, 69, 87, 78, + 87, 79, 83, 72, 83, 73, 83, 74, 83, 75, + 85, 76, 86, 77, 86, 80, 83, 48, 50, 50, + 49, 93, 93, 6, 8, 9, 91, 81, 37, 44, + 93, 95, 93, 53, 53, 9, 42, 43, 53, 90, + 93, 51, 51, 51, 85, 88, 91, 82, 53, 11, + 91, 84, 51, 53, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 60, 95, 95, 7, 93, 93, 53, + 10, 54, 54, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 54, 37, 37, 38, 44, 42, 9, + 42, 81, 83, 34, 93, 84, 52, 93, 86, 93, + 83, 81, 81, 81, 81, 81, 83, 59, 91, 33, + 35, 44, 92, 93, 53, 95, 95, 95, 6, 7, + 95, 95, 95, 95, 95, 10, 10, 54, 54, 54, + 42, 54, 54, 51, 9, 32, 94, 51, 51, 48, + 48, 51, 51, 53, 54, 54, 37, 95, 95, 93, + 93, 53, 54, 86, 32, 9, 52, 86, 37, 38, + 93, 85, 35, 10, 54, 54, 37, 38, 9, 32, + 94, 54, 93, 10, 10, 32, 54, 93, 93, 54, + 54 }; #define yyerrok (yyerrstatus = 0) @@ -1917,19 +1912,19 @@ yyreduce: case 43: #line 195 "a.y" { - settext((yyvsp[(1) - (3)].addr).sym); - (yyval.addr2).from = (yyvsp[(1) - (3)].addr); - (yyval.addr2).to = (yyvsp[(3) - (3)].addr); + settext((yyvsp[(1) - (4)].addr).sym); + (yyval.addr2).from = (yyvsp[(1) - (4)].addr); + (yyval.addr2).to = (yyvsp[(4) - (4)].addr); } break; case 44: #line 201 "a.y" { - settext((yyvsp[(1) - (5)].addr).sym); - (yyval.addr2).from = (yyvsp[(1) - (5)].addr); - (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); - (yyval.addr2).to = (yyvsp[(5) - (5)].addr); + settext((yyvsp[(1) - (6)].addr).sym); + (yyval.addr2).from = (yyvsp[(1) - (6)].addr); + (yyval.addr2).from.scale = (yyvsp[(3) - (6)].lval); + (yyval.addr2).to = (yyvsp[(6) - (6)].addr); } break; @@ -2185,7 +2180,7 @@ yyreduce: break; case 83: -#line 417 "a.y" +#line 418 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_CONST; @@ -2194,16 +2189,7 @@ yyreduce: break; case 84: -#line 425 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_CONST; - (yyval.addr).offset = (yyvsp[(2) - (2)].lval); - } - break; - - case 85: -#line 431 "a.y" +#line 424 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).type = TYPE_ADDR; @@ -2215,8 +2201,8 @@ yyreduce: } break; - case 86: -#line 441 "a.y" + case 85: +#line 434 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SCONST; @@ -2224,8 +2210,8 @@ yyreduce: } break; - case 87: -#line 447 "a.y" + case 86: +#line 440 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2233,8 +2219,8 @@ yyreduce: } break; - case 88: -#line 453 "a.y" + case 87: +#line 446 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2242,8 +2228,8 @@ yyreduce: } break; - case 89: -#line 459 "a.y" + case 88: +#line 452 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2251,8 +2237,8 @@ yyreduce: } break; - case 90: -#line 465 "a.y" + case 89: +#line 458 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2260,8 +2246,8 @@ yyreduce: } break; - case 93: -#line 477 "a.y" + case 92: +#line 470 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2269,12 +2255,22 @@ yyreduce: } break; + case 93: +#line 476 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_MEM; + (yyval.addr).reg = (yyvsp[(3) - (4)].lval); + (yyval.addr).offset = (yyvsp[(1) - (4)].lval); + } + break; + case 94: #line 483 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; - (yyval.addr).reg = (yyvsp[(3) - (4)].lval); + (yyval.addr).reg = REG_SP; (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; @@ -2284,23 +2280,13 @@ yyreduce: { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; - (yyval.addr).reg = REG_SP; + (yyval.addr).reg = (yyvsp[(3) - (4)].lval); (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 96: #line 497 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_MEM; - (yyval.addr).reg = (yyvsp[(3) - (4)].lval); - (yyval.addr).offset = (yyvsp[(1) - (4)].lval); - } - break; - - case 97: -#line 504 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2311,8 +2297,21 @@ yyreduce: } break; + case 97: +#line 506 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_MEM; + (yyval.addr).reg = (yyvsp[(3) - (9)].lval); + (yyval.addr).offset = (yyvsp[(1) - (9)].lval); + (yyval.addr).index = (yyvsp[(6) - (9)].lval); + (yyval.addr).scale = (yyvsp[(8) - (9)].lval); + checkscale((yyval.addr).scale); + } + break; + case 98: -#line 513 "a.y" +#line 516 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2325,20 +2324,7 @@ yyreduce: break; case 99: -#line 523 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_MEM; - (yyval.addr).reg = (yyvsp[(3) - (9)].lval); - (yyval.addr).offset = (yyvsp[(1) - (9)].lval); - (yyval.addr).index = (yyvsp[(6) - (9)].lval); - (yyval.addr).scale = (yyvsp[(8) - (9)].lval); - checkscale((yyval.addr).scale); - } - break; - - case 100: -#line 533 "a.y" +#line 526 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2346,8 +2332,8 @@ yyreduce: } break; - case 101: -#line 539 "a.y" + case 100: +#line 532 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2355,8 +2341,8 @@ yyreduce: } break; - case 102: -#line 545 "a.y" + case 101: +#line 538 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2366,8 +2352,8 @@ yyreduce: } break; - case 103: -#line 553 "a.y" + case 102: +#line 546 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2378,15 +2364,15 @@ yyreduce: } break; - case 104: -#line 564 "a.y" + case 103: +#line 557 "a.y" { (yyval.addr) = (yyvsp[(1) - (1)].addr); } break; - case 105: -#line 568 "a.y" + case 104: +#line 561 "a.y" { (yyval.addr) = (yyvsp[(1) - (6)].addr); (yyval.addr).index = (yyvsp[(3) - (6)].lval); @@ -2395,8 +2381,8 @@ yyreduce: } break; - case 106: -#line 577 "a.y" + case 105: +#line 570 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2406,8 +2392,8 @@ yyreduce: } break; - case 107: -#line 585 "a.y" + case 106: +#line 578 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2417,166 +2403,170 @@ yyreduce: } break; - case 108: -#line 594 "a.y" + case 107: +#line 587 "a.y" { (yyval.lval) = 0; } break; - case 109: -#line 598 "a.y" + case 108: +#line 591 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 110: -#line 602 "a.y" + case 109: +#line 595 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 112: -#line 609 "a.y" + case 111: +#line 602 "a.y" { (yyval.lval) = NAME_AUTO; } break; - case 115: -#line 617 "a.y" + case 114: +#line 610 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; - case 116: -#line 621 "a.y" + case 115: +#line 614 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 117: -#line 625 "a.y" + case 116: +#line 618 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 118: -#line 629 "a.y" + case 117: +#line 622 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; - case 119: -#line 633 "a.y" + case 118: +#line 626 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; - case 120: -#line 639 "a.y" + case 119: +#line 632 "a.y" { - (yyval.lval) = ((yyvsp[(1) - (1)].lval) & 0xffffffffLL) + - ((vlong)ArgsSizeUnknown << 32); + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (1)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; + } + break; + + case 120: +#line 638 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (2)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; } break; case 121: #line 644 "a.y" { - (yyval.lval) = (-(yyvsp[(2) - (2)].lval) & 0xffffffffLL) + - ((vlong)ArgsSizeUnknown << 32); + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (3)].lval); + (yyval.addr).u.argsize = (yyvsp[(3) - (3)].lval); } break; case 122: -#line 649 "a.y" +#line 650 "a.y" { - (yyval.lval) = ((yyvsp[(1) - (3)].lval) & 0xffffffffLL) + - (((yyvsp[(3) - (3)].lval) & 0xffffLL) << 32); + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (4)].lval); + (yyval.addr).u.argsize = (yyvsp[(4) - (4)].lval); } break; - case 123: -#line 654 "a.y" - { - (yyval.lval) = (-(yyvsp[(2) - (4)].lval) & 0xffffffffLL) + - (((yyvsp[(4) - (4)].lval) & 0xffffLL) << 32); - } - break; - - case 125: -#line 662 "a.y" + case 124: +#line 659 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; - case 126: -#line 666 "a.y" + case 125: +#line 663 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; - case 127: -#line 670 "a.y" + case 126: +#line 667 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; - case 128: -#line 674 "a.y" + case 127: +#line 671 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; - case 129: -#line 678 "a.y" + case 128: +#line 675 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; - case 130: -#line 682 "a.y" + case 129: +#line 679 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; - case 131: -#line 686 "a.y" + case 130: +#line 683 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; - case 132: -#line 690 "a.y" + case 131: +#line 687 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; - case 133: -#line 694 "a.y" + case 132: +#line 691 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; - case 134: -#line 698 "a.y" + case 133: +#line 695 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } @@ -2584,7 +2574,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2588 "y.tab.c" +#line 2578 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/cmd/6g/ggen.c b/src/cmd/6g/ggen.c index c1eb62a29a..9f4b4d4ae3 100644 --- a/src/cmd/6g/ggen.c +++ b/src/cmd/6g/ggen.c @@ -21,13 +21,11 @@ defframe(Prog *ptxt) NodeList *l; Node *n; - // fill in argument size - ptxt->to.offset = rnd(curfn->type->argwid, widthptr); - - // fill in final stack size - ptxt->to.offset <<= 32; + // fill in argument size, stack size + ptxt->to.type = TYPE_TEXTSIZE; + ptxt->to.u.argsize = rnd(curfn->type->argwid, widthptr); frame = rnd(stksize+maxarg, widthreg); - ptxt->to.offset |= frame; + ptxt->to.offset = frame; // insert code to zero ambiguously live variables // so that the garbage collector only sees initialized values diff --git a/src/cmd/8a/a.y b/src/cmd/8a/a.y index 48d5a85bf7..0203d660c1 100644 --- a/src/cmd/8a/a.y +++ b/src/cmd/8a/a.y @@ -38,10 +38,6 @@ %union { Sym *sym; int32 lval; - struct { - int32 v1; - int32 v2; - } con2; double dval; char sval[8]; Addr addr; @@ -61,8 +57,7 @@ %token LSCONST LSP %token LNAME LLAB LVAR %type con expr pointer offset -%type con2 -%type mem imm imm2 reg nam rel rem rim rom omem nmem +%type mem imm reg nam rel rem rim rom omem nmem textsize %type nonnon nonrel nonrem rimnon rimrem remrim %type spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 spec11 spec12 %% @@ -193,18 +188,18 @@ spec1: /* DATA */ } spec2: /* TEXT */ - mem ',' imm2 + mem ',' '$' textsize { settext($1.sym); $$.from = $1; - $$.to = $3; + $$.to = $4; } -| mem ',' con ',' imm2 +| mem ',' con ',' '$' textsize { settext($1.sym); $$.from = $1; $$.from.scale = $3; - $$.to = $5; + $$.to = $6; } spec3: /* JMP/CALL */ @@ -453,35 +448,30 @@ imm: $$.u.dval = -$3; } -imm2: - '$' con2 - { - $$ = nullgen; - $$.type = TYPE_TEXTSIZE; - $$.offset = $2.v1; - $$.u.argsize = $2.v2; - } - -con2: +textsize: LCONST { - $$.v1 = $1; - $$.v2 = ArgsSizeUnknown; + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = ArgsSizeUnknown; } | '-' LCONST { - $$.v1 = -$2; - $$.v2 = ArgsSizeUnknown; + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = ArgsSizeUnknown; } | LCONST '-' LCONST { - $$.v1 = $1; - $$.v2 = $3; + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = $3; } | '-' LCONST '-' LCONST { - $$.v1 = -$2; - $$.v2 = $4; + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = $4; } mem: diff --git a/src/cmd/8a/y.tab.c b/src/cmd/8a/y.tab.c index 59f037c221..79439ccf8d 100644 --- a/src/cmd/8a/y.tab.c +++ b/src/cmd/8a/y.tab.c @@ -173,17 +173,13 @@ typedef union YYSTYPE { Sym *sym; int32 lval; - struct { - int32 v1; - int32 v2; - } con2; double dval; char sval[8]; Addr addr; Addr2 addr2; } /* Line 193 of yacc.c. */ -#line 187 "y.tab.c" +#line 183 "y.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -196,7 +192,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 200 "y.tab.c" +#line 196 "y.tab.c" #ifdef short # undef short @@ -411,14 +407,14 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 561 +#define YYLAST 544 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 54 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 40 +#define YYNNTS 39 /* YYNRULES -- Number of rules. */ -#define YYNRULES 132 +#define YYNRULES 131 /* YYNRULES -- Number of states. */ #define YYNSTATES 270 @@ -435,8 +431,8 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 52, 12, 5, 2, - 50, 51, 10, 8, 49, 9, 2, 11, 2, 2, + 2, 2, 2, 2, 2, 2, 50, 12, 5, 2, + 51, 52, 10, 8, 49, 9, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 46, 47, 6, 48, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -473,16 +469,16 @@ static const yytype_uint16 yyprhs[] = 23, 27, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 86, 88, 92, 96, 99, 101, 104, 106, 109, - 111, 115, 121, 125, 131, 134, 136, 139, 141, 143, - 147, 153, 157, 163, 166, 168, 172, 176, 182, 188, - 194, 198, 202, 204, 206, 208, 210, 213, 216, 218, - 220, 222, 224, 226, 231, 234, 236, 238, 240, 242, - 244, 246, 249, 252, 255, 258, 263, 269, 273, 276, - 278, 281, 285, 290, 292, 294, 296, 301, 306, 313, - 323, 333, 337, 341, 346, 352, 361, 363, 370, 376, - 384, 385, 388, 391, 393, 395, 397, 399, 401, 404, - 407, 410, 414, 416, 420, 424, 428, 432, 436, 441, - 446, 450, 454 + 111, 115, 121, 126, 133, 136, 138, 141, 143, 145, + 149, 155, 159, 165, 168, 170, 174, 178, 184, 190, + 196, 200, 204, 206, 208, 210, 212, 215, 218, 220, + 222, 224, 226, 228, 233, 236, 238, 240, 242, 244, + 246, 248, 251, 254, 257, 260, 265, 271, 275, 277, + 280, 284, 289, 291, 293, 295, 300, 305, 312, 322, + 332, 336, 340, 345, 351, 360, 362, 369, 375, 383, + 384, 387, 390, 392, 394, 396, 398, 400, 403, 406, + 409, 413, 415, 419, 423, 427, 431, 435, 440, 445, + 449, 453 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -490,7 +486,7 @@ static const yytype_int8 yyrhs[] = { 55, 0, -1, -1, -1, 55, 56, 57, -1, -1, 43, 46, 58, 57, -1, 47, -1, 59, 47, -1, - 1, 47, -1, 43, 48, 93, -1, 45, 48, 93, + 1, 47, -1, 43, 48, 92, -1, 45, 48, 92, -1, 13, 60, -1, 14, 64, -1, 15, 63, -1, 16, 61, -1, 17, 62, -1, 21, 65, -1, 19, 66, -1, 22, 67, -1, 18, 68, -1, 20, 69, @@ -499,60 +495,60 @@ static const yytype_int8 yyrhs[] = 76, -1, 30, 77, -1, -1, 49, -1, 80, 49, 78, -1, 78, 49, 80, -1, 80, 49, -1, 80, -1, 49, 78, -1, 78, -1, 49, 81, -1, 81, - -1, 83, 49, 81, -1, 89, 11, 92, 49, 83, - -1, 86, 49, 84, -1, 86, 49, 92, 49, 84, - -1, 49, 79, -1, 79, -1, 10, 89, -1, 60, - -1, 64, -1, 80, 49, 78, -1, 80, 49, 78, - 46, 36, -1, 80, 49, 78, -1, 80, 49, 78, - 46, 37, -1, 80, 49, -1, 80, -1, 80, 49, - 78, -1, 86, 49, 83, -1, 86, 49, 92, 49, - 83, -1, 82, 49, 78, 49, 92, -1, 83, 49, - 78, 49, 82, -1, 80, 49, 80, -1, 80, 49, - 80, -1, 82, -1, 86, -1, 81, -1, 88, -1, - 10, 82, -1, 10, 87, -1, 82, -1, 87, -1, - 83, -1, 78, -1, 83, -1, 92, 50, 33, 51, - -1, 43, 90, -1, 35, -1, 38, -1, 36, -1, - 39, -1, 42, -1, 37, -1, 52, 92, -1, 52, - 89, -1, 52, 41, -1, 52, 40, -1, 52, 50, - 40, 51, -1, 52, 50, 9, 40, 51, -1, 52, - 9, 40, -1, 52, 85, -1, 31, -1, 9, 31, - -1, 31, 9, 31, -1, 9, 31, 9, 31, -1, - 87, -1, 88, -1, 92, -1, 92, 50, 36, 51, - -1, 92, 50, 42, 51, -1, 92, 50, 36, 10, - 92, 51, -1, 92, 50, 36, 51, 50, 36, 10, - 92, 51, -1, 92, 50, 36, 51, 50, 37, 10, - 92, 51, -1, 50, 36, 51, -1, 50, 42, 51, - -1, 92, 50, 37, 51, -1, 50, 36, 10, 92, - 51, -1, 50, 36, 51, 50, 36, 10, 92, 51, - -1, 89, -1, 89, 50, 36, 10, 92, 51, -1, - 43, 90, 50, 91, 51, -1, 43, 6, 7, 90, - 50, 34, 51, -1, -1, 8, 92, -1, 9, 92, - -1, 34, -1, 42, -1, 32, -1, 31, -1, 45, - -1, 9, 92, -1, 8, 92, -1, 53, 92, -1, - 50, 93, 51, -1, 92, -1, 93, 8, 93, -1, - 93, 9, 93, -1, 93, 10, 93, -1, 93, 11, - 93, -1, 93, 12, 93, -1, 93, 6, 6, 93, - -1, 93, 7, 7, 93, -1, 93, 5, 93, -1, - 93, 4, 93, -1, 93, 3, 93, -1 + -1, 83, 49, 81, -1, 88, 11, 91, 49, 83, + -1, 85, 49, 50, 84, -1, 85, 49, 91, 49, + 50, 84, -1, 49, 79, -1, 79, -1, 10, 88, + -1, 60, -1, 64, -1, 80, 49, 78, -1, 80, + 49, 78, 46, 36, -1, 80, 49, 78, -1, 80, + 49, 78, 46, 37, -1, 80, 49, -1, 80, -1, + 80, 49, 78, -1, 85, 49, 83, -1, 85, 49, + 91, 49, 83, -1, 82, 49, 78, 49, 91, -1, + 83, 49, 78, 49, 82, -1, 80, 49, 80, -1, + 80, 49, 80, -1, 82, -1, 85, -1, 81, -1, + 87, -1, 10, 82, -1, 10, 86, -1, 82, -1, + 86, -1, 83, -1, 78, -1, 83, -1, 91, 51, + 33, 52, -1, 43, 89, -1, 35, -1, 38, -1, + 36, -1, 39, -1, 42, -1, 37, -1, 50, 91, + -1, 50, 88, -1, 50, 41, -1, 50, 40, -1, + 50, 51, 40, 52, -1, 50, 51, 9, 40, 52, + -1, 50, 9, 40, -1, 31, -1, 9, 31, -1, + 31, 9, 31, -1, 9, 31, 9, 31, -1, 86, + -1, 87, -1, 91, -1, 91, 51, 36, 52, -1, + 91, 51, 42, 52, -1, 91, 51, 36, 10, 91, + 52, -1, 91, 51, 36, 52, 51, 36, 10, 91, + 52, -1, 91, 51, 36, 52, 51, 37, 10, 91, + 52, -1, 51, 36, 52, -1, 51, 42, 52, -1, + 91, 51, 37, 52, -1, 51, 36, 10, 91, 52, + -1, 51, 36, 52, 51, 36, 10, 91, 52, -1, + 88, -1, 88, 51, 36, 10, 91, 52, -1, 43, + 89, 51, 90, 52, -1, 43, 6, 7, 89, 51, + 34, 52, -1, -1, 8, 91, -1, 9, 91, -1, + 34, -1, 42, -1, 32, -1, 31, -1, 45, -1, + 9, 91, -1, 8, 91, -1, 53, 91, -1, 51, + 92, 52, -1, 91, -1, 92, 8, 92, -1, 92, + 9, 92, -1, 92, 10, 92, -1, 92, 11, 92, + -1, 92, 12, 92, -1, 92, 6, 6, 92, -1, + 92, 7, 7, 92, -1, 92, 5, 92, -1, 92, + 4, 92, -1, 92, 3, 92, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 69, 69, 71, 70, 78, 77, 86, 87, 88, - 91, 96, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 122, 126, 133, 140, 147, 152, 159, 164, 171, 176, - 181, 188, 196, 202, 211, 216, 221, 229, 230, 233, - 238, 248, 253, 263, 268, 273, 280, 285, 293, 301, - 311, 320, 331, 332, 335, 336, 337, 341, 345, 346, - 347, 350, 351, 354, 360, 371, 377, 383, 389, 395, - 401, 409, 415, 425, 431, 437, 443, 449, 457, 466, - 471, 476, 481, 488, 489, 492, 499, 506, 513, 523, - 533, 543, 549, 555, 562, 571, 582, 586, 595, 603, - 613, 616, 620, 626, 627, 631, 634, 635, 639, 643, - 647, 651, 657, 658, 662, 666, 670, 674, 678, 682, - 686, 690, 694 + 0, 64, 64, 66, 65, 73, 72, 81, 82, 83, + 86, 91, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 117, 121, 128, 135, 142, 147, 154, 159, 166, 171, + 176, 183, 191, 197, 206, 211, 216, 224, 225, 228, + 233, 243, 248, 258, 263, 268, 275, 280, 288, 296, + 306, 315, 326, 327, 330, 331, 332, 336, 340, 341, + 342, 345, 346, 349, 355, 366, 372, 378, 384, 390, + 396, 404, 410, 420, 426, 432, 438, 444, 452, 458, + 464, 470, 478, 479, 482, 489, 496, 503, 513, 523, + 533, 539, 545, 552, 561, 572, 576, 585, 593, 603, + 606, 610, 616, 617, 621, 624, 625, 629, 633, 637, + 641, 647, 648, 652, 656, 660, 664, 668, 672, 676, + 680, 684 }; #endif @@ -567,12 +563,12 @@ static const char *const yytname[] = "LTYPEM", "LTYPEI", "LTYPEG", "LTYPEXC", "LTYPEX", "LTYPEPC", "LTYPEF", "LCONST", "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'", - "';'", "'='", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1", + "';'", "'='", "','", "'$'", "'('", "')'", "'~'", "$accept", "prog", "@1", "line", "@2", "inst", "nonnon", "rimrem", "remrim", "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6", "spec7", "spec8", "spec9", "spec10", "spec11", "spec12", "rem", "rom", "rim", - "rel", "reg", "imm", "imm2", "con2", "mem", "omem", "nmem", "nam", - "offset", "pointer", "con", "expr", 0 + "rel", "reg", "imm", "textsize", "mem", "omem", "nmem", "nam", "offset", + "pointer", "con", "expr", 0 }; #endif @@ -586,7 +582,7 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 58, 59, 61, 44, - 40, 41, 36, 126 + 36, 40, 41, 126 }; # endif @@ -601,12 +597,12 @@ static const yytype_uint8 yyr1[] = 70, 71, 71, 72, 72, 72, 73, 73, 74, 75, 76, 77, 78, 78, 79, 79, 79, 79, 79, 79, 79, 80, 80, 81, 81, 82, 82, 82, 82, 82, - 82, 83, 83, 83, 83, 83, 83, 83, 84, 85, - 85, 85, 85, 86, 86, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 88, 88, 89, 89, - 90, 90, 90, 91, 91, 91, 92, 92, 92, 92, - 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93 + 82, 83, 83, 83, 83, 83, 83, 83, 84, 84, + 84, 84, 85, 85, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 87, 87, 88, 88, 89, + 89, 89, 90, 90, 90, 91, 91, 91, 91, 91, + 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -616,16 +612,16 @@ static const yytype_uint8 yyr2[] = 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 3, 3, 2, 1, 2, 1, 2, 1, - 3, 5, 3, 5, 2, 1, 2, 1, 1, 3, + 3, 5, 4, 6, 2, 1, 2, 1, 1, 3, 5, 3, 5, 2, 1, 3, 3, 5, 5, 5, 3, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 4, 5, 3, 2, 1, - 2, 3, 4, 1, 1, 1, 4, 4, 6, 9, - 9, 3, 3, 4, 5, 8, 1, 6, 5, 7, - 0, 2, 2, 1, 1, 1, 1, 1, 2, 2, - 2, 3, 1, 3, 3, 3, 3, 3, 4, 4, - 3, 3, 3 + 1, 2, 2, 2, 2, 4, 5, 3, 1, 2, + 3, 4, 1, 1, 1, 4, 4, 6, 9, 9, + 3, 3, 4, 5, 8, 1, 6, 5, 7, 0, + 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, + 3, 1, 3, 3, 3, 3, 3, 4, 4, 3, + 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -636,30 +632,30 @@ static const yytype_uint8 yydefact[] = 2, 3, 1, 0, 0, 30, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 0, 9, 31, - 12, 0, 0, 116, 75, 77, 80, 76, 78, 79, - 110, 117, 0, 0, 0, 13, 37, 62, 63, 93, - 94, 106, 95, 0, 14, 71, 35, 72, 15, 0, - 16, 0, 0, 110, 0, 20, 45, 64, 68, 70, - 69, 65, 95, 18, 0, 31, 47, 48, 21, 110, + 12, 0, 0, 115, 75, 77, 80, 76, 78, 79, + 109, 116, 0, 0, 0, 13, 37, 62, 63, 92, + 93, 105, 94, 0, 14, 71, 35, 72, 15, 0, + 16, 0, 0, 109, 0, 20, 45, 64, 68, 70, + 69, 65, 94, 18, 0, 31, 47, 48, 21, 109, 0, 0, 17, 39, 0, 0, 19, 0, 22, 0, 23, 0, 24, 54, 25, 0, 26, 0, 27, 0, - 28, 0, 29, 0, 5, 0, 0, 8, 119, 118, - 0, 0, 0, 0, 36, 0, 0, 122, 0, 120, + 28, 0, 29, 0, 5, 0, 0, 8, 118, 117, + 0, 0, 0, 0, 36, 0, 0, 121, 0, 119, 0, 0, 0, 84, 83, 0, 82, 81, 34, 0, 0, 66, 67, 46, 74, 0, 44, 0, 0, 74, 38, 0, 0, 0, 0, 0, 53, 0, 0, 0, - 0, 0, 0, 10, 11, 110, 111, 112, 0, 0, - 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 121, 0, 0, 0, 0, 87, 0, 0, - 32, 33, 0, 0, 40, 0, 42, 0, 49, 51, - 55, 56, 0, 0, 0, 60, 61, 6, 0, 115, - 113, 114, 0, 0, 0, 132, 131, 130, 0, 0, - 123, 124, 125, 126, 127, 0, 0, 96, 103, 97, - 0, 85, 73, 0, 0, 89, 88, 0, 0, 0, - 0, 0, 0, 0, 108, 104, 0, 128, 129, 0, - 0, 0, 86, 41, 90, 0, 43, 50, 52, 57, - 58, 59, 0, 0, 107, 98, 0, 0, 0, 91, - 109, 0, 0, 0, 92, 105, 0, 0, 99, 100 + 0, 0, 0, 10, 11, 109, 110, 111, 0, 0, + 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 0, 0, 0, 0, 87, 0, 0, + 32, 33, 0, 0, 40, 0, 0, 49, 51, 55, + 56, 0, 0, 0, 60, 61, 6, 0, 114, 112, + 113, 0, 0, 0, 131, 130, 129, 0, 0, 122, + 123, 124, 125, 126, 0, 0, 95, 102, 96, 0, + 85, 73, 0, 0, 88, 42, 0, 0, 0, 0, + 0, 0, 0, 107, 103, 0, 127, 128, 0, 0, + 0, 86, 41, 89, 0, 0, 50, 52, 57, 58, + 59, 0, 0, 106, 97, 0, 0, 0, 90, 43, + 108, 0, 0, 0, 91, 104, 0, 0, 98, 99 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -668,7 +664,7 @@ static const yytype_int16 yydefgoto[] = -1, 1, 3, 26, 152, 27, 30, 58, 60, 54, 45, 82, 73, 86, 65, 78, 88, 90, 92, 94, 96, 98, 100, 102, 55, 66, 56, 67, 47, 57, - 186, 226, 48, 49, 50, 51, 113, 202, 52, 118 + 225, 48, 49, 50, 51, 113, 201, 52, 118 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -676,42 +672,42 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -89 static const yytype_int16 yypact[] = { - -89, 8, -89, 211, -33, -23, 288, 308, 308, 360, - 236, -11, 340, 54, 41, 308, 308, 308, 41, 106, - -13, 308, 308, 62, -4, -89, -89, 45, -89, -89, - -89, 484, 484, -89, -89, -89, -89, -89, -89, -89, - 81, -89, 360, 413, 484, -89, -89, -89, -89, -89, - -89, 38, 48, 407, -89, -89, -2, -89, -89, 64, - -89, 78, 360, 81, 256, -89, -89, -89, -89, -89, - -89, -89, 61, -89, 107, 360, -89, -89, -89, 59, - 431, 484, -89, -89, 86, 79, -89, 87, -89, 89, - -89, 91, -89, 97, -89, 102, -89, 116, -89, 120, - -89, 148, -89, 151, -89, 484, 484, -89, -89, -89, - 123, 484, 484, 105, -89, 1, 150, -89, 169, -89, - 166, 9, 69, -89, -89, 456, -89, -89, -89, 360, - 308, -89, -89, -89, 105, 392, -89, -17, 484, -89, - -89, 431, 170, 460, 360, 360, 360, 469, 360, 360, - 308, 308, 211, 179, 179, 59, -89, -89, 6, 484, - 154, -89, 484, 484, 484, 201, 149, 484, 484, 484, - 484, 484, -89, 198, 13, 158, 159, -89, 480, 160, - -89, -89, 162, 165, -89, 0, -89, 167, 171, 172, - -89, -89, 193, 199, 200, -89, -89, -89, 197, -89, - -89, -89, 168, 204, 214, 534, 542, 549, 484, 484, - 113, 113, -89, -89, -89, 484, 484, 207, -89, -89, - 208, -89, -89, -13, 220, 251, -89, 209, 226, 231, - -13, 484, 106, 229, -89, -89, 259, 184, 184, 219, - 225, 80, -89, -89, 268, 249, -89, -89, -89, -89, - -89, -89, 232, 484, -89, -89, 272, 274, 269, -89, - -89, 239, 484, 484, -89, -89, 252, 253, -89, -89 + -89, 8, -89, 211, -36, -35, 164, 283, 283, 331, + 235, 9, 307, 41, 409, 283, 283, 283, 409, 502, + -18, 283, 283, 60, 30, -89, -89, 21, -89, -89, + -89, 466, 466, -89, -89, -89, -89, -89, -89, -89, + 79, -89, 331, 394, 466, -89, -89, -89, -89, -89, + -89, 38, 46, 370, -89, -89, 58, -89, -89, 64, + -89, 65, 331, 79, 259, -89, -89, -89, -89, -89, + -89, -89, 66, -89, 105, 331, -89, -89, -89, 31, + 418, 466, -89, -89, 69, 71, -89, 75, -89, 76, + -89, 78, -89, 80, -89, 87, -89, 89, -89, 91, + -89, 93, -89, 95, -89, 466, 466, -89, -89, -89, + 116, 466, 466, 94, -89, -1, 96, -89, 171, -89, + 110, -11, 90, -89, -89, 425, -89, -89, -89, 331, + 283, -89, -89, -89, 94, 355, -89, 67, 466, -89, + -89, 418, 118, 435, 331, 331, 331, 442, 331, 331, + 283, 283, 211, 181, 181, 31, -89, -89, 35, 466, + 104, -89, 466, 466, 466, 150, 158, 466, 466, 466, + 466, 466, -89, 159, 10, 142, 144, -89, 459, 156, + -89, -89, 166, 161, -89, 7, 162, 170, 173, -89, + -89, 197, 198, 199, -89, -89, -89, 200, -89, -89, + -89, 203, 205, 213, 516, 524, 253, 466, 466, 53, + 53, -89, -89, -89, 466, 466, 224, -89, -89, 227, + -89, -89, -18, 219, 267, -89, 231, 246, 250, -18, + 466, 502, 249, -89, -89, 279, 36, 36, 241, 247, + 74, -89, -89, 291, 272, 7, -89, -89, -89, -89, + -89, 254, 466, -89, -89, 295, 297, 277, -89, -89, + -89, 261, 466, 466, -89, -89, 265, 271, -89, -89 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -89, -89, -89, 153, -89, -89, 290, -89, -89, -89, - 295, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, 18, 246, 20, -7, -9, -8, - 84, -89, 51, -3, -6, 4, -50, -89, -10, -88 + -89, -89, -89, 172, -89, -89, 299, -89, -89, -89, + 315, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, 18, 266, 20, -7, -9, -8, + 84, 5, -3, -6, 4, -50, -89, -10, -88 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -721,124 +717,120 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 72, 68, 69, 85, 71, 84, 83, 70, 2, 224, - 97, 159, 99, 134, 28, 74, 182, 153, 154, 174, - 175, 108, 109, 216, 46, 176, 29, 61, 59, 139, - 46, 225, 40, 117, 119, 89, 91, 93, 199, 53, - 200, 101, 103, 127, 106, 174, 175, 128, 201, 31, - 32, 176, 160, 131, 72, 68, 69, 126, 71, 132, - 114, 70, 31, 32, 217, 87, 133, 111, 112, 95, - 85, 117, 33, 140, 205, 206, 207, 31, 32, 210, - 211, 212, 213, 214, 40, 33, 41, 110, 120, 111, - 112, 43, 107, 114, 44, 117, 117, 79, 121, 41, - 33, 156, 157, 80, 81, 198, 53, 44, 104, 177, - 105, 137, 109, 129, 41, 117, 256, 257, 138, 81, - 237, 238, 44, 169, 170, 171, 131, 130, 183, 142, - 155, 85, 132, 187, 184, 141, 143, 192, 144, 191, - 145, 34, 35, 36, 37, 38, 146, 180, 39, 203, - 181, 147, 117, 117, 117, 158, 209, 117, 117, 117, - 117, 117, 188, 189, 190, 148, 193, 194, 109, 149, - 195, 196, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 167, 168, 169, 170, 171, 150, 117, 117, - 151, 161, 173, 182, 204, 239, 240, 208, 215, 218, - 219, 221, 4, 222, 223, 243, 227, 228, 229, 234, - 172, 250, 249, 251, 5, 6, 7, 8, 9, 10, + 72, 68, 69, 85, 71, 84, 83, 70, 2, 159, + 97, 28, 99, 134, 29, 74, 223, 153, 154, 87, + 215, 108, 109, 95, 46, 174, 175, 61, 59, 139, + 46, 176, 53, 117, 119, 89, 91, 93, 224, 111, + 112, 101, 103, 127, 167, 168, 169, 170, 171, 31, + 32, 160, 40, 131, 72, 68, 69, 126, 71, 132, + 114, 70, 216, 169, 170, 171, 133, 198, 107, 199, + 85, 117, 33, 140, 204, 205, 206, 200, 106, 209, + 210, 211, 212, 213, 79, 110, 41, 111, 112, 120, + 80, 53, 81, 114, 44, 117, 117, 121, 31, 32, + 182, 156, 157, 174, 175, 197, 104, 128, 105, 176, + 255, 256, 109, 129, 130, 117, 138, 137, 141, 236, + 237, 33, 142, 155, 143, 144, 131, 145, 183, 146, + 177, 85, 132, 186, 184, 41, 147, 191, 148, 190, + 149, 81, 150, 44, 151, 158, 173, 180, 161, 202, + 181, 182, 117, 117, 117, 203, 207, 117, 117, 117, + 117, 117, 187, 188, 189, 208, 192, 193, 109, 214, + 194, 195, 31, 32, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 217, 33, 218, 117, 117, 34, + 35, 36, 37, 38, 238, 239, 39, 40, 220, 41, + 222, 226, 4, 42, 242, 43, 227, 44, 221, 228, + 249, 248, 250, 172, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 230, 261, 31, 32, 62, 233, 231, 232, - 236, 244, 266, 267, 23, 235, 24, 241, 25, 242, - 245, 185, 247, 252, 31, 32, 135, 33, 248, 253, - 254, 34, 35, 36, 37, 38, 255, 258, 39, 63, - 259, 41, 262, 260, 263, 64, 43, 33, 53, 44, - 265, 34, 35, 36, 37, 38, 31, 32, 39, 63, - 264, 41, 76, 268, 269, 197, 43, 77, 53, 44, - 136, 246, 0, 0, 0, 0, 31, 32, 0, 33, - 0, 0, 0, 34, 35, 36, 37, 38, 0, 0, - 39, 40, 0, 41, 0, 0, 0, 42, 43, 33, - 0, 44, 0, 34, 35, 36, 37, 38, 31, 32, - 39, 40, 0, 41, 0, 0, 0, 0, 43, 0, - 53, 44, 0, 0, 0, 0, 0, 0, 31, 32, - 0, 33, 0, 0, 0, 34, 35, 36, 37, 38, - 0, 0, 39, 40, 0, 41, 0, 0, 0, 75, - 43, 33, 0, 44, 0, 34, 35, 36, 37, 38, - 31, 32, 39, 40, 0, 41, 0, 0, 0, 0, - 43, 0, 0, 44, 0, 31, 122, 0, 0, 0, - 0, 31, 32, 33, 0, 0, 0, 34, 35, 36, - 37, 38, 0, 0, 39, 0, 0, 41, 33, 31, - 32, 0, 43, 0, 33, 44, 0, 123, 124, 115, - 40, 0, 41, 0, 0, 116, 0, 125, 41, 0, - 44, 0, 33, 81, 31, 178, 44, 0, 31, 32, - 0, 0, 0, 0, 79, 0, 41, 31, 32, 0, - 0, 81, 0, 0, 44, 0, 0, 33, 31, 32, - 0, 33, 31, 32, 0, 0, 179, 0, 0, 0, - 33, 41, 0, 0, 0, 41, 81, 0, 0, 44, - 81, 33, 185, 44, 41, 33, 0, 0, 0, 81, - 220, 53, 44, 0, 0, 41, 0, 0, 0, 41, - 81, 0, 0, 44, 81, 0, 0, 44, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 164, 165, 166, - 167, 168, 169, 170, 171, 165, 166, 167, 168, 169, - 170, 171 + 21, 22, 261, 31, 32, 62, 229, 230, 231, 235, + 243, 232, 266, 267, 23, 233, 24, 234, 25, 165, + 166, 167, 168, 169, 170, 171, 33, 31, 32, 135, + 34, 35, 36, 37, 38, 240, 244, 39, 63, 241, + 41, 245, 246, 251, 64, 53, 43, 247, 44, 252, + 33, 31, 32, 253, 34, 35, 36, 37, 38, 254, + 257, 39, 63, 258, 41, 262, 260, 263, 264, 53, + 43, 76, 44, 265, 33, 31, 32, 268, 34, 35, + 36, 37, 38, 269, 196, 39, 40, 77, 41, 259, + 136, 0, 0, 53, 43, 0, 44, 0, 33, 31, + 32, 0, 34, 35, 36, 37, 38, 0, 0, 39, + 40, 0, 41, 0, 0, 0, 75, 0, 43, 0, + 44, 0, 33, 31, 32, 0, 34, 35, 36, 37, + 38, 0, 0, 39, 40, 0, 41, 0, 31, 122, + 0, 0, 43, 0, 44, 0, 33, 0, 0, 0, + 34, 35, 36, 37, 38, 0, 0, 39, 0, 0, + 41, 33, 31, 32, 0, 0, 43, 0, 44, 0, + 123, 124, 0, 40, 0, 41, 0, 31, 32, 0, + 0, 125, 0, 44, 0, 33, 31, 32, 0, 0, + 115, 0, 0, 31, 178, 0, 116, 0, 0, 41, + 33, 0, 0, 31, 32, 81, 0, 44, 0, 33, + 31, 32, 40, 0, 41, 0, 33, 0, 0, 0, + 43, 79, 44, 41, 0, 179, 33, 31, 32, 81, + 41, 44, 0, 33, 31, 32, 81, 0, 44, 0, + 41, 0, 0, 0, 0, 185, 81, 41, 44, 0, + 33, 0, 53, 81, 0, 44, 0, 33, 0, 219, + 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 81, 41, 44, 0, 0, 0, 0, 81, 0, 44, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 164, + 165, 166, 167, 168, 169, 170, 171, 34, 35, 36, + 37, 38, 0, 0, 39 }; static const yytype_int16 yycheck[] = { - 10, 10, 10, 13, 10, 13, 13, 10, 0, 9, - 19, 10, 20, 63, 47, 11, 33, 105, 106, 36, - 37, 31, 32, 10, 6, 42, 49, 9, 8, 79, - 12, 31, 43, 43, 44, 15, 16, 17, 32, 52, - 34, 21, 22, 53, 48, 36, 37, 49, 42, 8, - 9, 42, 51, 62, 64, 64, 64, 53, 64, 62, - 42, 64, 8, 9, 51, 14, 62, 8, 9, 18, - 80, 81, 31, 80, 162, 163, 164, 8, 9, 167, - 168, 169, 170, 171, 43, 31, 45, 6, 50, 8, - 9, 50, 47, 75, 53, 105, 106, 43, 50, 45, - 31, 111, 112, 49, 50, 155, 52, 53, 46, 40, - 48, 50, 122, 49, 45, 125, 36, 37, 11, 50, - 208, 209, 53, 10, 11, 12, 135, 49, 138, 50, - 7, 141, 135, 143, 141, 49, 49, 147, 49, 147, - 49, 35, 36, 37, 38, 39, 49, 129, 42, 159, - 130, 49, 162, 163, 164, 50, 7, 167, 168, 169, - 170, 171, 144, 145, 146, 49, 148, 149, 178, 49, - 150, 151, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 8, 9, 10, 11, 12, 49, 208, 209, - 49, 51, 36, 33, 50, 215, 216, 6, 10, 51, - 51, 51, 1, 51, 49, 223, 49, 46, 46, 51, - 51, 231, 230, 232, 13, 14, 15, 16, 17, 18, + 10, 10, 10, 13, 10, 13, 13, 10, 0, 10, + 19, 47, 20, 63, 49, 11, 9, 105, 106, 14, + 10, 31, 32, 18, 6, 36, 37, 9, 8, 79, + 12, 42, 50, 43, 44, 15, 16, 17, 31, 8, + 9, 21, 22, 53, 8, 9, 10, 11, 12, 8, + 9, 52, 43, 62, 64, 64, 64, 53, 64, 62, + 42, 64, 52, 10, 11, 12, 62, 32, 47, 34, + 80, 81, 31, 80, 162, 163, 164, 42, 48, 167, + 168, 169, 170, 171, 43, 6, 45, 8, 9, 51, + 49, 50, 51, 75, 53, 105, 106, 51, 8, 9, + 33, 111, 112, 36, 37, 155, 46, 49, 48, 42, + 36, 37, 122, 49, 49, 125, 11, 51, 49, 207, + 208, 31, 51, 7, 49, 49, 135, 49, 138, 49, + 40, 141, 135, 143, 141, 45, 49, 147, 49, 147, + 49, 51, 49, 53, 49, 51, 36, 129, 52, 159, + 130, 33, 162, 163, 164, 51, 6, 167, 168, 169, + 170, 171, 144, 145, 146, 7, 148, 149, 178, 10, + 150, 151, 8, 9, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 52, 31, 52, 207, 208, 35, + 36, 37, 38, 39, 214, 215, 42, 43, 52, 45, + 49, 49, 1, 49, 222, 51, 46, 53, 52, 46, + 230, 229, 231, 52, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 49, 253, 8, 9, 10, 50, 49, 49, - 36, 31, 262, 263, 43, 51, 45, 50, 47, 51, - 9, 52, 36, 34, 8, 9, 10, 31, 37, 10, - 51, 35, 36, 37, 38, 39, 51, 9, 42, 43, - 31, 45, 10, 51, 10, 49, 50, 31, 52, 53, - 51, 35, 36, 37, 38, 39, 8, 9, 42, 43, - 31, 45, 12, 51, 51, 152, 50, 12, 52, 53, - 64, 227, -1, -1, -1, -1, 8, 9, -1, 31, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - 42, 43, -1, 45, -1, -1, -1, 49, 50, 31, - -1, 53, -1, 35, 36, 37, 38, 39, 8, 9, - 42, 43, -1, 45, -1, -1, -1, -1, 50, -1, - 52, 53, -1, -1, -1, -1, -1, -1, 8, 9, - -1, 31, -1, -1, -1, 35, 36, 37, 38, 39, - -1, -1, 42, 43, -1, 45, -1, -1, -1, 49, - 50, 31, -1, 53, -1, 35, 36, 37, 38, 39, - 8, 9, 42, 43, -1, 45, -1, -1, -1, -1, - 50, -1, -1, 53, -1, 8, 9, -1, -1, -1, - -1, 8, 9, 31, -1, -1, -1, 35, 36, 37, - 38, 39, -1, -1, 42, -1, -1, 45, 31, 8, - 9, -1, 50, -1, 31, 53, -1, 40, 41, 36, - 43, -1, 45, -1, -1, 42, -1, 50, 45, -1, - 53, -1, 31, 50, 8, 9, 53, -1, 8, 9, - -1, -1, -1, -1, 43, -1, 45, 8, 9, -1, - -1, 50, -1, -1, 53, -1, -1, 31, 8, 9, - -1, 31, 8, 9, -1, -1, 40, -1, -1, -1, - 31, 45, -1, -1, -1, 45, 50, -1, -1, 53, - 50, 31, 52, 53, 45, 31, -1, -1, -1, 50, - 40, 52, 53, -1, -1, 45, -1, -1, -1, 45, - 50, -1, -1, 53, 50, -1, -1, 53, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, - 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, - 11, 12 + 29, 30, 252, 8, 9, 10, 49, 49, 49, 36, + 31, 51, 262, 263, 43, 52, 45, 52, 47, 6, + 7, 8, 9, 10, 11, 12, 31, 8, 9, 10, + 35, 36, 37, 38, 39, 51, 9, 42, 43, 52, + 45, 50, 36, 34, 49, 50, 51, 37, 53, 10, + 31, 8, 9, 52, 35, 36, 37, 38, 39, 52, + 9, 42, 43, 31, 45, 10, 52, 10, 31, 50, + 51, 12, 53, 52, 31, 8, 9, 52, 35, 36, + 37, 38, 39, 52, 152, 42, 43, 12, 45, 245, + 64, -1, -1, 50, 51, -1, 53, -1, 31, 8, + 9, -1, 35, 36, 37, 38, 39, -1, -1, 42, + 43, -1, 45, -1, -1, -1, 49, -1, 51, -1, + 53, -1, 31, 8, 9, -1, 35, 36, 37, 38, + 39, -1, -1, 42, 43, -1, 45, -1, 8, 9, + -1, -1, 51, -1, 53, -1, 31, -1, -1, -1, + 35, 36, 37, 38, 39, -1, -1, 42, -1, -1, + 45, 31, 8, 9, -1, -1, 51, -1, 53, -1, + 40, 41, -1, 43, -1, 45, -1, 8, 9, -1, + -1, 51, -1, 53, -1, 31, 8, 9, -1, -1, + 36, -1, -1, 8, 9, -1, 42, -1, -1, 45, + 31, -1, -1, 8, 9, 51, -1, 53, -1, 31, + 8, 9, 43, -1, 45, -1, 31, -1, -1, -1, + 51, 43, 53, 45, -1, 40, 31, 8, 9, 51, + 45, 53, -1, 31, 8, 9, 51, -1, 53, -1, + 45, -1, -1, -1, -1, 50, 51, 45, 53, -1, + 31, -1, 50, 51, -1, 53, -1, 31, -1, 40, + -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, + 51, 45, 53, -1, -1, -1, -1, 51, -1, 53, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, + 6, 7, 8, 9, 10, 11, 12, 35, 36, 37, + 38, 39, -1, -1, 42 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -849,29 +841,29 @@ static const yytype_uint8 yystos[] = 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 43, 45, 47, 57, 59, 47, 49, 60, 8, 9, 31, 35, 36, 37, 38, 39, 42, - 43, 45, 49, 50, 53, 64, 78, 82, 86, 87, - 88, 89, 92, 52, 63, 78, 80, 83, 61, 80, + 43, 45, 49, 51, 53, 64, 78, 82, 85, 86, + 87, 88, 91, 50, 63, 78, 80, 83, 61, 80, 62, 78, 10, 43, 49, 68, 79, 81, 82, 83, - 87, 88, 92, 66, 89, 49, 60, 64, 69, 43, - 49, 50, 65, 81, 83, 92, 67, 86, 70, 80, - 71, 80, 72, 80, 73, 86, 74, 82, 75, 83, - 76, 80, 77, 80, 46, 48, 48, 47, 92, 92, - 6, 8, 9, 90, 78, 36, 42, 92, 93, 92, - 50, 50, 9, 40, 41, 50, 89, 92, 49, 49, - 49, 82, 87, 89, 90, 10, 79, 50, 11, 90, - 81, 49, 50, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 58, 93, 93, 7, 92, 92, 50, 10, - 51, 51, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 51, 36, 36, 37, 42, 40, 9, 40, - 78, 80, 33, 92, 81, 52, 84, 92, 78, 78, - 78, 83, 92, 78, 78, 80, 80, 57, 90, 32, - 34, 42, 91, 92, 50, 93, 93, 93, 6, 7, - 93, 93, 93, 93, 93, 10, 10, 51, 51, 51, - 40, 51, 51, 49, 9, 31, 85, 49, 46, 46, - 49, 49, 49, 50, 51, 51, 36, 93, 93, 92, - 92, 50, 51, 83, 31, 9, 84, 36, 37, 83, - 92, 82, 34, 10, 51, 51, 36, 37, 9, 31, - 51, 92, 10, 10, 31, 51, 92, 92, 51, 51 + 86, 87, 91, 66, 88, 49, 60, 64, 69, 43, + 49, 51, 65, 81, 83, 91, 67, 85, 70, 80, + 71, 80, 72, 80, 73, 85, 74, 82, 75, 83, + 76, 80, 77, 80, 46, 48, 48, 47, 91, 91, + 6, 8, 9, 89, 78, 36, 42, 91, 92, 91, + 51, 51, 9, 40, 41, 51, 88, 91, 49, 49, + 49, 82, 86, 88, 89, 10, 79, 51, 11, 89, + 81, 49, 51, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 58, 92, 92, 7, 91, 91, 51, 10, + 52, 52, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 52, 36, 36, 37, 42, 40, 9, 40, + 78, 80, 33, 91, 81, 50, 91, 78, 78, 78, + 83, 91, 78, 78, 80, 80, 57, 89, 32, 34, + 42, 90, 91, 51, 92, 92, 92, 6, 7, 92, + 92, 92, 92, 92, 10, 10, 52, 52, 52, 40, + 52, 52, 49, 9, 31, 84, 49, 46, 46, 49, + 49, 49, 51, 52, 52, 36, 92, 92, 91, 91, + 51, 52, 83, 31, 9, 50, 36, 37, 83, 91, + 82, 34, 10, 52, 52, 36, 37, 9, 31, 84, + 52, 91, 10, 10, 31, 52, 91, 91, 52, 52 }; #define yyerrok (yyerrstatus = 0) @@ -1686,14 +1678,14 @@ yyreduce: switch (yyn) { case 3: -#line 71 "a.y" +#line 66 "a.y" { stmtline = lineno; } break; case 5: -#line 78 "a.y" +#line 73 "a.y" { (yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym)); if((yyvsp[(1) - (2)].sym)->type == LLAB && (yyvsp[(1) - (2)].sym)->value != pc) @@ -1704,7 +1696,7 @@ yyreduce: break; case 10: -#line 92 "a.y" +#line 87 "a.y" { (yyvsp[(1) - (3)].sym)->type = LVAR; (yyvsp[(1) - (3)].sym)->value = (yyvsp[(3) - (3)].lval); @@ -1712,7 +1704,7 @@ yyreduce: break; case 11: -#line 97 "a.y" +#line 92 "a.y" { if((yyvsp[(1) - (3)].sym)->value != (yyvsp[(3) - (3)].lval)) yyerror("redeclaration of %s", (yyvsp[(1) - (3)].sym)->name); @@ -1721,97 +1713,97 @@ yyreduce: break; case 12: -#line 102 "a.y" +#line 97 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 13: -#line 103 "a.y" +#line 98 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 14: -#line 104 "a.y" +#line 99 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 15: -#line 105 "a.y" +#line 100 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 16: -#line 106 "a.y" +#line 101 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 17: -#line 107 "a.y" +#line 102 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 18: -#line 108 "a.y" +#line 103 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 19: -#line 109 "a.y" +#line 104 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 20: -#line 110 "a.y" +#line 105 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 21: -#line 111 "a.y" +#line 106 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 22: -#line 112 "a.y" +#line 107 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 23: -#line 113 "a.y" +#line 108 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 24: -#line 114 "a.y" +#line 109 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 25: -#line 115 "a.y" +#line 110 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 26: -#line 116 "a.y" +#line 111 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 27: -#line 117 "a.y" +#line 112 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 28: -#line 118 "a.y" +#line 113 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 29: -#line 119 "a.y" +#line 114 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 30: -#line 122 "a.y" +#line 117 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; @@ -1819,7 +1811,7 @@ yyreduce: break; case 31: -#line 127 "a.y" +#line 122 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; @@ -1827,7 +1819,7 @@ yyreduce: break; case 32: -#line 134 "a.y" +#line 129 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -1835,7 +1827,7 @@ yyreduce: break; case 33: -#line 141 "a.y" +#line 136 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -1843,7 +1835,7 @@ yyreduce: break; case 34: -#line 148 "a.y" +#line 143 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (2)].addr); (yyval.addr2).to = nullgen; @@ -1851,7 +1843,7 @@ yyreduce: break; case 35: -#line 153 "a.y" +#line 148 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; @@ -1859,7 +1851,7 @@ yyreduce: break; case 36: -#line 160 "a.y" +#line 155 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); @@ -1867,7 +1859,7 @@ yyreduce: break; case 37: -#line 165 "a.y" +#line 160 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); @@ -1875,7 +1867,7 @@ yyreduce: break; case 38: -#line 172 "a.y" +#line 167 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); @@ -1883,7 +1875,7 @@ yyreduce: break; case 39: -#line 177 "a.y" +#line 172 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); @@ -1891,7 +1883,7 @@ yyreduce: break; case 40: -#line 182 "a.y" +#line 177 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -1899,7 +1891,7 @@ yyreduce: break; case 41: -#line 189 "a.y" +#line 184 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); @@ -1908,26 +1900,26 @@ yyreduce: break; case 42: -#line 197 "a.y" +#line 192 "a.y" { - settext((yyvsp[(1) - (3)].addr).sym); - (yyval.addr2).from = (yyvsp[(1) - (3)].addr); - (yyval.addr2).to = (yyvsp[(3) - (3)].addr); + settext((yyvsp[(1) - (4)].addr).sym); + (yyval.addr2).from = (yyvsp[(1) - (4)].addr); + (yyval.addr2).to = (yyvsp[(4) - (4)].addr); } break; case 43: -#line 203 "a.y" +#line 198 "a.y" { - settext((yyvsp[(1) - (5)].addr).sym); - (yyval.addr2).from = (yyvsp[(1) - (5)].addr); - (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); - (yyval.addr2).to = (yyvsp[(5) - (5)].addr); + settext((yyvsp[(1) - (6)].addr).sym); + (yyval.addr2).from = (yyvsp[(1) - (6)].addr); + (yyval.addr2).from.scale = (yyvsp[(3) - (6)].lval); + (yyval.addr2).to = (yyvsp[(6) - (6)].addr); } break; case 44: -#line 212 "a.y" +#line 207 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); @@ -1935,7 +1927,7 @@ yyreduce: break; case 45: -#line 217 "a.y" +#line 212 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); @@ -1943,7 +1935,7 @@ yyreduce: break; case 46: -#line 222 "a.y" +#line 217 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); @@ -1952,7 +1944,7 @@ yyreduce: break; case 49: -#line 234 "a.y" +#line 229 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -1960,7 +1952,7 @@ yyreduce: break; case 50: -#line 239 "a.y" +#line 234 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); @@ -1971,7 +1963,7 @@ yyreduce: break; case 51: -#line 249 "a.y" +#line 244 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -1979,7 +1971,7 @@ yyreduce: break; case 52: -#line 254 "a.y" +#line 249 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); @@ -1990,7 +1982,7 @@ yyreduce: break; case 53: -#line 264 "a.y" +#line 259 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (2)].addr); (yyval.addr2).to = nullgen; @@ -1998,7 +1990,7 @@ yyreduce: break; case 54: -#line 269 "a.y" +#line 264 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; @@ -2006,7 +1998,7 @@ yyreduce: break; case 55: -#line 274 "a.y" +#line 269 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -2014,7 +2006,7 @@ yyreduce: break; case 56: -#line 281 "a.y" +#line 276 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); @@ -2022,7 +2014,7 @@ yyreduce: break; case 57: -#line 286 "a.y" +#line 281 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); @@ -2031,7 +2023,7 @@ yyreduce: break; case 58: -#line 294 "a.y" +#line 289 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); @@ -2040,7 +2032,7 @@ yyreduce: break; case 59: -#line 302 "a.y" +#line 297 "a.y" { (yyval.addr2).from = (yyvsp[(3) - (5)].addr); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); @@ -2051,7 +2043,7 @@ yyreduce: break; case 60: -#line 312 "a.y" +#line 307 "a.y" { if((yyvsp[(1) - (3)].addr).type != TYPE_CONST || (yyvsp[(3) - (3)].addr).type != TYPE_CONST) yyerror("arguments to PCDATA must be integer constants"); @@ -2061,7 +2053,7 @@ yyreduce: break; case 61: -#line 321 "a.y" +#line 316 "a.y" { if((yyvsp[(1) - (3)].addr).type != TYPE_CONST) yyerror("index for FUNCDATA must be integer constant"); @@ -2073,21 +2065,21 @@ yyreduce: break; case 66: -#line 338 "a.y" +#line 333 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); } break; case 67: -#line 342 "a.y" +#line 337 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); } break; case 73: -#line 355 "a.y" +#line 350 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_BRANCH; @@ -2096,7 +2088,7 @@ yyreduce: break; case 74: -#line 361 "a.y" +#line 356 "a.y" { (yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym)); (yyval.addr) = nullgen; @@ -2108,7 +2100,7 @@ yyreduce: break; case 75: -#line 372 "a.y" +#line 367 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2117,7 +2109,7 @@ yyreduce: break; case 76: -#line 378 "a.y" +#line 373 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2126,7 +2118,7 @@ yyreduce: break; case 77: -#line 384 "a.y" +#line 379 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2135,7 +2127,7 @@ yyreduce: break; case 78: -#line 390 "a.y" +#line 385 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2144,7 +2136,7 @@ yyreduce: break; case 79: -#line 396 "a.y" +#line 391 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2153,7 +2145,7 @@ yyreduce: break; case 80: -#line 402 "a.y" +#line 397 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2162,7 +2154,7 @@ yyreduce: break; case 81: -#line 410 "a.y" +#line 405 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_CONST; @@ -2171,7 +2163,7 @@ yyreduce: break; case 82: -#line 416 "a.y" +#line 411 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).type = TYPE_ADDR; @@ -2184,7 +2176,7 @@ yyreduce: break; case 83: -#line 426 "a.y" +#line 421 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SCONST; @@ -2193,7 +2185,7 @@ yyreduce: break; case 84: -#line 432 "a.y" +#line 427 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2202,7 +2194,7 @@ yyreduce: break; case 85: -#line 438 "a.y" +#line 433 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2211,7 +2203,7 @@ yyreduce: break; case 86: -#line 444 "a.y" +#line 439 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2220,7 +2212,7 @@ yyreduce: break; case 87: -#line 450 "a.y" +#line 445 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2229,49 +2221,43 @@ yyreduce: break; case 88: -#line 458 "a.y" +#line 453 "a.y" { - (yyval.addr) = nullgen; (yyval.addr).type = TYPE_TEXTSIZE; - (yyval.addr).offset = (yyvsp[(2) - (2)].con2).v1; - (yyval.addr).u.argsize = (yyvsp[(2) - (2)].con2).v2; + (yyval.addr).offset = (yyvsp[(1) - (1)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; } break; case 89: -#line 467 "a.y" +#line 459 "a.y" { - (yyval.con2).v1 = (yyvsp[(1) - (1)].lval); - (yyval.con2).v2 = ArgsSizeUnknown; + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (2)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; } break; case 90: -#line 472 "a.y" +#line 465 "a.y" { - (yyval.con2).v1 = -(yyvsp[(2) - (2)].lval); - (yyval.con2).v2 = ArgsSizeUnknown; + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (3)].lval); + (yyval.addr).u.argsize = (yyvsp[(3) - (3)].lval); } break; case 91: -#line 477 "a.y" +#line 471 "a.y" { - (yyval.con2).v1 = (yyvsp[(1) - (3)].lval); - (yyval.con2).v2 = (yyvsp[(3) - (3)].lval); + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (4)].lval); + (yyval.addr).u.argsize = (yyvsp[(4) - (4)].lval); } break; - case 92: -#line 482 "a.y" - { - (yyval.con2).v1 = -(yyvsp[(2) - (4)].lval); - (yyval.con2).v2 = (yyvsp[(4) - (4)].lval); - } - break; - - case 95: -#line 493 "a.y" + case 94: +#line 483 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2280,8 +2266,8 @@ yyreduce: } break; - case 96: -#line 500 "a.y" + case 95: +#line 490 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2290,8 +2276,8 @@ yyreduce: } break; - case 97: -#line 507 "a.y" + case 96: +#line 497 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2300,8 +2286,8 @@ yyreduce: } break; - case 98: -#line 514 "a.y" + case 97: +#line 504 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2313,6 +2299,19 @@ yyreduce: } break; + case 98: +#line 514 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_MEM; + (yyval.addr).reg = (yyvsp[(3) - (9)].lval); + (yyval.addr).offset = (yyvsp[(1) - (9)].lval); + (yyval.addr).index = (yyvsp[(6) - (9)].lval); + (yyval.addr).scale = (yyvsp[(8) - (9)].lval); + checkscale((yyval.addr).scale); + } + break; + case 99: #line 524 "a.y" { @@ -2328,19 +2327,6 @@ yyreduce: case 100: #line 534 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_MEM; - (yyval.addr).reg = (yyvsp[(3) - (9)].lval); - (yyval.addr).offset = (yyvsp[(1) - (9)].lval); - (yyval.addr).index = (yyvsp[(6) - (9)].lval); - (yyval.addr).scale = (yyvsp[(8) - (9)].lval); - checkscale((yyval.addr).scale); - } - break; - - case 101: -#line 544 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2348,8 +2334,8 @@ yyreduce: } break; - case 102: -#line 550 "a.y" + case 101: +#line 540 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2357,8 +2343,8 @@ yyreduce: } break; - case 103: -#line 556 "a.y" + case 102: +#line 546 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2367,8 +2353,8 @@ yyreduce: } break; - case 104: -#line 563 "a.y" + case 103: +#line 553 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2379,8 +2365,8 @@ yyreduce: } break; - case 105: -#line 572 "a.y" + case 104: +#line 562 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2391,15 +2377,15 @@ yyreduce: } break; - case 106: -#line 583 "a.y" + case 105: +#line 573 "a.y" { (yyval.addr) = (yyvsp[(1) - (1)].addr); } break; - case 107: -#line 587 "a.y" + case 106: +#line 577 "a.y" { (yyval.addr) = (yyvsp[(1) - (6)].addr); (yyval.addr).index = (yyvsp[(3) - (6)].lval); @@ -2408,8 +2394,8 @@ yyreduce: } break; - case 108: -#line 596 "a.y" + case 107: +#line 586 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2419,8 +2405,8 @@ yyreduce: } break; - case 109: -#line 604 "a.y" + case 108: +#line 594 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -2430,134 +2416,134 @@ yyreduce: } break; - case 110: -#line 613 "a.y" + case 109: +#line 603 "a.y" { (yyval.lval) = 0; } break; - case 111: -#line 617 "a.y" + case 110: +#line 607 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 112: -#line 621 "a.y" + case 111: +#line 611 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 114: -#line 628 "a.y" + case 113: +#line 618 "a.y" { (yyval.lval) = NAME_AUTO; } break; - case 117: -#line 636 "a.y" + case 116: +#line 626 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; - case 118: -#line 640 "a.y" + case 117: +#line 630 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 119: -#line 644 "a.y" + case 118: +#line 634 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 120: -#line 648 "a.y" + case 119: +#line 638 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; - case 121: -#line 652 "a.y" + case 120: +#line 642 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; - case 123: -#line 659 "a.y" + case 122: +#line 649 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; - case 124: -#line 663 "a.y" + case 123: +#line 653 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; - case 125: -#line 667 "a.y" + case 124: +#line 657 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; - case 126: -#line 671 "a.y" + case 125: +#line 661 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; - case 127: -#line 675 "a.y" + case 126: +#line 665 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; - case 128: -#line 679 "a.y" + case 127: +#line 669 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; - case 129: -#line 683 "a.y" + case 128: +#line 673 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; - case 130: -#line 687 "a.y" + case 129: +#line 677 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; - case 131: -#line 691 "a.y" + case 130: +#line 681 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; - case 132: -#line 695 "a.y" + case 131: +#line 685 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } @@ -2565,7 +2551,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2569 "y.tab.c" +#line 2555 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/cmd/8a/y.tab.h b/src/cmd/8a/y.tab.h index d191455487..3ab1bfa0f4 100644 --- a/src/cmd/8a/y.tab.h +++ b/src/cmd/8a/y.tab.h @@ -118,17 +118,13 @@ typedef union YYSTYPE { Sym *sym; int32 lval; - struct { - int32 v1; - int32 v2; - } con2; double dval; char sval[8]; Addr addr; Addr2 addr2; } /* Line 1529 of yacc.c. */ -#line 132 "y.tab.h" +#line 128 "y.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/src/cmd/8g/ggen.c b/src/cmd/8g/ggen.c index 173e956073..2fd4a601ff 100644 --- a/src/cmd/8g/ggen.c +++ b/src/cmd/8g/ggen.c @@ -21,11 +21,10 @@ defframe(Prog *ptxt) NodeList *l; Node *n; - // fill in argument size + // fill in argument size, stack size + ptxt->to.type = TYPE_TEXTSIZE; ptxt->to.u.argsize = rnd(curfn->type->argwid, widthptr); - - // fill in final stack size - frame = rnd(stksize+maxarg, widthptr); + frame = rnd(stksize+maxarg, widthreg); ptxt->to.offset = frame; // insert code to zero ambiguously live variables diff --git a/src/cmd/9a/a.y b/src/cmd/9a/a.y index 5feb027a97..5d817922a3 100644 --- a/src/cmd/9a/a.y +++ b/src/cmd/9a/a.y @@ -60,7 +60,7 @@ %token LSCONST %token LNAME LLAB LVAR %type con expr pointer offset sreg -%type addr rreg regaddr name creg freg xlreg lr ctr +%type addr rreg regaddr name creg freg xlreg lr ctr textsize %type imm ximm fimm rel psr lcr cbit fpscr msr mask %% prog: @@ -613,24 +613,15 @@ inst: /* * TEXT */ -| LTEXT name ',' imm +| LTEXT name ',' '$' textsize { settext($2.sym); - outcode($1, &$2, 0, &$4); + outcode($1, &$2, 0, &$5); } -| LTEXT name ',' con ',' imm +| LTEXT name ',' con ',' '$' textsize { settext($2.sym); - $6.offset &= 0xffffffffull; - $6.offset |= (vlong)ArgsSizeUnknown << 32; - outcode($1, &$2, $4, &$6); - } -| LTEXT name ',' con ',' imm '-' con - { - settext($2.sym); - $6.offset &= 0xffffffffull; - $6.offset |= ($8 & 0xffffffffull) << 32; - outcode($1, &$2, $4, &$6); + outcode($1, &$2, $4, &$7); } /* * GLOBL @@ -812,6 +803,32 @@ mask: $$.offset = v; } +textsize: + LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = ArgsSizeUnknown; + } +| '-' LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = ArgsSizeUnknown; + } +| LCONST '-' LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = $1; + $$.u.argsize = $3; + } +| '-' LCONST '-' LCONST + { + $$.type = TYPE_TEXTSIZE; + $$.offset = -$2; + $$.u.argsize = $4; + } + ximm: '$' addr { diff --git a/src/cmd/9a/y.tab.c b/src/cmd/9a/y.tab.c index 4428240dbe..4207cdadbd 100644 --- a/src/cmd/9a/y.tab.c +++ b/src/cmd/9a/y.tab.c @@ -462,16 +462,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 862 +#define YYLAST 932 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 82 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 30 +#define YYNNTS 31 /* YYNRULES -- Number of rules. */ -#define YYNRULES 183 +#define YYNRULES 186 /* YYNRULES -- Number of states. */ -#define YYNSTATES 455 +#define YYNSTATES 462 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -533,104 +533,105 @@ static const yytype_uint16 yyprhs[] = 399, 404, 408, 411, 416, 421, 428, 437, 442, 449, 454, 459, 466, 473, 482, 491, 500, 509, 514, 519, 524, 531, 536, 543, 548, 553, 556, 559, 563, 567, - 571, 575, 578, 582, 586, 591, 596, 599, 604, 611, - 620, 625, 632, 639, 646, 653, 656, 661, 664, 666, - 668, 670, 672, 674, 676, 678, 680, 685, 687, 689, - 691, 696, 698, 703, 705, 709, 712, 715, 718, 722, - 725, 727, 732, 736, 742, 744, 749, 754, 760, 768, - 769, 771, 772, 775, 778, 780, 782, 784, 786, 788, - 791, 794, 797, 801, 803, 807, 811, 815, 819, 823, - 828, 833, 837, 841 + 571, 575, 578, 582, 586, 591, 596, 599, 605, 613, + 618, 625, 632, 639, 646, 649, 654, 657, 659, 661, + 663, 665, 667, 669, 671, 673, 678, 680, 682, 684, + 689, 691, 696, 698, 702, 704, 707, 711, 716, 719, + 722, 725, 729, 732, 734, 739, 743, 749, 751, 756, + 761, 767, 775, 776, 778, 779, 782, 785, 787, 789, + 791, 793, 795, 798, 801, 804, 808, 810, 814, 818, + 822, 826, 830, 835, 840, 844, 848 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 83, 0, -1, -1, 83, 84, -1, -1, 71, 74, - 85, 84, -1, 71, 75, 111, 76, -1, 73, 75, - 111, 76, -1, 58, 76, -1, 76, -1, 86, 76, + 85, 84, -1, 71, 75, 112, 76, -1, 73, 75, + 112, 76, -1, 58, 76, -1, 76, -1, 86, 76, -1, 1, 76, -1, 13, 88, 77, 88, -1, 13, - 105, 77, 88, -1, 13, 104, 77, 88, -1, 14, - 88, 77, 88, -1, 14, 105, 77, 88, -1, 14, - 104, 77, 88, -1, 22, 105, 77, 96, -1, 22, - 104, 77, 96, -1, 22, 101, 77, 96, -1, 22, - 96, 77, 96, -1, 22, 96, 77, 105, -1, 22, - 96, 77, 104, -1, 13, 88, 77, 105, -1, 13, - 88, 77, 104, -1, 14, 88, 77, 105, -1, 14, - 88, 77, 104, -1, 13, 96, 77, 105, -1, 13, - 96, 77, 104, -1, 13, 95, 77, 96, -1, 13, - 96, 77, 95, -1, 13, 96, 77, 102, 77, 95, - -1, 13, 95, 77, 97, -1, 67, 102, 77, 110, - -1, 13, 88, 77, 102, 77, 91, -1, 13, 88, + 106, 77, 88, -1, 13, 105, 77, 88, -1, 14, + 88, 77, 88, -1, 14, 106, 77, 88, -1, 14, + 105, 77, 88, -1, 22, 106, 77, 96, -1, 22, + 105, 77, 96, -1, 22, 102, 77, 96, -1, 22, + 96, 77, 96, -1, 22, 96, 77, 106, -1, 22, + 96, 77, 105, -1, 13, 88, 77, 106, -1, 13, + 88, 77, 105, -1, 14, 88, 77, 106, -1, 14, + 88, 77, 105, -1, 13, 96, 77, 106, -1, 13, + 96, 77, 105, -1, 13, 95, 77, 96, -1, 13, + 96, 77, 95, -1, 13, 96, 77, 103, 77, 95, + -1, 13, 95, 77, 97, -1, 67, 103, 77, 111, + -1, 13, 88, 77, 103, 77, 91, -1, 13, 88, 77, 97, -1, 13, 88, 77, 91, -1, 18, 88, - 77, 103, 77, 88, -1, 18, 102, 77, 103, 77, - 88, -1, 18, 88, 77, 102, 77, 88, -1, 18, - 88, 77, 88, -1, 18, 102, 77, 88, -1, 16, - 88, 77, 103, 77, 88, -1, 16, 88, 77, 88, - -1, 17, 88, 77, 103, 77, 88, -1, 17, 88, - 77, 88, -1, 17, 102, 77, 103, 77, 88, -1, - 17, 102, 77, 88, -1, 15, 88, 77, 88, -1, - 15, 88, -1, 68, 88, 77, 103, 77, 88, -1, - 13, 102, 77, 88, -1, 13, 100, 77, 88, -1, - 20, 98, 77, 98, -1, 20, 98, 77, 110, 77, + 77, 104, 77, 88, -1, 18, 103, 77, 104, 77, + 88, -1, 18, 88, 77, 103, 77, 88, -1, 18, + 88, 77, 88, -1, 18, 103, 77, 88, -1, 16, + 88, 77, 104, 77, 88, -1, 16, 88, 77, 88, + -1, 17, 88, 77, 104, 77, 88, -1, 17, 88, + 77, 88, -1, 17, 103, 77, 104, 77, 88, -1, + 17, 103, 77, 88, -1, 15, 88, 77, 88, -1, + 15, 88, -1, 68, 88, 77, 104, 77, 88, -1, + 13, 103, 77, 88, -1, 13, 101, 77, 88, -1, + 20, 98, 77, 98, -1, 20, 98, 77, 111, 77, 98, -1, 13, 97, 77, 97, -1, 13, 94, 77, 97, -1, 13, 91, 77, 88, -1, 13, 94, 77, 88, -1, 13, 89, 77, 88, -1, 13, 88, 77, 89, -1, 13, 97, 77, 94, -1, 13, 88, 77, - 94, -1, 21, 87, -1, 21, 105, -1, 21, 78, - 89, 79, -1, 21, 77, 87, -1, 21, 77, 105, + 94, -1, 21, 87, -1, 21, 106, -1, 21, 78, + 89, 79, -1, 21, 77, 87, -1, 21, 77, 106, -1, 21, 77, 78, 89, 79, -1, 21, 97, 77, - 87, -1, 21, 97, 77, 105, -1, 21, 97, 77, - 78, 89, 79, -1, 21, 110, 77, 87, -1, 21, - 110, 77, 105, -1, 21, 110, 77, 78, 89, 79, - -1, 21, 110, 77, 110, 77, 87, -1, 21, 110, - 77, 110, 77, 105, -1, 21, 110, 77, 110, 77, - 78, 89, 79, -1, 27, 88, 77, 103, -1, 27, - 102, 77, 103, -1, 27, 88, 107, -1, 27, 107, + 87, -1, 21, 97, 77, 106, -1, 21, 97, 77, + 78, 89, 79, -1, 21, 111, 77, 87, -1, 21, + 111, 77, 106, -1, 21, 111, 77, 78, 89, 79, + -1, 21, 111, 77, 111, 77, 87, -1, 21, 111, + 77, 111, 77, 106, -1, 21, 111, 77, 111, 77, + 78, 89, 79, -1, 27, 88, 77, 104, -1, 27, + 103, 77, 104, -1, 27, 88, 108, -1, 27, 108, -1, 23, 96, 77, 96, -1, 25, 96, 77, 96, -1, 25, 96, 77, 96, 77, 96, -1, 26, 96, 77, 96, 77, 96, 77, 96, -1, 24, 96, 77, 96, -1, 24, 96, 77, 96, 77, 97, -1, 19, - 88, 77, 88, -1, 19, 88, 77, 102, -1, 19, - 88, 77, 88, 77, 97, -1, 19, 88, 77, 102, - 77, 97, -1, 63, 102, 77, 88, 77, 102, 77, - 88, -1, 63, 102, 77, 88, 77, 99, 77, 88, - -1, 63, 88, 77, 88, 77, 102, 77, 88, -1, + 88, 77, 88, -1, 19, 88, 77, 103, -1, 19, + 88, 77, 88, 77, 97, -1, 19, 88, 77, 103, + 77, 97, -1, 63, 103, 77, 88, 77, 103, 77, + 88, -1, 63, 103, 77, 88, 77, 99, 77, 88, + -1, 63, 88, 77, 88, 77, 103, 77, 88, -1, 63, 88, 77, 88, 77, 99, 77, 88, -1, 64, - 105, 77, 88, -1, 64, 88, 77, 105, -1, 59, - 104, 77, 88, -1, 59, 104, 77, 102, 77, 88, - -1, 60, 88, 77, 104, -1, 60, 88, 77, 102, - 77, 104, -1, 62, 104, 77, 88, -1, 62, 88, - 77, 104, -1, 61, 104, -1, 29, 107, -1, 29, - 88, 107, -1, 29, 96, 107, -1, 29, 77, 88, - -1, 29, 77, 96, -1, 29, 102, -1, 32, 102, - 107, -1, 32, 100, 107, -1, 56, 102, 77, 102, - -1, 57, 102, 77, 105, -1, 30, 107, -1, 33, - 106, 77, 102, -1, 33, 106, 77, 110, 77, 102, - -1, 33, 106, 77, 110, 77, 102, 9, 110, -1, - 34, 106, 77, 102, -1, 34, 106, 77, 110, 77, - 102, -1, 35, 106, 11, 110, 77, 102, -1, 35, - 106, 11, 110, 77, 100, -1, 35, 106, 11, 110, - 77, 101, -1, 36, 107, -1, 110, 78, 41, 79, - -1, 71, 108, -1, 103, -1, 90, -1, 92, -1, - 50, -1, 47, -1, 51, -1, 55, -1, 53, -1, - 52, 78, 110, 79, -1, 93, -1, 49, -1, 45, - -1, 48, 78, 110, 79, -1, 42, -1, 47, 78, - 110, 79, -1, 110, -1, 110, 77, 110, -1, 80, - 105, -1, 80, 70, -1, 80, 69, -1, 80, 9, - 69, -1, 80, 110, -1, 44, -1, 46, 78, 110, - 79, -1, 78, 103, 79, -1, 78, 103, 8, 103, - 79, -1, 106, -1, 110, 78, 103, 79, -1, 110, - 78, 109, 79, -1, 71, 108, 78, 109, 79, -1, - 71, 6, 7, 108, 78, 39, 79, -1, -1, 77, - -1, -1, 8, 110, -1, 9, 110, -1, 39, -1, - 38, -1, 40, -1, 37, -1, 73, -1, 9, 110, - -1, 8, 110, -1, 81, 110, -1, 78, 111, 79, - -1, 110, -1, 111, 8, 111, -1, 111, 9, 111, - -1, 111, 10, 111, -1, 111, 11, 111, -1, 111, - 12, 111, -1, 111, 6, 6, 111, -1, 111, 7, - 7, 111, -1, 111, 5, 111, -1, 111, 4, 111, - -1, 111, 3, 111, -1 + 106, 77, 88, -1, 64, 88, 77, 106, -1, 59, + 105, 77, 88, -1, 59, 105, 77, 103, 77, 88, + -1, 60, 88, 77, 105, -1, 60, 88, 77, 103, + 77, 105, -1, 62, 105, 77, 88, -1, 62, 88, + 77, 105, -1, 61, 105, -1, 29, 108, -1, 29, + 88, 108, -1, 29, 96, 108, -1, 29, 77, 88, + -1, 29, 77, 96, -1, 29, 103, -1, 32, 103, + 108, -1, 32, 101, 108, -1, 56, 103, 77, 103, + -1, 57, 103, 77, 106, -1, 30, 108, -1, 33, + 107, 77, 80, 100, -1, 33, 107, 77, 111, 77, + 80, 100, -1, 34, 107, 77, 103, -1, 34, 107, + 77, 111, 77, 103, -1, 35, 107, 11, 111, 77, + 103, -1, 35, 107, 11, 111, 77, 101, -1, 35, + 107, 11, 111, 77, 102, -1, 36, 108, -1, 111, + 78, 41, 79, -1, 71, 109, -1, 104, -1, 90, + -1, 92, -1, 50, -1, 47, -1, 51, -1, 55, + -1, 53, -1, 52, 78, 111, 79, -1, 93, -1, + 49, -1, 45, -1, 48, 78, 111, 79, -1, 42, + -1, 47, 78, 111, 79, -1, 111, -1, 111, 77, + 111, -1, 37, -1, 9, 37, -1, 37, 9, 37, + -1, 9, 37, 9, 37, -1, 80, 106, -1, 80, + 70, -1, 80, 69, -1, 80, 9, 69, -1, 80, + 111, -1, 44, -1, 46, 78, 111, 79, -1, 78, + 104, 79, -1, 78, 104, 8, 104, 79, -1, 107, + -1, 111, 78, 104, 79, -1, 111, 78, 110, 79, + -1, 71, 109, 78, 110, 79, -1, 71, 6, 7, + 109, 78, 39, 79, -1, -1, 77, -1, -1, 8, + 111, -1, 9, 111, -1, 39, -1, 38, -1, 40, + -1, 37, -1, 73, -1, 9, 111, -1, 8, 111, + -1, 81, 111, -1, 78, 112, 79, -1, 111, -1, + 112, 8, 112, -1, 112, 9, 112, -1, 112, 10, + 112, -1, 112, 11, 112, -1, 112, 12, 112, -1, + 112, 6, 6, 112, -1, 112, 7, 7, 112, -1, + 112, 5, 112, -1, 112, 4, 112, -1, 112, 3, + 112, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -647,14 +648,14 @@ static const yytype_uint16 yyrline[] = 428, 432, 436, 443, 447, 451, 455, 459, 463, 470, 474, 478, 482, 489, 493, 497, 501, 508, 512, 520, 524, 528, 532, 536, 540, 544, 551, 555, 559, 563, - 567, 571, 578, 582, 589, 598, 609, 616, 621, 628, - 638, 643, 652, 656, 660, 667, 673, 679, 690, 698, - 699, 702, 710, 718, 726, 734, 740, 748, 751, 759, - 765, 773, 779, 787, 795, 816, 821, 829, 835, 842, - 850, 851, 859, 866, 876, 877, 886, 894, 902, 911, - 912, 915, 918, 922, 928, 929, 930, 933, 934, 938, - 942, 946, 950, 956, 957, 961, 965, 969, 973, 977, - 981, 985, 989, 993 + 567, 571, 578, 582, 589, 598, 609, 616, 621, 629, + 634, 643, 647, 651, 658, 664, 670, 681, 689, 690, + 693, 701, 709, 717, 725, 731, 739, 742, 750, 756, + 764, 770, 778, 786, 807, 813, 819, 825, 833, 838, + 846, 852, 859, 867, 868, 876, 883, 893, 894, 903, + 911, 919, 928, 929, 932, 935, 939, 945, 946, 947, + 950, 951, 955, 959, 963, 967, 973, 974, 978, 982, + 986, 990, 994, 998, 1002, 1006, 1010 }; #endif @@ -674,9 +675,9 @@ static const char *const yytname[] = "LMTFSB", "LMA", "LFCONST", "LSCONST", "LNAME", "LLAB", "LVAR", "':'", "'='", "';'", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "line", "@1", "inst", "rel", "rreg", "xlreg", "lr", "lcr", "ctr", "msr", - "psr", "fpscr", "freg", "creg", "cbit", "mask", "ximm", "fimm", "imm", - "sreg", "regaddr", "addr", "name", "comma", "offset", "pointer", "con", - "expr", 0 + "psr", "fpscr", "freg", "creg", "cbit", "mask", "textsize", "ximm", + "fimm", "imm", "sreg", "regaddr", "addr", "name", "comma", "offset", + "pointer", "con", "expr", 0 }; #endif @@ -712,13 +713,13 @@ static const yytype_uint8 yyr1[] = 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 87, 87, 88, 89, - 89, 90, 91, 92, 93, 94, 94, 94, 95, 96, - 96, 97, 97, 98, 99, 100, 100, 101, 101, 102, - 103, 103, 104, 104, 105, 105, 106, 106, 106, 107, - 107, 108, 108, 108, 109, 109, 109, 110, 110, 110, - 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111 + 86, 86, 86, 86, 86, 87, 87, 88, 89, 89, + 90, 91, 92, 93, 94, 94, 94, 95, 96, 96, + 97, 97, 98, 99, 100, 100, 100, 100, 101, 101, + 102, 102, 103, 104, 104, 105, 105, 106, 106, 107, + 107, 107, 108, 108, 109, 109, 109, 110, 110, 110, + 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -735,14 +736,14 @@ static const yytype_uint8 yyr2[] = 4, 3, 2, 4, 4, 6, 8, 4, 6, 4, 4, 6, 6, 8, 8, 8, 8, 4, 4, 4, 6, 4, 6, 4, 4, 2, 2, 3, 3, 3, - 3, 2, 3, 3, 4, 4, 2, 4, 6, 8, - 4, 6, 6, 6, 6, 2, 4, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, - 4, 1, 4, 1, 3, 2, 2, 2, 3, 2, - 1, 4, 3, 5, 1, 4, 4, 5, 7, 0, - 1, 0, 2, 2, 1, 1, 1, 1, 1, 2, - 2, 2, 3, 1, 3, 3, 3, 3, 3, 4, - 4, 3, 3, 3 + 3, 2, 3, 3, 4, 4, 2, 5, 7, 4, + 6, 6, 6, 6, 2, 4, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, + 1, 4, 1, 3, 1, 2, 3, 4, 2, 2, + 2, 3, 2, 1, 4, 3, 5, 1, 4, 4, + 5, 7, 0, 1, 0, 2, 2, 1, 1, 1, + 1, 1, 2, 2, 2, 3, 1, 3, 3, 3, + 3, 3, 4, 4, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -751,120 +752,124 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 159, 159, - 159, 0, 0, 0, 0, 159, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 162, 162, + 162, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 3, 0, 11, 0, 0, 167, 141, 150, 139, 0, - 132, 0, 138, 131, 133, 0, 135, 134, 161, 168, - 0, 0, 0, 0, 0, 129, 0, 130, 137, 0, - 0, 0, 0, 0, 0, 128, 0, 0, 154, 0, + 3, 0, 11, 0, 0, 170, 140, 153, 138, 0, + 131, 0, 137, 130, 132, 0, 134, 133, 164, 171, + 0, 0, 0, 0, 0, 128, 0, 129, 136, 0, + 0, 0, 0, 0, 0, 127, 0, 0, 157, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 143, 0, 161, 0, 0, 64, 0, + 0, 0, 0, 142, 0, 164, 0, 0, 64, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 160, 159, 0, 82, 160, 159, 159, 111, 106, - 116, 159, 159, 0, 0, 0, 0, 125, 0, 0, + 0, 163, 162, 0, 82, 163, 162, 162, 111, 106, + 116, 162, 162, 0, 0, 0, 0, 124, 0, 0, 8, 0, 0, 0, 105, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, 10, 170, 169, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, - 146, 145, 149, 171, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 10, 173, 172, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, + 149, 148, 152, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 149, 0, 0, 0, 0, 0, 0, 127, 0, - 67, 68, 0, 0, 0, 0, 0, 0, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 160, 81, 0, + 0, 152, 0, 0, 0, 0, 0, 0, 126, 0, + 67, 68, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 163, 81, 0, 109, 110, 107, 108, 113, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, - 162, 163, 0, 0, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 172, 12, 61, 37, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, + 165, 166, 0, 0, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 175, 12, 61, 37, 63, 36, 0, 25, 24, 60, 58, 59, 57, 30, 33, 31, 0, 29, 28, 62, 56, 53, 52, 14, 13, - 165, 164, 166, 0, 0, 15, 27, 26, 17, 16, - 49, 44, 128, 46, 128, 48, 128, 41, 0, 128, - 42, 128, 89, 90, 54, 143, 0, 66, 0, 70, - 71, 0, 73, 74, 0, 0, 148, 21, 23, 22, - 20, 19, 18, 83, 87, 84, 0, 79, 80, 117, - 0, 120, 0, 0, 114, 115, 99, 0, 0, 101, + 168, 167, 169, 0, 0, 15, 27, 26, 17, 16, + 49, 44, 127, 46, 127, 48, 127, 41, 0, 127, + 42, 127, 89, 90, 54, 142, 0, 66, 0, 70, + 71, 0, 73, 74, 0, 0, 151, 21, 23, 22, + 20, 19, 18, 83, 87, 84, 0, 79, 80, 0, + 0, 119, 0, 0, 114, 115, 99, 0, 0, 101, 104, 103, 0, 0, 98, 97, 34, 0, 5, 6, - 7, 151, 142, 140, 136, 0, 0, 0, 183, 182, - 181, 0, 0, 174, 175, 176, 177, 178, 0, 0, - 155, 156, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 69, 0, 0, 0, 126, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 157, 153, - 179, 180, 132, 35, 32, 43, 45, 47, 40, 38, - 39, 91, 92, 55, 72, 75, 0, 76, 77, 88, - 85, 0, 118, 121, 0, 123, 124, 122, 100, 102, - 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 158, 78, 86, 119, - 96, 95, 144, 94, 93 + 7, 154, 141, 139, 135, 0, 0, 0, 186, 185, + 184, 0, 0, 177, 178, 179, 180, 181, 0, 0, + 158, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 69, 0, 0, 0, 125, 0, 0, 0, 0, + 144, 117, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 160, 156, 182, 183, 131, 35, 32, 43, 45, + 47, 40, 38, 39, 91, 92, 55, 72, 75, 0, + 76, 77, 88, 85, 0, 145, 0, 0, 120, 0, + 122, 123, 121, 100, 102, 0, 0, 0, 0, 0, + 51, 0, 0, 0, 0, 146, 118, 0, 0, 0, + 0, 0, 0, 161, 78, 86, 147, 96, 95, 143, + 94, 93 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 40, 232, 41, 98, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 92, 430, 73, 104, - 74, 75, 76, 161, 78, 114, 156, 284, 158, 159 + 67, 68, 69, 70, 71, 72, 92, 435, 391, 73, + 104, 74, 75, 76, 161, 78, 114, 156, 284, 158, + 159 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -178 +#define YYPACT_NINF -179 static const yytype_int16 yypact[] = { - -178, 494, -178, -50, 591, 30, -1, -1, 20, 20, - -1, 317, 315, 615, 17, 17, 17, 17, 48, 9, - -42, -17, 720, 720, 720, -42, -12, -12, 26, -3, - -1, -3, 0, 20, 639, -12, -1, 63, 13, -178, - -178, 33, -178, 317, 317, -178, -178, -178, -178, 38, - 42, 52, -178, -178, -178, 55, -178, -178, 198, -178, - 690, 696, 317, 35, 72, -178, 76, -178, -178, 81, - 93, 99, 105, 107, 117, -178, 124, 131, -178, 135, - 155, 160, 161, 164, 165, 317, 171, 172, 176, 179, - 182, 317, 184, -178, 42, 198, 743, 722, -178, 185, - -178, 121, 3, 200, 202, 204, 209, 214, 215, 218, - 220, -178, 223, 225, -178, 181, -42, -42, -178, -178, - -178, -42, -42, 230, 180, 233, 79, -178, 234, 238, - -178, -1, 240, 250, -178, 251, 253, 254, 255, 256, - 264, 266, 269, -178, 317, 317, -178, -178, -178, 317, - 317, 317, 317, 277, 317, 317, 271, 34, -178, 12, - -178, -178, 135, -178, 371, -1, -1, 259, 109, 645, - 192, -1, -1, -1, -1, 320, 30, -1, -1, -1, - -1, -178, -1, -1, 20, -1, 20, 317, 271, 722, - -178, -178, 275, 265, 747, 767, 106, 286, -178, 666, - 17, 17, 17, 17, 17, 17, 17, -1, -178, -1, - -178, -178, -178, -178, -178, -178, 267, 125, 267, 317, - -12, 720, 20, -7, -3, -1, -1, -1, 720, -1, - 317, -1, 558, 458, 532, 296, 299, 302, 303, 207, - -178, -178, 125, -1, -178, 317, 317, 317, 350, 358, - 317, 317, 317, 317, 317, -178, -178, -178, -178, -178, - -178, 300, -178, -178, -178, -178, -178, -178, -178, -178, - -178, 306, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, 305, 310, -178, -178, -178, -178, -178, - -178, -178, 322, -178, 323, -178, 324, -178, 328, 329, - -178, 330, 332, 333, -178, 335, 340, -178, 722, -178, - -178, 722, -178, -178, 141, 346, -178, -178, -178, -178, - -178, -178, -178, -178, 337, 351, 352, -178, -178, -178, - 355, -178, 356, 364, -178, -178, -178, 368, 370, -178, - -178, -178, 373, 376, -178, -178, -178, 377, -178, -178, - -178, -178, -178, -178, -178, 316, 348, 369, 825, 850, - 493, 317, 317, 40, 40, -178, -178, -178, 388, 409, - -178, -178, -1, -1, -1, -1, -1, -1, 14, 14, - 317, -178, 380, 392, 773, -178, 14, 17, 17, -12, - -12, 393, -1, -3, 267, 267, -1, 433, -178, -178, - 472, 472, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, 722, -178, -178, -178, - -178, 397, 468, -178, 672, -178, -178, -178, -178, -178, - 401, 411, 412, 415, 416, -178, 417, 418, 17, 317, - 365, -1, -1, 317, -1, -1, -178, -178, -178, -178, - -178, -178, -178, -178, -178 + -179, 484, -179, -64, 581, 686, 74, 74, -24, -24, + 74, 845, 641, 656, -29, -29, -29, -29, 19, -11, + -54, -38, 747, 747, 747, -54, -19, -19, -50, -6, + 74, -6, -14, -24, 707, -19, 74, -36, 18, -179, + -179, 2, -179, 845, 845, -179, -179, -179, -179, 24, + 27, 48, -179, -179, -179, 61, -179, -179, 188, -179, + 717, 738, 845, 79, 81, -179, 93, -179, -179, 99, + 107, 116, 126, 127, 130, -179, 132, 133, -179, 87, + 136, 138, 157, 159, 171, 845, 176, 179, 182, 184, + 186, 845, 194, -179, 27, 188, 762, 764, -179, 196, + -179, 66, 8, 198, 200, 201, 202, 203, 206, 215, + 216, -179, 217, 219, -179, 181, -54, -54, -179, -179, + -179, -54, -54, 220, 167, 221, 178, -179, 223, 224, + -179, 74, 225, 226, -179, 227, 231, 232, 233, 234, + 236, 237, 238, -179, 845, 845, -179, -179, -179, 845, + 845, 845, 845, 242, 845, 845, 229, 3, -179, 377, + -179, -179, 87, -179, 629, 74, 74, 172, 26, 732, + 39, 74, 74, 74, 74, 230, 686, 74, 74, 74, + 74, -179, 74, 74, -24, 74, -24, 845, 229, 764, + -179, -179, 241, 243, 784, 814, 111, 254, -179, 67, + -29, -29, -29, -29, -29, -29, -29, 74, -179, 74, + -179, -179, -179, -179, -179, -179, 821, 45, 830, 845, + -19, 747, -24, 49, -6, 74, 74, 74, 747, 74, + 845, 74, 548, 463, 518, 246, 247, 248, 249, 155, + -179, -179, 45, 74, -179, 845, 845, 845, 323, 325, + 845, 845, 845, 845, 845, -179, -179, -179, -179, -179, + -179, 259, -179, -179, -179, -179, -179, -179, -179, -179, + -179, 260, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, 265, 266, -179, -179, -179, -179, -179, + -179, -179, 269, -179, 270, -179, 272, -179, 278, 279, + -179, 280, 283, 284, -179, 285, 275, -179, 764, -179, + -179, 764, -179, -179, 105, 286, -179, -179, -179, -179, + -179, -179, -179, -179, 289, 296, 297, -179, -179, 9, + 299, -179, 301, 319, -179, -179, -179, 320, 321, -179, + -179, -179, 324, 327, -179, -179, -179, 328, -179, -179, + -179, -179, -179, -179, -179, 329, 333, 334, 591, 430, + 451, 845, 845, 78, 78, -179, -179, -179, 316, 353, + -179, -179, 74, 74, 74, 74, 74, 74, 20, 20, + 845, -179, 335, 336, 841, -179, 20, -29, -29, 369, + 399, -179, 338, -19, 339, 74, -6, 830, 830, 74, + 382, -179, -179, 277, 277, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, 764, + -179, -179, -179, -179, 345, 414, 387, 9, -179, 322, + -179, -179, -179, -179, -179, 350, 351, 352, 354, 355, + -179, 366, 372, -29, 393, -179, -179, 851, 74, 74, + 845, 74, 74, -179, -179, -179, -179, -179, -179, -179, + -179, -179 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -178, -178, 290, -178, -178, -88, -5, -65, -178, -157, - -178, -178, -134, -160, 68, 25, -177, 130, -15, 140, - 96, 154, 64, 114, 298, 177, -84, 291, 36, -111 + -179, -179, 222, -179, -179, -72, -5, -61, -179, -157, + -179, -179, -149, -161, 38, 31, -178, 50, 28, -15, + 58, 98, 168, 82, 96, 112, 25, -85, 211, 36, + 88 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -874,184 +879,198 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 80, 83, 84, 86, 88, 90, 121, 258, 190, 270, - 304, 188, 197, 112, 116, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 133, 42, 135, 137, 139, - 259, 142, 193, 233, 234, 111, 274, 99, 43, 44, - 79, 79, 243, 47, 47, 49, 49, 93, 101, 79, - 252, 253, 254, 47, 48, 49, 46, 51, 124, 124, - 124, 94, 48, 61, 47, 51, 49, 45, 85, 81, - 79, 131, 198, 85, 47, 131, 49, 105, 131, 147, - 148, 103, 107, 108, 109, 110, 115, 117, 145, 85, - 219, 255, 47, 132, 49, 134, 136, 162, 163, 257, - 85, 58, 130, 59, 87, 89, 309, 312, 60, 146, - 210, 62, 164, 244, 113, 118, 149, 122, 77, 82, - 150, 181, 128, 129, 306, 111, 100, 106, 85, 138, - 151, 141, 192, 152, 358, 359, 360, 143, 144, 363, - 364, 365, 366, 367, 280, 281, 282, 315, 140, 165, - 47, 46, 49, 166, 48, 355, 94, 51, 167, 256, - 264, 265, 266, 280, 281, 282, 276, 277, 278, 279, - 168, 285, 288, 289, 290, 291, 169, 293, 295, 297, - 300, 302, 170, 211, 171, 235, 236, 237, 238, 260, - 240, 241, 267, 269, 172, 275, 119, 120, 195, 196, - 79, 173, 127, 413, 153, 79, 154, 155, 174, 404, - 191, 403, 79, 175, 157, 154, 155, 336, 384, 196, - 341, 342, 343, 305, 345, 47, 48, 49, 262, 51, - 192, 314, 176, 272, 46, 79, 268, 177, 178, 94, - 286, 179, 180, 382, 55, 56, 383, 57, 182, 183, - 400, 401, 330, 184, 332, 333, 185, 79, 217, 186, - 261, 187, 194, 318, 79, 271, 346, 317, 320, 321, - 322, 323, 324, 325, 326, 43, 44, 199, 263, 200, - 298, 201, 303, 273, 239, 157, 202, 339, 340, 208, - 287, 203, 204, 212, 213, 205, 417, 206, 214, 215, - 207, 46, 209, 47, 45, 49, 94, 216, 310, 313, - 218, 220, 329, 319, 331, 221, 334, 222, 337, 338, - 123, 125, 126, 43, 44, 43, 44, 223, 224, 283, - 225, 226, 227, 228, 292, 335, 294, 296, 299, 301, - 59, 229, 344, 230, 307, 91, 231, 85, 62, 242, - 283, 437, 45, 196, 45, 316, 361, 46, 280, 281, - 282, 327, 94, 328, 47, 362, 49, 405, 406, 407, - 408, 409, 410, 43, 44, 351, 425, 368, 352, 43, - 44, 353, 354, 369, 370, 347, 95, 428, 59, 371, - 59, 435, 96, 97, 397, 91, 62, 357, 62, 372, - 373, 374, 45, 411, 412, 375, 376, 377, 45, 378, - 379, 419, 380, 46, 386, 47, 93, 49, 50, 381, - 192, 53, 54, 55, 56, 385, 57, 398, 387, 388, - 432, 432, 389, 390, 316, 402, 450, 451, 59, 453, - 454, 391, 58, 91, 59, 392, 62, 393, 399, 60, - 394, 85, 62, 395, 396, 420, 421, 429, 52, 414, - 162, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 415, 436, 424, 438, 449, 148, 439, 441, 452, - 250, 251, 252, 253, 254, 422, 423, 427, 442, 443, - 431, 434, 444, 445, 2, 3, 446, 447, 418, 248, - 249, 250, 251, 252, 253, 254, 448, 4, 5, 6, + 80, 83, 84, 86, 88, 90, 121, 258, 270, 304, + 188, 243, 42, 112, 116, 259, 48, 197, 389, 51, + 47, 274, 49, 111, 190, 133, 130, 135, 137, 139, + 47, 142, 49, 47, 48, 49, 193, 51, 143, 144, + 79, 79, 61, 99, 119, 120, 390, 93, 101, 79, + 127, 103, 107, 108, 109, 110, 85, 117, 124, 124, + 124, 85, 46, 47, 131, 49, 115, 94, 46, 85, + 79, 48, 131, 94, 51, 43, 44, 198, 146, 147, + 148, 46, 244, 280, 281, 282, 94, 81, 252, 253, + 254, 55, 56, 145, 57, 105, 111, 162, 163, 85, + 77, 82, 149, 257, 45, 150, 87, 89, 100, 106, + 210, 132, 48, 134, 136, 51, 113, 118, 47, 122, + 49, 181, 309, 312, 128, 129, 151, 131, 306, 85, + 140, 138, 192, 141, 123, 125, 126, 208, 58, 152, + 59, 212, 213, 195, 196, 60, 214, 215, 62, 280, + 281, 282, 315, 211, 355, 47, 164, 49, 165, 256, + 264, 265, 266, 154, 155, 175, 276, 277, 278, 279, + 166, 285, 288, 289, 290, 291, 167, 293, 295, 297, + 300, 302, 384, 196, 168, 235, 236, 237, 238, 219, + 240, 241, 191, 169, 153, 260, 154, 155, 267, 269, + 79, 275, 416, 170, 171, 79, 268, 172, 407, 173, + 174, 406, 79, 176, 46, 177, 47, 336, 49, 94, + 341, 342, 343, 305, 345, 47, 48, 49, 157, 51, + 192, 314, 233, 234, 178, 79, 179, 317, 320, 321, + 322, 323, 324, 325, 326, 217, 262, 382, 180, 239, + 383, 272, 330, 182, 332, 333, 183, 79, 286, 184, + 263, 185, 261, 186, 79, 273, 346, 271, 280, 281, + 282, 187, 287, 194, 47, 199, 49, 200, 201, 202, + 203, 318, 298, 204, 303, 250, 251, 252, 253, 254, + 310, 313, 205, 206, 207, 319, 209, 216, 218, 157, + 220, 221, 222, 223, 224, 339, 340, 242, 225, 226, + 227, 228, 420, 229, 230, 231, 331, 335, 334, 196, + 337, 338, 307, 316, 344, 351, 352, 353, 354, 361, + 43, 447, 362, 358, 359, 360, 368, 369, 363, 364, + 365, 366, 367, 283, 370, 371, 372, 373, 292, 374, + 294, 296, 299, 301, 381, 375, 376, 377, 442, 45, + 378, 379, 380, 405, 283, 385, 386, 408, 409, 410, + 411, 412, 413, 387, 388, 327, 392, 328, 393, 430, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 433, 198, 160, 58, 440, 59, 394, 395, 396, 347, + 91, 397, 52, 62, 398, 399, 425, 400, 426, 414, + 415, 357, 401, 402, 417, 418, 93, 422, 427, 429, + 192, 441, 443, 444, 445, 423, 424, 448, 449, 450, + 456, 451, 452, 437, 437, 247, 248, 249, 250, 251, + 252, 253, 254, 457, 458, 453, 460, 461, 438, 403, + 404, 454, 431, 356, 348, 446, 255, 248, 249, 250, + 251, 252, 253, 254, 0, 162, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 0, 0, 434, 0, + 421, 455, 0, 148, 2, 3, 459, 0, 0, 0, + 0, 428, 432, 0, 0, 436, 439, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 348, 19, 20, 433, 21, 22, 23, 24, - 25, 426, 0, 356, 349, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 0, 0, 0, 0, 0, + 17, 18, 0, 19, 20, 0, 21, 22, 23, 24, + 25, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 0, 0, 0, 0, 0, 0, 0, 0, 349, 26, 27, 28, 29, 30, 31, 32, 33, 34, 3, 0, 35, 36, 0, 0, 37, 0, 38, 0, 0, 39, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 20, 0, 21, 22, 23, 24, 25, 0, 0, 0, 0, 43, - 44, 0, 0, 0, 0, 0, 0, 0, 350, 0, - 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 43, 44, 35, 36, 0, 45, 37, + 44, 0, 0, 0, 350, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 0, 0, 35, 36, 0, 45, 37, 0, 38, 0, 46, 39, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 0, 57, 43, 44, 0, - 0, 0, 45, 43, 44, 0, 0, 0, 0, 0, - 48, 0, 58, 51, 59, 0, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 44, 0, 58, 0, 59, 0, 0, 0, 0, 60, 0, 61, 62, 0, 43, 44, 45, 0, 0, 0, - 43, 440, 45, 47, 0, 49, 58, 0, 59, 0, - 0, 0, 0, 60, 52, 102, 62, 0, 43, 44, - 0, 0, 0, 45, 43, 44, 0, 0, 0, 45, - 58, 48, 59, 0, 51, 0, 58, 91, 59, 0, - 62, 0, 0, 60, 0, 85, 62, 45, 43, 44, - 43, 44, 0, 45, 47, 0, 49, 58, 0, 59, - 0, 198, 160, 58, 60, 59, 0, 62, 0, 0, - 91, 43, 44, 62, 0, 43, 44, 45, 0, 45, - 0, 0, 0, 59, 0, 0, 160, 58, 91, 59, - 0, 62, 53, 54, 91, 43, 44, 62, 0, 0, - 45, 43, 44, 0, 45, 0, 0, 0, 0, 0, - 0, 58, 0, 59, 0, 59, 0, 0, 91, 0, - 91, 62, 0, 62, 45, 0, 0, 0, 0, 0, - 45, 0, 0, 0, 95, 0, 59, 0, 95, 0, - 59, 189, 0, 0, 62, 308, 0, 0, 62, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 95, 0, - 59, 0, 0, 0, 95, 311, 59, 0, 62, 0, - 0, 416, 0, 0, 62, 247, 248, 249, 250, 251, - 252, 253, 254 + 0, 46, 0, 47, 0, 49, 50, 0, 45, 53, + 54, 55, 56, 46, 57, 0, 0, 0, 94, 0, + 0, 0, 0, 45, 43, 44, 0, 0, 0, 0, + 58, 48, 59, 0, 51, 0, 0, 60, 0, 85, + 62, 0, 95, 0, 59, 43, 44, 0, 96, 97, + 0, 0, 62, 45, 0, 43, 44, 58, 0, 59, + 47, 0, 49, 0, 60, 0, 102, 62, 0, 0, + 43, 44, 0, 0, 45, 0, 43, 44, 0, 0, + 0, 47, 0, 49, 45, 43, 44, 58, 0, 59, + 0, 47, 0, 49, 60, 0, 0, 62, 0, 45, + 43, 44, 43, 44, 0, 45, 0, 0, 58, 0, + 59, 52, 0, 0, 45, 91, 0, 0, 62, 0, + 59, 0, 43, 44, 0, 91, 0, 0, 62, 45, + 0, 45, 0, 58, 0, 59, 0, 0, 160, 58, + 60, 59, 85, 62, 53, 54, 91, 0, 58, 62, + 59, 45, 43, 44, 0, 91, 0, 0, 62, 43, + 44, 0, 0, 95, 0, 59, 0, 59, 43, 44, + 189, 0, 91, 62, 0, 62, 0, 0, 0, 43, + 44, 45, 0, 43, 44, 95, 0, 59, 45, 43, + 44, 0, 308, 0, 0, 62, 0, 45, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, + 0, 0, 45, 0, 0, 95, 0, 59, 45, 0, + 0, 0, 311, 0, 59, 62, 0, 0, 0, 91, + 0, 329, 62, 59, 0, 0, 0, 0, 91, 0, + 85, 62, 95, 0, 59, 0, 0, 0, 59, 419, + 316, 0, 62, 91, 59, 0, 62, 0, 0, 91, + 0, 0, 62 }; static const yytype_int16 yycheck[] = { - 5, 6, 7, 8, 9, 10, 21, 164, 96, 169, - 187, 95, 9, 18, 19, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 30, 76, 32, 33, 34, - 164, 36, 97, 144, 145, 77, 170, 12, 8, 9, - 4, 5, 8, 44, 44, 46, 46, 11, 12, 13, - 10, 11, 12, 44, 45, 46, 42, 48, 22, 23, - 24, 47, 45, 80, 44, 48, 46, 37, 80, 5, - 34, 78, 69, 80, 44, 78, 46, 13, 78, 43, - 44, 13, 14, 15, 16, 17, 77, 19, 75, 80, - 11, 79, 44, 29, 46, 31, 32, 61, 62, 164, - 80, 71, 76, 73, 8, 9, 194, 195, 78, 76, - 115, 81, 77, 79, 18, 19, 78, 21, 4, 5, - 78, 85, 26, 27, 189, 77, 12, 13, 80, 33, - 78, 35, 96, 78, 245, 246, 247, 74, 75, 250, - 251, 252, 253, 254, 38, 39, 40, 41, 34, 77, - 44, 42, 46, 77, 45, 239, 47, 48, 77, 164, - 165, 166, 167, 38, 39, 40, 171, 172, 173, 174, + 5, 6, 7, 8, 9, 10, 21, 164, 169, 187, + 95, 8, 76, 18, 19, 164, 45, 9, 9, 48, + 44, 170, 46, 77, 96, 30, 76, 32, 33, 34, + 44, 36, 46, 44, 45, 46, 97, 48, 74, 75, + 4, 5, 80, 12, 19, 20, 37, 11, 12, 13, + 25, 13, 14, 15, 16, 17, 80, 19, 22, 23, + 24, 80, 42, 44, 78, 46, 77, 47, 42, 80, + 34, 45, 78, 47, 48, 8, 9, 69, 76, 43, + 44, 42, 79, 38, 39, 40, 47, 5, 10, 11, + 12, 52, 53, 75, 55, 13, 77, 61, 62, 80, + 4, 5, 78, 164, 37, 78, 8, 9, 12, 13, + 115, 29, 45, 31, 32, 48, 18, 19, 44, 21, + 46, 85, 194, 195, 26, 27, 78, 78, 189, 80, + 34, 33, 96, 35, 22, 23, 24, 112, 71, 78, + 73, 116, 117, 77, 78, 78, 121, 122, 81, 38, + 39, 40, 41, 115, 239, 44, 77, 46, 77, 164, + 165, 166, 167, 8, 9, 78, 171, 172, 173, 174, 77, 176, 177, 178, 179, 180, 77, 182, 183, 184, - 185, 186, 77, 115, 77, 149, 150, 151, 152, 164, - 154, 155, 167, 168, 77, 170, 19, 20, 77, 78, - 164, 77, 25, 380, 6, 169, 8, 9, 77, 369, - 96, 368, 176, 78, 60, 8, 9, 222, 77, 78, - 225, 226, 227, 187, 229, 44, 45, 46, 164, 48, - 194, 195, 77, 169, 42, 199, 168, 77, 77, 47, - 176, 77, 77, 308, 52, 53, 311, 55, 77, 77, - 361, 362, 216, 77, 218, 219, 77, 221, 78, 77, - 164, 77, 77, 199, 228, 169, 230, 199, 200, 201, - 202, 203, 204, 205, 206, 8, 9, 77, 164, 77, - 184, 77, 186, 169, 7, 131, 77, 223, 224, 112, - 176, 77, 77, 116, 117, 77, 384, 77, 121, 122, - 77, 42, 77, 44, 37, 46, 47, 77, 194, 195, - 77, 77, 216, 199, 218, 77, 220, 77, 222, 223, - 22, 23, 24, 8, 9, 8, 9, 77, 77, 175, - 77, 77, 77, 77, 180, 221, 182, 183, 184, 185, - 73, 77, 228, 77, 79, 78, 77, 80, 81, 78, - 196, 416, 37, 78, 37, 69, 6, 42, 38, 39, - 40, 207, 47, 209, 44, 7, 46, 372, 373, 374, - 375, 376, 377, 8, 9, 79, 391, 77, 79, 8, - 9, 79, 79, 77, 79, 231, 71, 392, 73, 79, - 73, 396, 77, 78, 78, 78, 81, 243, 81, 77, - 77, 77, 37, 378, 379, 77, 77, 77, 37, 77, - 77, 386, 77, 42, 77, 44, 380, 46, 47, 79, - 384, 50, 51, 52, 53, 79, 55, 79, 77, 77, - 394, 395, 77, 77, 69, 47, 441, 442, 73, 444, - 445, 77, 71, 78, 73, 77, 81, 77, 79, 78, - 77, 80, 81, 77, 77, 387, 388, 393, 49, 79, - 424, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 79, 39, 80, 77, 439, 440, 9, 77, 443, - 8, 9, 10, 11, 12, 389, 390, 391, 77, 77, - 394, 395, 77, 77, 0, 1, 79, 79, 384, 6, - 7, 8, 9, 10, 11, 12, 438, 13, 14, 15, + 185, 186, 77, 78, 77, 149, 150, 151, 152, 11, + 154, 155, 96, 77, 6, 164, 8, 9, 167, 168, + 164, 170, 380, 77, 77, 169, 168, 77, 369, 77, + 77, 368, 176, 77, 42, 77, 44, 222, 46, 47, + 225, 226, 227, 187, 229, 44, 45, 46, 60, 48, + 194, 195, 144, 145, 77, 199, 77, 199, 200, 201, + 202, 203, 204, 205, 206, 78, 164, 308, 77, 7, + 311, 169, 216, 77, 218, 219, 77, 221, 176, 77, + 164, 77, 164, 77, 228, 169, 230, 169, 38, 39, + 40, 77, 176, 77, 44, 77, 46, 77, 77, 77, + 77, 199, 184, 77, 186, 8, 9, 10, 11, 12, + 194, 195, 77, 77, 77, 199, 77, 77, 77, 131, + 77, 77, 77, 77, 77, 223, 224, 78, 77, 77, + 77, 77, 384, 77, 77, 77, 218, 221, 220, 78, + 222, 223, 79, 69, 228, 79, 79, 79, 79, 6, + 8, 9, 7, 245, 246, 247, 77, 77, 250, 251, + 252, 253, 254, 175, 79, 79, 77, 77, 180, 77, + 182, 183, 184, 185, 79, 77, 77, 77, 419, 37, + 77, 77, 77, 47, 196, 79, 77, 372, 373, 374, + 375, 376, 377, 77, 77, 207, 77, 209, 77, 394, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 395, 69, 70, 71, 399, 73, 77, 77, 77, 231, + 78, 77, 49, 81, 77, 77, 37, 78, 9, 378, + 379, 243, 79, 79, 79, 79, 380, 386, 80, 80, + 384, 39, 77, 9, 37, 387, 388, 77, 77, 77, + 37, 77, 77, 397, 398, 5, 6, 7, 8, 9, + 10, 11, 12, 448, 449, 79, 451, 452, 398, 361, + 362, 79, 394, 242, 232, 427, 79, 6, 7, 8, + 9, 10, 11, 12, -1, 429, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, -1, -1, 396, -1, + 384, 443, -1, 447, 0, 1, 450, -1, -1, -1, + -1, 393, 394, -1, -1, 397, 398, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 232, 29, 30, 395, 32, 33, 34, 35, - 36, 391, -1, 242, 76, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, + 26, 27, -1, 29, 30, -1, 32, 33, 34, 35, + 36, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, 76, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1, -1, 67, 68, -1, -1, 71, -1, 73, -1, -1, 76, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 30, -1, 32, 33, 34, 35, 36, -1, -1, -1, -1, 8, - 9, -1, -1, -1, -1, -1, -1, -1, 76, -1, - -1, -1, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 8, 9, 67, 68, -1, 37, 71, + 9, -1, -1, -1, 76, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, -1, 67, 68, -1, 37, 71, -1, 73, -1, 42, 76, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 8, 9, -1, - -1, -1, 37, 8, 9, -1, -1, -1, -1, -1, - 45, -1, 71, 48, 73, -1, -1, -1, -1, 78, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, + 9, -1, 71, -1, 73, -1, -1, -1, -1, 78, -1, 80, 81, -1, 8, 9, 37, -1, -1, -1, - 8, 9, 37, 44, -1, 46, 71, -1, 73, -1, - -1, -1, -1, 78, 49, 80, 81, -1, 8, 9, - -1, -1, -1, 37, 8, 9, -1, -1, -1, 37, - 71, 45, 73, -1, 48, -1, 71, 78, 73, -1, - 81, -1, -1, 78, -1, 80, 81, 37, 8, 9, - 8, 9, -1, 37, 44, -1, 46, 71, -1, 73, - -1, 69, 70, 71, 78, 73, -1, 81, -1, -1, - 78, 8, 9, 81, -1, 8, 9, 37, -1, 37, - -1, -1, -1, 73, -1, -1, 70, 71, 78, 73, - -1, 81, 50, 51, 78, 8, 9, 81, -1, -1, - 37, 8, 9, -1, 37, -1, -1, -1, -1, -1, - -1, 71, -1, 73, -1, 73, -1, -1, 78, -1, - 78, 81, -1, 81, 37, -1, -1, -1, -1, -1, - 37, -1, -1, -1, 71, -1, 73, -1, 71, -1, - 73, 78, -1, -1, 81, 78, -1, -1, 81, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 71, -1, - 73, -1, -1, -1, 71, 78, 73, -1, 81, -1, - -1, 78, -1, -1, 81, 5, 6, 7, 8, 9, - 10, 11, 12 + -1, 42, -1, 44, -1, 46, 47, -1, 37, 50, + 51, 52, 53, 42, 55, -1, -1, -1, 47, -1, + -1, -1, -1, 37, 8, 9, -1, -1, -1, -1, + 71, 45, 73, -1, 48, -1, -1, 78, -1, 80, + 81, -1, 71, -1, 73, 8, 9, -1, 77, 78, + -1, -1, 81, 37, -1, 8, 9, 71, -1, 73, + 44, -1, 46, -1, 78, -1, 80, 81, -1, -1, + 8, 9, -1, -1, 37, -1, 8, 9, -1, -1, + -1, 44, -1, 46, 37, 8, 9, 71, -1, 73, + -1, 44, -1, 46, 78, -1, -1, 81, -1, 37, + 8, 9, 8, 9, -1, 37, -1, -1, 71, -1, + 73, 49, -1, -1, 37, 78, -1, -1, 81, -1, + 73, -1, 8, 9, -1, 78, -1, -1, 81, 37, + -1, 37, -1, 71, -1, 73, -1, -1, 70, 71, + 78, 73, 80, 81, 50, 51, 78, -1, 71, 81, + 73, 37, 8, 9, -1, 78, -1, -1, 81, 8, + 9, -1, -1, 71, -1, 73, -1, 73, 8, 9, + 78, -1, 78, 81, -1, 81, -1, -1, -1, 8, + 9, 37, -1, 8, 9, 71, -1, 73, 37, 8, + 9, -1, 78, -1, -1, 81, -1, 37, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, + -1, -1, 37, -1, -1, 71, -1, 73, 37, -1, + -1, -1, 78, -1, 73, 81, -1, -1, -1, 78, + -1, 80, 81, 73, -1, -1, -1, -1, 78, -1, + 80, 81, 71, -1, 73, -1, -1, -1, 73, 78, + 69, -1, 81, 78, 73, -1, 81, -1, -1, 78, + -1, -1, 81 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1065,45 +1084,46 @@ static const yytype_uint8 yystos[] = 84, 86, 76, 8, 9, 37, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 71, 73, 78, 80, 81, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 100, 102, 103, 104, 105, 106, 110, - 88, 104, 105, 88, 88, 80, 88, 102, 88, 102, - 88, 78, 98, 110, 47, 71, 77, 78, 87, 97, - 105, 110, 80, 96, 101, 104, 105, 96, 96, 96, - 96, 77, 88, 102, 107, 77, 88, 96, 102, 107, - 107, 100, 102, 106, 110, 106, 106, 107, 102, 102, - 76, 78, 104, 88, 104, 88, 104, 88, 102, 88, - 105, 102, 88, 74, 75, 75, 76, 110, 110, 78, - 78, 78, 78, 6, 8, 9, 108, 103, 110, 111, - 70, 105, 110, 110, 77, 77, 77, 77, 77, 77, + 95, 96, 97, 101, 103, 104, 105, 106, 107, 111, + 88, 105, 106, 88, 88, 80, 88, 103, 88, 103, + 88, 78, 98, 111, 47, 71, 77, 78, 87, 97, + 106, 111, 80, 96, 102, 105, 106, 96, 96, 96, + 96, 77, 88, 103, 108, 77, 88, 96, 103, 108, + 108, 101, 103, 107, 111, 107, 107, 108, 103, 103, + 76, 78, 105, 88, 105, 88, 105, 88, 103, 88, + 106, 103, 88, 74, 75, 75, 76, 111, 111, 78, + 78, 78, 78, 6, 8, 9, 109, 104, 111, 112, + 70, 106, 111, 111, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, - 77, 110, 77, 77, 77, 77, 77, 77, 108, 78, - 87, 105, 110, 89, 77, 77, 78, 9, 69, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 107, 77, - 88, 96, 107, 107, 107, 107, 77, 78, 77, 11, + 77, 111, 77, 77, 77, 77, 77, 77, 109, 78, + 87, 106, 111, 89, 77, 77, 78, 9, 69, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 108, 77, + 88, 96, 108, 108, 108, 108, 77, 78, 77, 11, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 85, 111, 111, 110, 110, 110, 110, 7, - 110, 110, 78, 8, 79, 3, 4, 5, 6, 7, + 77, 77, 85, 112, 112, 111, 111, 111, 111, 7, + 111, 111, 78, 8, 79, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 79, 88, 89, 91, 94, - 97, 102, 104, 105, 88, 88, 88, 97, 96, 97, - 95, 102, 104, 105, 94, 97, 88, 88, 88, 88, - 38, 39, 40, 103, 109, 88, 104, 105, 88, 88, - 88, 88, 103, 88, 103, 88, 103, 88, 102, 103, - 88, 103, 88, 102, 98, 110, 89, 79, 78, 87, - 105, 78, 87, 105, 110, 41, 69, 96, 104, 105, - 96, 96, 96, 96, 96, 96, 96, 103, 103, 102, - 110, 102, 110, 110, 102, 105, 88, 102, 102, 104, - 104, 88, 88, 88, 105, 88, 110, 103, 84, 76, - 76, 79, 79, 79, 79, 108, 109, 103, 111, 111, - 111, 6, 7, 111, 111, 111, 111, 111, 77, 77, + 97, 103, 105, 106, 88, 88, 88, 97, 96, 97, + 95, 103, 105, 106, 94, 97, 88, 88, 88, 88, + 38, 39, 40, 104, 110, 88, 105, 106, 88, 88, + 88, 88, 104, 88, 104, 88, 104, 88, 103, 104, + 88, 104, 88, 103, 98, 111, 89, 79, 78, 87, + 106, 78, 87, 106, 111, 41, 69, 96, 105, 106, + 96, 96, 96, 96, 96, 96, 96, 104, 104, 80, + 111, 103, 111, 111, 103, 106, 88, 103, 103, 105, + 105, 88, 88, 88, 106, 88, 111, 104, 84, 76, + 76, 79, 79, 79, 79, 109, 110, 104, 112, 112, + 112, 6, 7, 112, 112, 112, 112, 112, 77, 77, 79, 79, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 79, 89, 89, 77, 79, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 78, 79, 79, - 111, 111, 47, 91, 95, 88, 88, 88, 88, 88, - 88, 97, 97, 98, 79, 79, 78, 87, 105, 97, - 96, 96, 102, 102, 80, 100, 101, 102, 88, 104, - 99, 102, 110, 99, 102, 88, 39, 89, 77, 9, - 9, 77, 77, 77, 77, 77, 79, 79, 96, 110, - 88, 88, 110, 88, 88 + 77, 79, 89, 89, 77, 79, 77, 77, 77, 9, + 37, 100, 77, 77, 77, 77, 77, 77, 77, 77, + 78, 79, 79, 112, 112, 47, 91, 95, 88, 88, + 88, 88, 88, 88, 97, 97, 98, 79, 79, 78, + 87, 106, 97, 96, 96, 37, 9, 80, 103, 80, + 101, 102, 103, 88, 105, 99, 103, 111, 99, 103, + 88, 39, 89, 77, 9, 37, 100, 9, 77, 77, + 77, 77, 77, 79, 79, 96, 37, 88, 88, 111, + 88, 88 }; #define yyerrok (yyerrstatus = 0) @@ -2708,77 +2728,65 @@ yyreduce: case 117: #line 617 "a.y" { - settext((yyvsp[(2) - (4)].addr).sym); - outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); + settext((yyvsp[(2) - (5)].addr).sym); + outcode((yyvsp[(1) - (5)].lval), &(yyvsp[(2) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr)); } break; case 118: #line 622 "a.y" { - settext((yyvsp[(2) - (6)].addr).sym); - (yyvsp[(6) - (6)].addr).offset &= 0xffffffffull; - (yyvsp[(6) - (6)].addr).offset |= (vlong)ArgsSizeUnknown << 32; - outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); + settext((yyvsp[(2) - (7)].addr).sym); + outcode((yyvsp[(1) - (7)].lval), &(yyvsp[(2) - (7)].addr), (yyvsp[(4) - (7)].lval), &(yyvsp[(7) - (7)].addr)); } break; case 119: -#line 629 "a.y" - { - settext((yyvsp[(2) - (8)].addr).sym); - (yyvsp[(6) - (8)].addr).offset &= 0xffffffffull; - (yyvsp[(6) - (8)].addr).offset |= ((yyvsp[(8) - (8)].lval) & 0xffffffffull) << 32; - outcode((yyvsp[(1) - (8)].lval), &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].addr)); - } - break; - - case 120: -#line 639 "a.y" +#line 630 "a.y" { settext((yyvsp[(2) - (4)].addr).sym); outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); } break; - case 121: -#line 644 "a.y" + case 120: +#line 635 "a.y" { settext((yyvsp[(2) - (6)].addr).sym); outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; + case 121: +#line 644 "a.y" + { + outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); + } + break; + case 122: -#line 653 "a.y" +#line 648 "a.y" { outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; case 123: -#line 657 "a.y" +#line 652 "a.y" { outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; case 124: -#line 661 "a.y" - { - outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); - } - break; - - case 125: -#line 668 "a.y" +#line 659 "a.y" { outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen); } break; - case 126: -#line 674 "a.y" + case 125: +#line 665 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_BRANCH; @@ -2786,8 +2794,8 @@ yyreduce: } break; - case 127: -#line 680 "a.y" + case 126: +#line 671 "a.y" { (yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym)); (yyval.addr) = nullgen; @@ -2798,8 +2806,17 @@ yyreduce: } break; - case 128: -#line 691 "a.y" + case 127: +#line 682 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_REG; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); + } + break; + + case 130: +#line 694 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2808,16 +2825,7 @@ yyreduce: break; case 131: -#line 703 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_REG; - (yyval.addr).reg = (yyvsp[(1) - (1)].lval); - } - break; - - case 132: -#line 711 "a.y" +#line 702 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2825,8 +2833,17 @@ yyreduce: } break; + case 132: +#line 710 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_REG; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); + } + break; + case 133: -#line 719 "a.y" +#line 718 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2835,7 +2852,7 @@ yyreduce: break; case 134: -#line 727 "a.y" +#line 726 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2844,16 +2861,7 @@ yyreduce: break; case 135: -#line 735 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_REG; - (yyval.addr).reg = (yyvsp[(1) - (1)].lval); - } - break; - - case 136: -#line 741 "a.y" +#line 732 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= 1024) yyerror("SPR/DCR out of range"); @@ -2863,8 +2871,17 @@ yyreduce: } break; + case 137: +#line 743 "a.y" + { + (yyval.addr) = nullgen; + (yyval.addr).type = TYPE_REG; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); + } + break; + case 138: -#line 752 "a.y" +#line 751 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2873,16 +2890,7 @@ yyreduce: break; case 139: -#line 760 "a.y" - { - (yyval.addr) = nullgen; - (yyval.addr).type = TYPE_REG; - (yyval.addr).reg = (yyvsp[(1) - (1)].lval); - } - break; - - case 140: -#line 766 "a.y" +#line 757 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2890,8 +2898,8 @@ yyreduce: } break; - case 141: -#line 774 "a.y" + case 140: +#line 765 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2899,8 +2907,8 @@ yyreduce: } break; - case 142: -#line 780 "a.y" + case 141: +#line 771 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2908,8 +2916,8 @@ yyreduce: } break; - case 143: -#line 788 "a.y" + case 142: +#line 779 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_REG; @@ -2917,8 +2925,8 @@ yyreduce: } break; - case 144: -#line 796 "a.y" + case 143: +#line 787 "a.y" { int mb, me; uint32 v; @@ -2939,16 +2947,52 @@ yyreduce: } break; + case 144: +#line 808 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (1)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; + } + break; + case 145: -#line 817 "a.y" +#line 814 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (2)].lval); + (yyval.addr).u.argsize = ArgsSizeUnknown; + } + break; + + case 146: +#line 820 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = (yyvsp[(1) - (3)].lval); + (yyval.addr).u.argsize = (yyvsp[(3) - (3)].lval); + } + break; + + case 147: +#line 826 "a.y" + { + (yyval.addr).type = TYPE_TEXTSIZE; + (yyval.addr).offset = -(yyvsp[(2) - (4)].lval); + (yyval.addr).u.argsize = (yyvsp[(4) - (4)].lval); + } + break; + + case 148: +#line 834 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).type = TYPE_CONST; } break; - case 146: -#line 822 "a.y" + case 149: +#line 839 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_SCONST; @@ -2956,8 +3000,8 @@ yyreduce: } break; - case 147: -#line 830 "a.y" + case 150: +#line 847 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2965,8 +3009,8 @@ yyreduce: } break; - case 148: -#line 836 "a.y" + case 151: +#line 853 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_FCONST; @@ -2974,8 +3018,8 @@ yyreduce: } break; - case 149: -#line 843 "a.y" + case 152: +#line 860 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_CONST; @@ -2983,8 +3027,8 @@ yyreduce: } break; - case 151: -#line 852 "a.y" + case 154: +#line 869 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= NREG) print("register value out of range\n"); @@ -2992,8 +3036,8 @@ yyreduce: } break; - case 152: -#line 860 "a.y" + case 155: +#line 877 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -3002,8 +3046,8 @@ yyreduce: } break; - case 153: -#line 867 "a.y" + case 156: +#line 884 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -3013,8 +3057,8 @@ yyreduce: } break; - case 155: -#line 878 "a.y" + case 158: +#line 895 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -3023,8 +3067,8 @@ yyreduce: } break; - case 156: -#line 887 "a.y" + case 159: +#line 904 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -3034,8 +3078,8 @@ yyreduce: } break; - case 157: -#line 895 "a.y" + case 160: +#line 912 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -3045,8 +3089,8 @@ yyreduce: } break; - case 158: -#line 903 "a.y" + case 161: +#line 920 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = TYPE_MEM; @@ -3056,127 +3100,127 @@ yyreduce: } break; - case 161: -#line 915 "a.y" + case 164: +#line 932 "a.y" { (yyval.lval) = 0; } break; - case 162: -#line 919 "a.y" + case 165: +#line 936 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 163: -#line 923 "a.y" + case 166: +#line 940 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 168: -#line 935 "a.y" + case 171: +#line 952 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; - case 169: -#line 939 "a.y" + case 172: +#line 956 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; - case 170: -#line 943 "a.y" + case 173: +#line 960 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; - case 171: -#line 947 "a.y" + case 174: +#line 964 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; - case 172: -#line 951 "a.y" + case 175: +#line 968 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; - case 174: -#line 958 "a.y" + case 177: +#line 975 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; - case 175: -#line 962 "a.y" + case 178: +#line 979 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; - case 176: -#line 966 "a.y" + case 179: +#line 983 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; - case 177: -#line 970 "a.y" + case 180: +#line 987 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; - case 178: -#line 974 "a.y" + case 181: +#line 991 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; - case 179: -#line 978 "a.y" + case 182: +#line 995 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; - case 180: -#line 982 "a.y" + case 183: +#line 999 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; - case 181: -#line 986 "a.y" + case 184: +#line 1003 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; - case 182: -#line 990 "a.y" + case 185: +#line 1007 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; - case 183: -#line 994 "a.y" + case 186: +#line 1011 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } @@ -3184,7 +3228,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 3188 "y.tab.c" +#line 3232 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/cmd/9g/ggen.c b/src/cmd/9g/ggen.c index 2ee4541fa6..f1bfb99b9a 100644 --- a/src/cmd/9g/ggen.c +++ b/src/cmd/9g/ggen.c @@ -21,13 +21,11 @@ defframe(Prog *ptxt) NodeList *l; Node *n; - // fill in argument size - ptxt->to.offset = rnd(curfn->type->argwid, widthptr); - - // fill in final stack size - ptxt->to.offset <<= 32; + // fill in argument size, stack size + ptxt->to.type = TYPE_TEXTSIZE; + ptxt->to.u.argsize = rnd(curfn->type->argwid, widthptr); frame = rnd(stksize+maxarg, widthreg); - ptxt->to.offset |= frame; + ptxt->to.offset = frame; // insert code to zero ambiguously live variables // so that the garbage collector only sees initialized values diff --git a/src/cmd/9l/9.out.h b/src/cmd/9l/9.out.h index 31aeaff7b7..66ee8c43cb 100644 --- a/src/cmd/9l/9.out.h +++ b/src/cmd/9l/9.out.h @@ -286,6 +286,7 @@ enum C_ANY, C_GOK, C_ADDR, + C_TEXTSIZE, C_NCLASS, /* must be the last */ }; diff --git a/src/liblink/asm5.c b/src/liblink/asm5.c index 35bd458cdf..38a7399725 100644 --- a/src/liblink/asm5.c +++ b/src/liblink/asm5.c @@ -71,8 +71,8 @@ static Optab optab[] = { /* struct Optab: OPCODE, from, prog->reg, to, type,size,param,flag */ - { ATEXT, C_ADDR, C_NONE, C_LCON, 0, 0, 0 }, - { ATEXT, C_ADDR, C_REG, C_LCON, 0, 0, 0 }, + { ATEXT, C_ADDR, C_NONE, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_ADDR, C_REG, C_TEXTSIZE, 0, 0, 0 }, { AADD, C_REG, C_REG, C_REG, 1, 4, 0 }, { AADD, C_REG, C_NONE, C_REG, 1, 4, 0 }, @@ -1122,8 +1122,10 @@ aclass(Link *ctxt, Addr *a) return C_SFCON; return C_LFCON; - case TYPE_CONST: case TYPE_TEXTSIZE: + return C_TEXTSIZE; + + case TYPE_CONST: switch(a->name) { case TYPE_NONE: diff --git a/src/liblink/asm6.c b/src/liblink/asm6.c index c26d958b8e..ee248d272a 100644 --- a/src/liblink/asm6.c +++ b/src/liblink/asm6.c @@ -113,6 +113,7 @@ enum Ymr, Ymm, Yxr, Yxm, Ytls, + Ytextsize, Ymax, Zxxx = 0, @@ -197,7 +198,7 @@ static uchar ynone[] = }; static uchar ytext[] = { - Ymb, Yi64, Zpseudo,1, + Ymb, Ytextsize, Zpseudo,1, 0 }; static uchar ynop[] = @@ -1998,6 +1999,9 @@ oclass(Link *ctxt, Addr *a) if((v>>32) == 0) return Yi32; /* unsigned */ return Yi64; + + case TYPE_TEXTSIZE: + return Ytextsize; } if(a->type != TYPE_REG) { diff --git a/src/liblink/asm8.c b/src/liblink/asm8.c index fa20d14b1b..5d6a7f7d4f 100644 --- a/src/liblink/asm8.c +++ b/src/liblink/asm8.c @@ -76,6 +76,7 @@ enum Ym, Ybr, Ycol, + Ytextsize, Ytls, Ycs, Yss, Yds, Yes, Yfs, Ygs, @@ -150,7 +151,7 @@ static uchar ynone[] = }; static uchar ytext[] = { - Ymb, Yi32, Zpseudo,1, + Ymb, Ytextsize, Zpseudo,1, 0 }; static uchar ynop[] = @@ -1538,7 +1539,6 @@ oclass(Link *ctxt, Addr *a) // fall through case TYPE_CONST: - case TYPE_TEXTSIZE: if(a->sym != nil) ctxt->diag("TYPE_CONST with symbol: %D", a); @@ -1550,6 +1550,9 @@ oclass(Link *ctxt, Addr *a) if(v >= -128 && v <= 127) return Yi8; return Yi32; + + case TYPE_TEXTSIZE: + return Ytextsize; } if(a->type != TYPE_REG) { diff --git a/src/liblink/asm9.c b/src/liblink/asm9.c index 3ae8c48442..9101c56c51 100644 --- a/src/liblink/asm9.c +++ b/src/liblink/asm9.c @@ -59,14 +59,14 @@ struct Optab }; static Optab optab[] = { - { ATEXT, C_LEXT, C_NONE, C_NONE, C_LCON, 0, 0, 0 }, - { ATEXT, C_LEXT, C_REG, C_NONE, C_LCON, 0, 0, 0 }, - { ATEXT, C_LEXT, C_NONE, C_LCON, C_LCON, 0, 0, 0 }, - { ATEXT, C_LEXT, C_REG, C_LCON, C_LCON, 0, 0, 0 }, - { ATEXT, C_ADDR, C_NONE, C_NONE, C_LCON, 0, 0, 0 }, - { ATEXT, C_ADDR, C_REG, C_NONE, C_LCON, 0, 0, 0 }, - { ATEXT, C_ADDR, C_NONE, C_LCON, C_LCON, 0, 0, 0 }, - { ATEXT, C_ADDR, C_REG, C_LCON, C_LCON, 0, 0, 0 }, + { ATEXT, C_LEXT, C_NONE, C_NONE, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_LEXT, C_REG, C_NONE, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_LEXT, C_NONE, C_LCON, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_LEXT, C_REG, C_LCON, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_ADDR, C_NONE, C_NONE, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_ADDR, C_REG, C_NONE, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_ADDR, C_NONE, C_LCON, C_TEXTSIZE, 0, 0, 0 }, + { ATEXT, C_ADDR, C_REG, C_LCON, C_TEXTSIZE, 0, 0, 0 }, /* move register */ { AMOVD, C_REG, C_NONE, C_NONE, C_REG, 1, 4, 0 }, @@ -497,7 +497,7 @@ span9(Link *ctxt, LSym *cursym) if(p == nil || p->link == nil) // handle external functions and ELF section symbols return; ctxt->cursym = cursym; - ctxt->autosize = (int32)(p->to.offset & 0xffffffffll) + 8; + ctxt->autosize = p->to.offset + 8; if(oprange[AANDN].start == nil) buildop(ctxt); @@ -673,6 +673,9 @@ aclass(Link *ctxt, Addr *a) } return C_GOK; + case TYPE_TEXTSIZE: + return C_TEXTSIZE; + case TYPE_CONST: switch(a->name) { case TYPE_NONE: diff --git a/src/liblink/list5.c b/src/liblink/list5.c index f88f579ed9..d04c8c27a8 100644 --- a/src/liblink/list5.c +++ b/src/liblink/list5.c @@ -33,6 +33,7 @@ #include #include #include "../cmd/5l/5.out.h" +#include "../runtime/funcdata.h" enum { @@ -163,7 +164,10 @@ Dconv(Fmt *fp) break; case TYPE_TEXTSIZE: - sprint(str, "$%lld-%d", a->offset, a->u.argsize); + if(a->u.argsize == ArgsSizeUnknown) + sprint(str, "$%lld", a->offset); + else + sprint(str, "$%lld-%lld", a->offset, a->u.argsize); break; case TYPE_SHIFT: diff --git a/src/liblink/list6.c b/src/liblink/list6.c index 3dbb880caa..2cb1777ba4 100644 --- a/src/liblink/list6.c +++ b/src/liblink/list6.c @@ -33,13 +33,13 @@ #include #include #include "../cmd/6l/6.out.h" +#include "../runtime/funcdata.h" // // Format conversions // %A int Opcodes (instruction mnemonics) // // %D Addr* Addresses (instruction operands) -// Flags: "%lD": seperate the high and low words of a constant by "-" // // %P Prog* Instructions // @@ -91,11 +91,11 @@ Pconv(Fmt *fp) case ATEXT: if(p->from.scale) { - sprint(str, "%.5lld (%L) %A %D,%d,%lD", + sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, p->as, &p->from, p->from.scale, &p->to); break; } - sprint(str, "%.5lld (%L) %A %D,%lD", + sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, p->as, &p->from, &p->to); break; @@ -194,10 +194,6 @@ Dconv(Fmt *fp) break; case TYPE_CONST: - if(fp->flags & FmtLong) { - sprint(str, "$%lld-%lld", a->offset&0xffffffffLL, a->offset>>32); - break; - } sprint(str, "$%lld", a->offset); // TODO(rsc): This special case is for SHRQ $32, AX:DX, which encodes as // SHRQ $32(DX*0), AX @@ -207,6 +203,13 @@ Dconv(Fmt *fp) strcat(str, s); } break; + + case TYPE_TEXTSIZE: + if(a->u.argsize == ArgsSizeUnknown) + sprint(str, "$%lld", a->offset); + else + sprint(str, "$%lld-%lld", a->offset, a->u.argsize); + break; case TYPE_FCONST: sprint(str, "$(%.17g)", a->u.dval); diff --git a/src/liblink/list8.c b/src/liblink/list8.c index 60f03206bd..33c0791a19 100644 --- a/src/liblink/list8.c +++ b/src/liblink/list8.c @@ -33,6 +33,7 @@ #include #include #include "../cmd/8l/8.out.h" +#include "../runtime/funcdata.h" static int Aconv(Fmt *fp); static int Dconv(Fmt *fp); @@ -77,11 +78,11 @@ Pconv(Fmt *fp) case ATEXT: if(p->from.scale) { - sprint(str, "%.5lld (%L) %A %D,%d,%lD", + sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, p->as, &p->from, p->from.scale, &p->to); break; } - sprint(str, "%.5lld (%L) %A %D,%lD", + sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, p->as, &p->from, &p->to); break; @@ -198,7 +199,10 @@ Dconv(Fmt *fp) break; case TYPE_TEXTSIZE: - sprint(str, "$%lld-%d", a->offset, a->u.argsize); + if(a->u.argsize == ArgsSizeUnknown) + sprint(str, "$%lld", a->offset); + else + sprint(str, "$%lld-%lld", a->offset, a->u.argsize); break; case TYPE_FCONST: diff --git a/src/liblink/list9.c b/src/liblink/list9.c index f688b50751..149d713fe8 100644 --- a/src/liblink/list9.c +++ b/src/liblink/list9.c @@ -32,6 +32,7 @@ #include #include #include "../cmd/9l/9.out.h" +#include "../runtime/funcdata.h" enum { @@ -51,7 +52,6 @@ static int DRconv(Fmt*); // %A int Opcodes (instruction mnemonics) // // %D Addr* Addresses (instruction operands) -// Flags: "%lD": seperate the high and low words of a constant by "-" // // %P Prog* Instructions // @@ -97,9 +97,9 @@ Pconv(Fmt *fp) sprint(str, "%.5lld (%L) %A %D/%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to); else if(a == ATEXT) { if(p->reg != 0) - sprint(str, "%.5lld (%L) %A %D,%d,%lD", p->pc, p->lineno, a, &p->from, p->reg, &p->to); + sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to); else - sprint(str, "%.5lld (%L) %A %D,%lD", p->pc, p->lineno, a, &p->from, &p->to); + sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, a, &p->from, &p->to); } else if(a == AGLOBL) { if(p->reg != 0) sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to); @@ -154,16 +154,6 @@ Dconv(Fmt *fp) a = va_arg(fp->args, Addr*); - if(fp->flags & FmtLong) { - if(a->type == TYPE_CONST) - sprint(str, "$%d-%d", (int32)a->offset, (int32)(a->offset>>32)); - else { - // ATEXT dst is not constant - sprint(str, "!!%D", a); - } - goto ret; - } - switch(a->type) { default: sprint(str, "GOK-type(%d)", a->type); @@ -182,6 +172,13 @@ Dconv(Fmt *fp) sprint(str, "$%M", a); break; + case TYPE_TEXTSIZE: + if(a->u.argsize == ArgsSizeUnknown) + sprint(str, "$%lld", a->offset); + else + sprint(str, "$%lld-%lld", a->offset, a->u.argsize); + break; + case TYPE_MEM: if(a->reg != 0) sprint(str, "%M(%R)", a, a->reg); @@ -222,7 +219,6 @@ Dconv(Fmt *fp) break; } -ret: return fmtstrcpy(fp, str); } diff --git a/src/liblink/obj6.c b/src/liblink/obj6.c index 0ccb03924f..2b51061a0b 100644 --- a/src/liblink/obj6.c +++ b/src/liblink/obj6.c @@ -361,26 +361,13 @@ static Prog* load_g_cx(Link*, Prog*); static Prog* stacksplit(Link*, Prog*, int32, int32, int, Prog**); static void indir_cx(Link*, Addr*); -static void -parsetextconst(vlong arg, vlong *textstksiz, vlong *textarg) -{ - *textstksiz = arg & 0xffffffffLL; - if(*textstksiz & 0x80000000LL) - *textstksiz = -(-*textstksiz & 0xffffffffLL); - - *textarg = (arg >> 32) & 0xffffffffLL; - if(*textarg & 0x80000000LL) - *textarg = 0; - *textarg = (*textarg+7) & ~7LL; -} - static void preprocess(Link *ctxt, LSym *cursym) { Prog *p, *q, *p1, *p2; int32 autoffset, deltasp; int a, pcsize, bpsize; - vlong textstksiz, textarg; + vlong textarg; if(ctxt->tlsg == nil) ctxt->tlsg = linklookup(ctxt, "runtime.tlsg", 0); @@ -398,8 +385,7 @@ preprocess(Link *ctxt, LSym *cursym) return; p = cursym->text; - parsetextconst(p->to.offset, &textstksiz, &textarg); - autoffset = textstksiz; + autoffset = p->to.offset; if(autoffset < 0) autoffset = 0; @@ -409,14 +395,14 @@ preprocess(Link *ctxt, LSym *cursym) // another function, so in that case we omit this. bpsize = ctxt->arch->ptrsize; autoffset += bpsize; - textstksiz += bpsize; - p->to.offset = ((uint64)p->to.offset & (0xffffffffull<<32)) | (uint32)autoffset; + p->to.offset += bpsize; } else { bpsize = 0; } - cursym->args = p->to.offset>>32; - cursym->locals = textstksiz; + textarg = p->to.u.argsize; + cursym->args = textarg; + cursym->locals = p->to.offset; if(autoffset < StackSmall && !(p->from.scale & NOSPLIT)) { for(q = p; q != nil; q = q->link) { diff --git a/src/liblink/obj9.c b/src/liblink/obj9.c index 93c63722f8..6f7652f5f8 100644 --- a/src/liblink/obj9.c +++ b/src/liblink/obj9.c @@ -162,25 +162,12 @@ progedit(Link *ctxt, Prog *p) static Prog* stacksplit(Link*, Prog*, int32, int); -static void -parsetextconst(vlong arg, vlong *textstksiz, vlong *textarg) -{ - *textstksiz = arg & 0xffffffffLL; - if(*textstksiz & 0x80000000LL) - *textstksiz = -(-*textstksiz & 0xffffffffLL); - - *textarg = (arg >> 32) & 0xffffffffLL; - if(*textarg & 0x80000000LL) - *textarg = 0; - *textarg = (*textarg+7) & ~7LL; -} - static void preprocess(Link *ctxt, LSym *cursym) { Prog *p, *q, *p1, *p2, *q1; int o, mov, aoffset; - vlong textstksiz, textarg; + vlong textstksiz; int32 autosize; if(ctxt->symmorestack[0] == nil) { @@ -195,9 +182,9 @@ preprocess(Link *ctxt, LSym *cursym) return; p = cursym->text; - parsetextconst(p->to.offset, &textstksiz, &textarg); + textstksiz = p->to.offset; - cursym->args = p->to.offset>>32; + cursym->args = p->to.u.argsize; cursym->locals = textstksiz; /* @@ -378,7 +365,7 @@ preprocess(Link *ctxt, LSym *cursym) else if(autosize & 4) autosize += 4; - p->to.offset = ((uint64)p->to.offset & (0xffffffffull<<32)) | (uint32)(autosize-8); + p->to.offset = autosize-8; if(!(p->reg & NOSPLIT)) p = stacksplit(ctxt, p, autosize, !(cursym->text->reg&NEEDCTXT)); // emit split check