diff options
Diffstat (limited to 'src/cmd/5a/y.tab.c')
-rw-r--r-- | src/cmd/5a/y.tab.c | 981 |
1 files changed, 432 insertions, 549 deletions
diff --git a/src/cmd/5a/y.tab.c b/src/cmd/5a/y.tab.c index dd102a09a..0bc8c34e1 100644 --- a/src/cmd/5a/y.tab.c +++ b/src/cmd/5a/y.tab.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 2.7.12-4996. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.5" +#define YYBISON_VERSION "2.7.12-4996" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -58,14 +58,11 @@ /* Pull parsers. */ #define YYPULL 1 -/* Using locations. */ -#define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ - -/* Line 268 of yacc.c */ +/* Line 371 of yacc.c */ #line 31 "a.y" #include <u.h> @@ -74,14 +71,16 @@ #include "a.h" #include "../../pkg/runtime/funcdata.h" +/* Line 371 of yacc.c */ +#line 76 "y.tab.c" -/* Line 268 of yacc.c */ -#line 80 "y.tab.c" - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -91,11 +90,17 @@ # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; #endif - /* Tokens. */ #ifndef YYTOKENTYPE @@ -205,36 +210,49 @@ - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { - -/* Line 293 of yacc.c */ +/* Line 387 of yacc.c */ #line 39 "a.y" Sym *sym; int32 lval; double dval; char sval[8]; - Gen gen; + Addr addr; - -/* Line 293 of yacc.c */ -#line 226 "y.tab.c" +/* Line 387 of yacc.c */ +#line 228 "y.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif +extern YYSTYPE yylval; -/* Copy the second part of user declarations. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ +/* Copy the second part of user declarations. */ -/* Line 343 of yacc.c */ -#line 238 "y.tab.c" +/* Line 390 of yacc.c */ +#line 256 "y.tab.c" #ifdef short # undef short @@ -287,24 +305,33 @@ typedef short int yytype_int16; # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif + /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint -# define YYID(n) (n) +# define YYID(N) (N) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) @@ -340,6 +367,7 @@ YYID (yyi) # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif @@ -431,20 +459,20 @@ union yyalloc #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from FROM to TO. The source and destination do +/* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ while (YYID (0)) # endif # endif @@ -594,19 +622,19 @@ static const yytype_uint16 yyrline[] = 141, 148, 155, 162, 169, 176, 185, 197, 201, 205, 212, 219, 225, 231, 240, 247, 254, 261, 265, 269, 273, 280, 302, 310, 319, 326, 335, 346, 352, 355, - 359, 364, 365, 368, 374, 383, 391, 397, 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 + 359, 364, 365, 368, 374, 382, 389, 395, 400, 405, + 411, 414, 420, 428, 432, 441, 447, 448, 449, 450, + 455, 461, 467, 473, 474, 477, 478, 486, 495, 496, + 505, 506, 512, 515, 516, 517, 519, 527, 535, 544, + 550, 556, 562, 570, 576, 584, 585, 589, 597, 598, + 604, 605, 613, 614, 617, 623, 631, 639, 647, 657, + 660, 664, 670, 671, 672, 675, 676, 680, 684, 688, + 692, 698, 701, 707, 708, 712, 716, 720, 724, 728, + 732, 736, 740, 744 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -623,7 +651,7 @@ static const char *const yytname[] = "$@1", "line", "$@2", "$@3", "inst", "cond", "comma", "rel", "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 + "frcon", "freg", "name", "offset", "pointer", "con", "oexpr", "expr", YY_NULL }; #endif @@ -850,10 +878,10 @@ static const yytype_int16 yytable[] = 202, 203, 204, 198, 199, 200, 201, 202, 203, 204 }; -#define yypact_value_is_default(yystate) \ - ((yystate) == (-128)) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-128))) -#define yytable_value_is_error(yytable_value) \ +#define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = @@ -988,62 +1016,35 @@ static const yytype_uint8 yystos[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) - +/* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif - - /* This macro is provided for backward compatibility. */ - #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ - #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else @@ -1093,6 +1094,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) YYSTYPE const * const yyvaluep; #endif { + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT @@ -1101,11 +1104,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) # else YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -1344,12 +1343,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = 0; + const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1409,11 +1407,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, break; } yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } } } } @@ -1433,10 +1433,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, # undef YYCASE_ } - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } if (*yymsg_alloc < yysize) { @@ -1492,36 +1494,26 @@ yydestruct (yymsg, yytype, yyvaluep) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YYUSE (yytype); } -/* Prevent warnings from -Wmissing-prototypes. */ -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ /* The lookahead symbol. */ int yychar; + +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + /* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; @@ -1561,7 +1553,7 @@ yyparse () `yyss': related to states. `yyvs': related to semantic values. - Refer to the stacks thru separate pointers, to allow yyoverflow + Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ @@ -1579,7 +1571,7 @@ yyparse () int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ - int yytoken; + int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; @@ -1597,9 +1589,8 @@ yyparse () Keep to zero when no symbol should be popped. */ int yylen = 0; - yytoken = 0; - yyss = yyssa; - yyvs = yyvsa; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); @@ -1608,14 +1599,6 @@ yyparse () yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - yyssp = yyss; - yyvsp = yyvs; - goto yysetstate; /*------------------------------------------------------------. @@ -1756,7 +1739,9 @@ yybackup: yychar = YYEMPTY; yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; @@ -1793,8 +1778,7 @@ yyreduce: switch (yyn) { case 3: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 70 "a.y" { stmtline = lineno; @@ -1802,8 +1786,7 @@ yyreduce: break; case 5: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 77 "a.y" { if((yyvsp[(1) - (2)].sym)->value != pc) @@ -1813,8 +1796,7 @@ yyreduce: break; case 7: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 84 "a.y" { (yyvsp[(1) - (2)].sym)->type = LLAB; @@ -1823,8 +1805,7 @@ yyreduce: break; case 9: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 90 "a.y" { (yyvsp[(1) - (4)].sym)->type = LVAR; @@ -1833,8 +1814,7 @@ yyreduce: break; case 10: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 95 "a.y" { if((yyvsp[(1) - (4)].sym)->value != (yyvsp[(3) - (4)].lval)) @@ -1844,162 +1824,145 @@ yyreduce: break; case 14: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 109 "a.y" { - outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].gen)); + outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr)); } break; case 15: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 113 "a.y" { - outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].lval), &nullgen); + outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].lval), &nullgen); } break; case 16: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 117 "a.y" { - outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen)); + outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 17: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 124 "a.y" { - outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen)); + outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 18: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 131 "a.y" { - outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen)); + outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 19: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 138 "a.y" { - outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].gen)); + outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); } break; case 20: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 142 "a.y" { - outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].gen)); + outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); } break; case 21: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 149 "a.y" { - outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen)); + outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); } break; case 22: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 156 "a.y" { - outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen)); + outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); } break; case 23: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 163 "a.y" { - outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].gen)); + outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); } break; case 24: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 170 "a.y" { - outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].lval), &nullgen); + outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].lval), &nullgen); } break; case 25: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 177 "a.y" { - Gen g; + Addr g; g = nullgen; g.type = D_CONST; g.offset = (yyvsp[(6) - (7)].lval); - outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), NREG, &g); + outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), NREG, &g); } break; case 26: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 186 "a.y" { - Gen g; + Addr g; g = nullgen; g.type = D_CONST; g.offset = (yyvsp[(4) - (7)].lval); - outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &g, NREG, &(yyvsp[(7) - (7)].gen)); + outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &g, NREG, &(yyvsp[(7) - (7)].addr)); } break; case 27: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 198 "a.y" { - outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(5) - (7)].gen), (yyvsp[(3) - (7)].gen).reg, &(yyvsp[(7) - (7)].gen)); + outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(5) - (7)].addr), (yyvsp[(3) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr)); } break; case 28: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 202 "a.y" { - outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].gen), (yyvsp[(3) - (6)].gen).reg, &(yyvsp[(3) - (6)].gen)); + outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].addr), (yyvsp[(3) - (6)].addr).reg, &(yyvsp[(3) - (6)].addr)); } break; case 29: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 206 "a.y" { - outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(4) - (6)].gen), (yyvsp[(6) - (6)].gen).reg, &(yyvsp[(6) - (6)].gen)); + outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(4) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(6) - (6)].addr)); } break; case 30: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 213 "a.y" { outcode((yyvsp[(1) - (3)].lval), (yyvsp[(2) - (3)].lval), &nullgen, NREG, &nullgen); @@ -2007,107 +1970,96 @@ yyreduce: break; case 31: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 220 "a.y" { - (yyvsp[(4) - (4)].gen).type = D_CONST2; - (yyvsp[(4) - (4)].gen).offset2 = ArgsSizeUnknown; - outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].gen), 0, &(yyvsp[(4) - (4)].gen)); + (yyvsp[(4) - (4)].addr).type = D_CONST2; + (yyvsp[(4) - (4)].addr).offset2 = ArgsSizeUnknown; + outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); } break; case 32: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 226 "a.y" { - (yyvsp[(6) - (6)].gen).type = D_CONST2; - (yyvsp[(6) - (6)].gen).offset2 = ArgsSizeUnknown; - outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].gen), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].gen)); + (yyvsp[(6) - (6)].addr).type = D_CONST2; + (yyvsp[(6) - (6)].addr).offset2 = ArgsSizeUnknown; + outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; case 33: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 232 "a.y" { - (yyvsp[(6) - (8)].gen).type = D_CONST2; - (yyvsp[(6) - (8)].gen).offset2 = (yyvsp[(8) - (8)].lval); - outcode((yyvsp[(1) - (8)].lval), Always, &(yyvsp[(2) - (8)].gen), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].gen)); + (yyvsp[(6) - (8)].addr).type = D_CONST2; + (yyvsp[(6) - (8)].addr).offset2 = (yyvsp[(8) - (8)].lval); + outcode((yyvsp[(1) - (8)].lval), Always, &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].addr)); } break; case 34: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 241 "a.y" { - outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].gen), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].gen)); + outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; case 35: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 248 "a.y" { - outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].gen), NREG, &nullgen); + outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].addr), NREG, &nullgen); } break; case 36: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 255 "a.y" { - outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen)); + outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); } break; case 37: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 262 "a.y" { - outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen)); + outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 38: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 266 "a.y" { - outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen)); + outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 39: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 270 "a.y" { - outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].gen)); + 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 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 274 "a.y" { - outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].gen).reg, &nullgen); + outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].addr).reg, &nullgen); } break; case 41: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 281 "a.y" { - Gen g; + Addr g; g = nullgen; g.type = D_CONST; @@ -2122,66 +2074,60 @@ yyreduce: (((yyvsp[(11) - (12)].lval) & 15) << 0) | /* Crm */ (((yyvsp[(12) - (12)].lval) & 7) << 5) | /* coprocessor information */ (1<<4); /* must be set */ - outcode(AWORD, Always, &nullgen, NREG, &g); + outcode(AMRC, Always, &nullgen, NREG, &g); } break; case 42: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 303 "a.y" { - outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].gen).reg, &(yyvsp[(7) - (7)].gen)); + 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 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 311 "a.y" { - (yyvsp[(7) - (9)].gen).type = D_REGREG2; - (yyvsp[(7) - (9)].gen).offset = (yyvsp[(9) - (9)].lval); - outcode((yyvsp[(1) - (9)].lval), (yyvsp[(2) - (9)].lval), &(yyvsp[(3) - (9)].gen), (yyvsp[(5) - (9)].gen).reg, &(yyvsp[(7) - (9)].gen)); + (yyvsp[(7) - (9)].addr).type = D_REGREG2; + (yyvsp[(7) - (9)].addr).offset = (yyvsp[(9) - (9)].lval); + outcode((yyvsp[(1) - (9)].lval), (yyvsp[(2) - (9)].lval), &(yyvsp[(3) - (9)].addr), (yyvsp[(5) - (9)].addr).reg, &(yyvsp[(7) - (9)].addr)); } break; case 44: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 320 "a.y" { - outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].gen), NREG, &nullgen); + outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].addr), NREG, &nullgen); } break; case 45: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 327 "a.y" { - if((yyvsp[(2) - (4)].gen).type != D_CONST || (yyvsp[(4) - (4)].gen).type != D_CONST) + if((yyvsp[(2) - (4)].addr).type != D_CONST || (yyvsp[(4) - (4)].addr).type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); - outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].gen), NREG, &(yyvsp[(4) - (4)].gen)); + outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), NREG, &(yyvsp[(4) - (4)].addr)); } break; case 46: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 336 "a.y" { - if((yyvsp[(2) - (4)].gen).type != D_CONST) + if((yyvsp[(2) - (4)].addr).type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); - if((yyvsp[(4) - (4)].gen).type != D_EXTERN && (yyvsp[(4) - (4)].gen).type != D_STATIC) + if((yyvsp[(4) - (4)].addr).type != D_EXTERN && (yyvsp[(4) - (4)].addr).type != D_STATIC && (yyvsp[(4) - (4)].addr).type != D_OREG) yyerror("value for FUNCDATA must be symbol reference"); - outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].gen), NREG, &(yyvsp[(4) - (4)].gen)); + outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), NREG, &(yyvsp[(4) - (4)].addr)); } break; case 47: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 347 "a.y" { outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, NREG, &nullgen); @@ -2189,8 +2135,7 @@ yyreduce: break; case 48: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 352 "a.y" { (yyval.lval) = Always; @@ -2198,8 +2143,7 @@ yyreduce: break; case 49: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 356 "a.y" { (yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval); @@ -2207,8 +2151,7 @@ yyreduce: break; case 50: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 360 "a.y" { (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); @@ -2216,119 +2159,106 @@ yyreduce: break; case 53: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 369 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_BRANCH; - (yyval.gen).offset = (yyvsp[(1) - (4)].lval) + pc; + (yyval.addr) = nullgen; + (yyval.addr).type = D_BRANCH; + (yyval.addr).offset = (yyvsp[(1) - (4)].lval) + pc; } break; case 54: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 375 "a.y" { - (yyval.gen) = nullgen; + (yyval.addr) = nullgen; if(pass == 2) yyerror("undefined label: %s", (yyvsp[(1) - (2)].sym)->name); - (yyval.gen).type = D_BRANCH; - (yyval.gen).sym = (yyvsp[(1) - (2)].sym); - (yyval.gen).offset = (yyvsp[(2) - (2)].lval); + (yyval.addr).type = D_BRANCH; + (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 55: - -/* Line 1806 of yacc.c */ -#line 384 "a.y" +/* Line 1787 of yacc.c */ +#line 383 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_BRANCH; - (yyval.gen).sym = (yyvsp[(1) - (2)].sym); - (yyval.gen).offset = (yyvsp[(1) - (2)].sym)->value + (yyvsp[(2) - (2)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_BRANCH; + (yyval.addr).offset = (yyvsp[(1) - (2)].sym)->value + (yyvsp[(2) - (2)].lval); } break; case 56: - -/* Line 1806 of yacc.c */ -#line 392 "a.y" +/* Line 1787 of yacc.c */ +#line 390 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_CONST; - (yyval.gen).offset = (yyvsp[(2) - (2)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_CONST; + (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 57: - -/* Line 1806 of yacc.c */ -#line 398 "a.y" +/* Line 1787 of yacc.c */ +#line 396 "a.y" { - (yyval.gen) = (yyvsp[(2) - (2)].gen); - (yyval.gen).type = D_CONST; + (yyval.addr) = (yyvsp[(2) - (2)].addr); + (yyval.addr).type = D_CONST; } break; case 58: - -/* Line 1806 of yacc.c */ -#line 403 "a.y" +/* Line 1787 of yacc.c */ +#line 401 "a.y" { - (yyval.gen) = (yyvsp[(4) - (4)].gen); - (yyval.gen).type = D_OCONST; + (yyval.addr) = (yyvsp[(4) - (4)].addr); + (yyval.addr).type = D_OCONST; } break; case 59: - -/* Line 1806 of yacc.c */ -#line 408 "a.y" +/* Line 1787 of yacc.c */ +#line 406 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_SCONST; - memcpy((yyval.gen).sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.gen).sval)); + (yyval.addr) = nullgen; + (yyval.addr).type = D_SCONST; + memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); } break; case 61: - -/* Line 1806 of yacc.c */ -#line 417 "a.y" +/* Line 1787 of yacc.c */ +#line 415 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_FCONST; - (yyval.gen).dval = (yyvsp[(2) - (2)].dval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_FCONST; + (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); } break; case 62: - -/* Line 1806 of yacc.c */ -#line 423 "a.y" +/* Line 1787 of yacc.c */ +#line 421 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_FCONST; - (yyval.gen).dval = -(yyvsp[(3) - (3)].dval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_FCONST; + (yyval.addr).u.dval = -(yyvsp[(3) - (3)].dval); } break; case 63: - -/* Line 1806 of yacc.c */ -#line 431 "a.y" +/* Line 1787 of yacc.c */ +#line 429 "a.y" { (yyval.lval) = 1 << (yyvsp[(1) - (1)].lval); } break; case 64: - -/* Line 1806 of yacc.c */ -#line 435 "a.y" +/* Line 1787 of yacc.c */ +#line 433 "a.y" { int i; (yyval.lval)=0; @@ -2340,185 +2270,168 @@ yyreduce: break; case 65: - -/* Line 1806 of yacc.c */ -#line 444 "a.y" +/* Line 1787 of yacc.c */ +#line 442 "a.y" { (yyval.lval) = (1<<(yyvsp[(1) - (3)].lval)) | (yyvsp[(3) - (3)].lval); } break; case 69: - -/* Line 1806 of yacc.c */ -#line 453 "a.y" +/* Line 1787 of yacc.c */ +#line 451 "a.y" { - (yyval.gen) = (yyvsp[(1) - (4)].gen); - (yyval.gen).reg = (yyvsp[(3) - (4)].lval); + (yyval.addr) = (yyvsp[(1) - (4)].addr); + (yyval.addr).reg = (yyvsp[(3) - (4)].lval); } break; case 70: - -/* Line 1806 of yacc.c */ -#line 458 "a.y" +/* Line 1787 of yacc.c */ +#line 456 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_PSR; - (yyval.gen).reg = (yyvsp[(1) - (1)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_PSR; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); } break; case 71: - -/* Line 1806 of yacc.c */ -#line 464 "a.y" +/* Line 1787 of yacc.c */ +#line 462 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_FPCR; - (yyval.gen).reg = (yyvsp[(1) - (1)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_FPCR; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); } break; case 72: - -/* Line 1806 of yacc.c */ -#line 470 "a.y" +/* Line 1787 of yacc.c */ +#line 468 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_OREG; - (yyval.gen).offset = (yyvsp[(1) - (1)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_OREG; + (yyval.addr).offset = (yyvsp[(1) - (1)].lval); } break; case 76: - -/* Line 1806 of yacc.c */ -#line 481 "a.y" +/* Line 1787 of yacc.c */ +#line 479 "a.y" { - (yyval.gen) = (yyvsp[(1) - (1)].gen); - if((yyvsp[(1) - (1)].gen).name != D_EXTERN && (yyvsp[(1) - (1)].gen).name != D_STATIC) { + (yyval.addr) = (yyvsp[(1) - (1)].addr); + if((yyvsp[(1) - (1)].addr).name != D_EXTERN && (yyvsp[(1) - (1)].addr).name != D_STATIC) { } } break; case 77: - -/* Line 1806 of yacc.c */ -#line 489 "a.y" +/* Line 1787 of yacc.c */ +#line 487 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_OREG; - (yyval.gen).reg = (yyvsp[(2) - (3)].lval); - (yyval.gen).offset = 0; + (yyval.addr) = nullgen; + (yyval.addr).type = D_OREG; + (yyval.addr).reg = (yyvsp[(2) - (3)].lval); + (yyval.addr).offset = 0; } break; case 79: - -/* Line 1806 of yacc.c */ -#line 499 "a.y" +/* Line 1787 of yacc.c */ +#line 497 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_OREG; - (yyval.gen).reg = (yyvsp[(3) - (4)].lval); - (yyval.gen).offset = (yyvsp[(1) - (4)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_OREG; + (yyval.addr).reg = (yyvsp[(3) - (4)].lval); + (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 81: - -/* Line 1806 of yacc.c */ -#line 509 "a.y" +/* Line 1787 of yacc.c */ +#line 507 "a.y" { - (yyval.gen) = (yyvsp[(1) - (4)].gen); - (yyval.gen).type = D_OREG; - (yyval.gen).reg = (yyvsp[(3) - (4)].lval); + (yyval.addr) = (yyvsp[(1) - (4)].addr); + (yyval.addr).type = D_OREG; + (yyval.addr).reg = (yyvsp[(3) - (4)].lval); } break; case 86: - -/* Line 1806 of yacc.c */ -#line 522 "a.y" +/* Line 1787 of yacc.c */ +#line 520 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_CONST; - (yyval.gen).offset = (yyvsp[(2) - (2)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_CONST; + (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 87: - -/* Line 1806 of yacc.c */ -#line 530 "a.y" +/* Line 1787 of yacc.c */ +#line 528 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_REG; - (yyval.gen).reg = (yyvsp[(1) - (1)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_REG; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); } break; case 88: - -/* Line 1806 of yacc.c */ -#line 538 "a.y" +/* Line 1787 of yacc.c */ +#line 536 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_REGREG; - (yyval.gen).reg = (yyvsp[(2) - (5)].lval); - (yyval.gen).offset = (yyvsp[(4) - (5)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_REGREG; + (yyval.addr).reg = (yyvsp[(2) - (5)].lval); + (yyval.addr).offset = (yyvsp[(4) - (5)].lval); } break; case 89: - -/* Line 1806 of yacc.c */ -#line 547 "a.y" +/* Line 1787 of yacc.c */ +#line 545 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_SHIFT; - (yyval.gen).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (0 << 5); + (yyval.addr) = nullgen; + (yyval.addr).type = D_SHIFT; + (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (0 << 5); } break; case 90: - -/* Line 1806 of yacc.c */ -#line 553 "a.y" +/* Line 1787 of yacc.c */ +#line 551 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_SHIFT; - (yyval.gen).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (1 << 5); + (yyval.addr) = nullgen; + (yyval.addr).type = D_SHIFT; + (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (1 << 5); } break; case 91: - -/* Line 1806 of yacc.c */ -#line 559 "a.y" +/* Line 1787 of yacc.c */ +#line 557 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_SHIFT; - (yyval.gen).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (2 << 5); + (yyval.addr) = nullgen; + (yyval.addr).type = D_SHIFT; + (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (2 << 5); } break; case 92: - -/* Line 1806 of yacc.c */ -#line 565 "a.y" +/* Line 1787 of yacc.c */ +#line 563 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_SHIFT; - (yyval.gen).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (3 << 5); + (yyval.addr) = nullgen; + (yyval.addr).type = D_SHIFT; + (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (3 << 5); } break; case 93: - -/* Line 1806 of yacc.c */ -#line 573 "a.y" +/* Line 1787 of yacc.c */ +#line 571 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= 16) print("register value out of range\n"); @@ -2527,9 +2440,8 @@ yyreduce: break; case 94: - -/* Line 1806 of yacc.c */ -#line 579 "a.y" +/* Line 1787 of yacc.c */ +#line 577 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= 32) print("shift value out of range\n"); @@ -2538,18 +2450,16 @@ yyreduce: break; case 96: - -/* Line 1806 of yacc.c */ -#line 588 "a.y" +/* Line 1787 of yacc.c */ +#line 586 "a.y" { (yyval.lval) = REGPC; } break; case 97: - -/* Line 1806 of yacc.c */ -#line 592 "a.y" +/* Line 1787 of yacc.c */ +#line 590 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range\n"); @@ -2558,18 +2468,16 @@ yyreduce: break; case 99: - -/* Line 1806 of yacc.c */ -#line 601 "a.y" +/* Line 1787 of yacc.c */ +#line 599 "a.y" { (yyval.lval) = REGSP; } break; case 101: - -/* Line 1806 of yacc.c */ -#line 608 "a.y" +/* Line 1787 of yacc.c */ +#line 606 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range\n"); @@ -2578,250 +2486,224 @@ yyreduce: break; case 104: - -/* Line 1806 of yacc.c */ -#line 620 "a.y" +/* Line 1787 of yacc.c */ +#line 618 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_FREG; - (yyval.gen).reg = (yyvsp[(1) - (1)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_FREG; + (yyval.addr).reg = (yyvsp[(1) - (1)].lval); } break; case 105: - -/* Line 1806 of yacc.c */ -#line 626 "a.y" +/* Line 1787 of yacc.c */ +#line 624 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_FREG; - (yyval.gen).reg = (yyvsp[(3) - (4)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_FREG; + (yyval.addr).reg = (yyvsp[(3) - (4)].lval); } break; case 106: - -/* Line 1806 of yacc.c */ -#line 634 "a.y" +/* Line 1787 of yacc.c */ +#line 632 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_OREG; - (yyval.gen).name = (yyvsp[(3) - (4)].lval); - (yyval.gen).sym = S; - (yyval.gen).offset = (yyvsp[(1) - (4)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_OREG; + (yyval.addr).name = (yyvsp[(3) - (4)].lval); + (yyval.addr).sym = nil; + (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 107: - -/* Line 1806 of yacc.c */ -#line 642 "a.y" +/* Line 1787 of yacc.c */ +#line 640 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_OREG; - (yyval.gen).name = (yyvsp[(4) - (5)].lval); - (yyval.gen).sym = (yyvsp[(1) - (5)].sym); - (yyval.gen).offset = (yyvsp[(2) - (5)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_OREG; + (yyval.addr).name = (yyvsp[(4) - (5)].lval); + (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (5)].sym)->name, 0); + (yyval.addr).offset = (yyvsp[(2) - (5)].lval); } break; case 108: - -/* Line 1806 of yacc.c */ -#line 650 "a.y" +/* Line 1787 of yacc.c */ +#line 648 "a.y" { - (yyval.gen) = nullgen; - (yyval.gen).type = D_OREG; - (yyval.gen).name = D_STATIC; - (yyval.gen).sym = (yyvsp[(1) - (7)].sym); - (yyval.gen).offset = (yyvsp[(4) - (7)].lval); + (yyval.addr) = nullgen; + (yyval.addr).type = D_OREG; + (yyval.addr).name = D_STATIC; + (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (7)].sym)->name, 1); + (yyval.addr).offset = (yyvsp[(4) - (7)].lval); } break; case 109: - -/* Line 1806 of yacc.c */ -#line 659 "a.y" +/* Line 1787 of yacc.c */ +#line 657 "a.y" { (yyval.lval) = 0; } break; case 110: - -/* Line 1806 of yacc.c */ -#line 663 "a.y" +/* Line 1787 of yacc.c */ +#line 661 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 111: - -/* Line 1806 of yacc.c */ -#line 667 "a.y" +/* Line 1787 of yacc.c */ +#line 665 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 116: - -/* Line 1806 of yacc.c */ -#line 679 "a.y" +/* Line 1787 of yacc.c */ +#line 677 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; case 117: - -/* Line 1806 of yacc.c */ -#line 683 "a.y" +/* Line 1787 of yacc.c */ +#line 681 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 118: - -/* Line 1806 of yacc.c */ -#line 687 "a.y" +/* Line 1787 of yacc.c */ +#line 685 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 119: - -/* Line 1806 of yacc.c */ -#line 691 "a.y" +/* Line 1787 of yacc.c */ +#line 689 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; case 120: - -/* Line 1806 of yacc.c */ -#line 695 "a.y" +/* Line 1787 of yacc.c */ +#line 693 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; case 121: - -/* Line 1806 of yacc.c */ -#line 700 "a.y" +/* Line 1787 of yacc.c */ +#line 698 "a.y" { (yyval.lval) = 0; } break; case 122: - -/* Line 1806 of yacc.c */ -#line 704 "a.y" +/* Line 1787 of yacc.c */ +#line 702 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 124: - -/* Line 1806 of yacc.c */ -#line 711 "a.y" +/* Line 1787 of yacc.c */ +#line 709 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; case 125: - -/* Line 1806 of yacc.c */ -#line 715 "a.y" +/* Line 1787 of yacc.c */ +#line 713 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; case 126: - -/* Line 1806 of yacc.c */ -#line 719 "a.y" +/* Line 1787 of yacc.c */ +#line 717 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; case 127: - -/* Line 1806 of yacc.c */ -#line 723 "a.y" +/* Line 1787 of yacc.c */ +#line 721 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; case 128: - -/* Line 1806 of yacc.c */ -#line 727 "a.y" +/* Line 1787 of yacc.c */ +#line 725 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; case 129: - -/* Line 1806 of yacc.c */ -#line 731 "a.y" +/* Line 1787 of yacc.c */ +#line 729 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; case 130: - -/* Line 1806 of yacc.c */ -#line 735 "a.y" +/* Line 1787 of yacc.c */ +#line 733 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; case 131: - -/* Line 1806 of yacc.c */ -#line 739 "a.y" +/* Line 1787 of yacc.c */ +#line 737 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; case 132: - -/* Line 1806 of yacc.c */ -#line 743 "a.y" +/* Line 1787 of yacc.c */ +#line 741 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; case 133: - -/* Line 1806 of yacc.c */ -#line 747 "a.y" +/* Line 1787 of yacc.c */ +#line 745 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } break; - -/* Line 1806 of yacc.c */ -#line 2825 "y.tab.c" +/* Line 1787 of yacc.c */ +#line 2707 "y.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2984,7 +2866,9 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ @@ -3008,7 +2892,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#if !defined(yyoverflow) || YYERROR_VERBOSE +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -3050,4 +2934,3 @@ yyreturn: } - |