Ticket #1610: yyerror.patch

File yyerror.patch, 80.5 KB (added by plobsing, 12 years ago)
  • compilers/imcc/imcc.y

     
    2020#define _PARSER 
    2121#define PARSER_MAIN 
    2222#include "imc.h" 
     23#include "parrot/parrot.h" 
    2324#include "parrot/dynext.h" 
    2425#include "pmc/pmc_callcontext.h" 
    2526#include "pbc.h" 
     
    24952496     * outside the bison buffer, and thus, not "accessible" by 
    24962497     * us. This means it may segfault. */ 
    24972498    const char * const chr = yyget_text((yyscan_t)yyscanner); 
     2499    PMC        * err_msgs  = IMCC_INFO(interp)->error_messages; 
    24982500 
    2499     /* IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, s); */ 
    2500     /* --- This was called before, not sure if I should call some 
    2501            similar function that does not die like this one. */ 
     2501    IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; 
    25022502 
    2503     /* Basically, if current token is a newline, it mean the error was 
    2504      * before the newline, and thus, line is the line *after* the 
    2505      * error. Instead of duplicating code for both cases (the 'newline' and 
    2506      * non-newline case, do the test twice; efficiency is not important when 
    2507      * we have an error anyway. */ 
    2508     if (!at_eof(yyscanner)) { 
    2509         IMCC_warning(interp, "error:imcc:%s", s); 
     2503    /* don't bother printing the current token if it is either a newline or EOF */ 
     2504    VTABLE_push_string(interp, err_msgs, 
     2505                        at_eof(yyscanner) || *chr == '\n' ? 
     2506                            Parrot_str_new(interp, s, 0) : 
     2507                            Parrot_sprintf_c(interp, "%s ('%s')", s, chr)); 
     2508    VTABLE_push_string(interp, err_msgs, IMCC_inc_str(interp)); 
    25102509 
    2511         /* don't print the current token if it is a newline */ 
    2512         if (*chr != '\n') 
    2513             IMCC_warning(interp, " ('%s')", chr); 
    2514  
    2515         IMCC_print_inc(interp); 
    2516     } 
    2517  
    2518     /* scanner is at EOF; just to be sure, don't print "current" token */ 
    2519     else { 
    2520         IMCC_warning(interp, "error:imcc:%s", s); 
    2521         IMCC_print_inc(interp); 
    2522     } 
    2523  
    25242510    return 0; 
    25252511} 
    25262512 
  • compilers/imcc/imclexer.c

     
    58475847 
    58485848void 
    58495849imcc_run_compilation(PARROT_INTERP, void *yyscanner) { 
     5850    IMCC_INFO(interp)->error_messages = 
     5851            Parrot_pmc_new(interp, enum_class_ResizableStringArray); 
     5852 
    58505853    IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) { 
    5851         if (yyparse(yyscanner, interp)) { 
    5852             IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; 
    5853             IMCC_INFO(interp)->error_message = string_from_literal(interp, "syntax error ... somewhere"); 
    5854             return; 
    5855         } 
     5854        if (yyparse(yyscanner, interp)) 
     5855            return; /* error reporting handled in yyerror */ 
    58565856 
    58575857        imc_compile_all_units(interp); 
    58585858    } 
     
    58685868    IMCC_END_TRY; 
    58695869} 
    58705870 
    5871 void 
    5872 IMCC_print_inc(PARROT_INTERP) 
     5871STRING * 
     5872IMCC_inc_str(PARROT_INTERP) 
    58735873{ 
     5874    return Parrot_str_join(interp, string_from_literal(interp, "\n"), 
     5875                IMCC_inc_stack(interp)); 
     5876} 
     5877 
     5878PMC * 
     5879IMCC_inc_stack(PARROT_INTERP) 
     5880{ 
    58745881    macro_frame_t *f; 
    5875     const char    *old = IMCC_INFO(interp)->frames->s.file; 
     5882    PMC           *inc_stack = Parrot_pmc_new(interp, enum_class_ResizableStringArray); 
     5883    char          *old; 
    58765884 
     5885 
    58775886    if (IMCC_INFO(interp)->frames && IMCC_INFO(interp)->frames->is_macro) 
    5878         fprintf(stderr, "\n\tin macro '.%s' line %d\n", 
    5879                 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); 
     5887        VTABLE_push_string(interp, inc_stack, 
     5888            Parrot_sprintf_c(interp, "\tin macro '.%s' line %d", 
     5889                IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); 
    58805890    else 
    5881         fprintf(stderr, "\n\tin file '%s' line %d\n", 
    5882                 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); 
     5891        VTABLE_push_string(interp, inc_stack, 
     5892            Parrot_sprintf_c(interp, "\tin file '%s' line %d", 
     5893                IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); 
    58835894 
    5884  
     5895    old = IMCC_INFO(interp)->frames->s.file; 
    58855896    for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) { 
    58865897        if (!STREQ(f->s.file, old)) { 
    5887             fprintf(stderr, "\tincluded from '%s' line %d\n", 
    5888                     f->s.file, f->s.line); 
     5898            VTABLE_push_string(interp, inc_stack, 
     5899                Parrot_sprintf_c(interp, "\tincluded from '%s' line %d", 
     5900                    f->s.file, f->s.line)); 
    58895901        } 
    58905902 
    58915903        old = f->s.file; 
    58925904    } 
     5905 
     5906 
     5907    return inc_stack; 
    58935908} 
    58945909 
    58955910/* 
  • compilers/imcc/imc.h

     
    416416/* HEADERIZER END: compilers/imcc/parser_util.c */ 
    417417 
    418418/* imclexer.c */ 
    419 void IMCC_print_inc(PARROT_INTERP); 
     419STRING *IMCC_inc_str(PARROT_INTERP); 
     420PMC *IMCC_inc_stack(PARROT_INTERP); 
    420421 
    421422/* Call convention independent API */ 
    422423 
     
    554555    SymReg                *cur_namespace; 
    555556    struct nodeType_t     *top_node; 
    556557    struct parser_state_t *state; 
    557     STRING                *error_message;   /* The Error message */ 
     558    PMC                   *error_messages;   /* error messages (eg: syntax errors) */ 
    558559 
    559560    /* some values that were global... */ 
    560561    Namespace            *namespace_stack; 
  • compilers/imcc/main.c

     
    636636 
    637637    imcc_run_compilation(interp, yyscanner); 
    638638    if (IMCC_INFO(interp)->error_code) { 
    639         char * const error_str = Parrot_str_to_cstring(interp, 
    640                                                    IMCC_INFO(interp)->error_message); 
     639        char *error_str; 
     640        PMC  *err_msgs = IMCC_INFO(interp)->error_messages; 
     641        VTABLE_push_string(interp, err_msgs, IMCC_inc_str(interp)); 
     642        error_str = Parrot_str_to_cstring(interp, 
     643                            Parrot_str_join(interp, 
     644                                string_from_literal(interp, "\n"), 
     645                                err_msgs)); 
    641646 
    642647        IMCC_INFO(interp)->error_code=IMCC_FATAL_EXCEPTION; 
    643         fprintf(stderr, "error:imcc:%s", error_str); 
    644         IMCC_print_inc(interp); 
     648        fprintf(stderr, "error:imcc:%s\n", error_str); 
    645649        Parrot_str_free_cstring(error_str); 
    646650        Parrot_exit(interp, IMCC_FATAL_EXCEPTION); 
    647651    } 
  • compilers/imcc/imcc.l

     
    13591359 
    13601360void 
    13611361imcc_run_compilation(PARROT_INTERP, void *yyscanner) { 
     1362    IMCC_INFO(interp)->error_messages = 
     1363            Parrot_pmc_new(interp, enum_class_ResizableStringArray); 
     1364 
    13621365    IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) { 
    1363         if (yyparse(yyscanner, interp)) { 
    1364             IMCC_INFO(interp)->error_code    = IMCC_PARSEFAIL_EXCEPTION; 
    1365             IMCC_INFO(interp)->error_message = string_from_literal(interp, "syntax error ... somewhere"); 
    1366             return; 
    1367         } 
     1366        if (yyparse(yyscanner, interp)) 
     1367            return; /* error reporting handled in yyerror */ 
    13681368 
    13691369        imc_compile_all_units(interp); 
    13701370    } 
     
    13801380    IMCC_END_TRY; 
    13811381} 
    13821382 
    1383 void 
    1384 IMCC_print_inc(PARROT_INTERP) 
     1383STRING * 
     1384IMCC_inc_str(PARROT_INTERP) 
    13851385{ 
     1386    return Parrot_str_join(interp, string_from_literal(interp, "\n"), 
     1387                IMCC_inc_stack(interp)); 
     1388} 
     1389 
     1390PMC * 
     1391IMCC_inc_stack(PARROT_INTERP) 
     1392{ 
    13861393    macro_frame_t *f; 
    1387     const char    *old = IMCC_INFO(interp)->frames->s.file; 
     1394    PMC           *inc_stack = Parrot_pmc_new(interp, enum_class_ResizableStringArray); 
     1395    char          *old; 
    13881396 
     1397 
    13891398    if (IMCC_INFO(interp)->frames && IMCC_INFO(interp)->frames->is_macro) 
    1390         fprintf(stderr, "\n\tin macro '.%s' line %d\n", 
    1391                 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); 
     1399        VTABLE_push_string(interp, inc_stack, 
     1400            Parrot_sprintf_c(interp, "\tin macro '.%s' line %d", 
     1401                IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); 
    13921402    else 
    1393         fprintf(stderr, "\n\tin file '%s' line %d\n", 
    1394                 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); 
     1403        VTABLE_push_string(interp, inc_stack, 
     1404            Parrot_sprintf_c(interp, "\tin file '%s' line %d", 
     1405                IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); 
    13951406 
    1396  
     1407    old = IMCC_INFO(interp)->frames->s.file; 
    13971408    for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) { 
    13981409        if (!STREQ(f->s.file, old)) { 
    1399             fprintf(stderr, "\tincluded from '%s' line %d\n", 
    1400                     f->s.file, f->s.line); 
     1410            VTABLE_push_string(interp, inc_stack, 
     1411                Parrot_sprintf_c(interp, "\tincluded from '%s' line %d", 
     1412                    f->s.file, f->s.line)); 
    14011413        } 
    14021414 
    14031415        old = f->s.file; 
    14041416    } 
     1417 
     1418 
     1419    return inc_stack; 
    14051420} 
    14061421 
    14071422/* 
  • compilers/imcc/imcparser.c

     
    101101#define _PARSER 
    102102#define PARSER_MAIN 
    103103#include "imc.h" 
     104#include "parrot/parrot.h" 
    104105#include "parrot/dynext.h" 
    105106#include "pmc/pmc_callcontext.h" 
    106107#include "pbc.h" 
     
    11471148 
    11481149 
    11491150/* Line 189 of yacc.c  */ 
    1150 #line 1140 "compilers/imcc/imcparser.c" 
     1151#line 1141 "compilers/imcc/imcparser.c" 
    11511152 
    11521153/* Enabling traces.  */ 
    11531154#ifndef YYDEBUG 
     
    14201421{ 
    14211422 
    14221423/* Line 214 of yacc.c  */ 
    1423 #line 1068 "compilers/imcc/imcc.y" 
     1424#line 1069 "compilers/imcc/imcc.y" 
    14241425 
    14251426    IdList * idlist; 
    14261427    int t; 
     
    14311432 
    14321433 
    14331434/* Line 214 of yacc.c  */ 
    1434 #line 1424 "compilers/imcc/imcparser.c" 
     1435#line 1425 "compilers/imcc/imcparser.c" 
    14351436} YYSTYPE; 
    14361437# define YYSTYPE_IS_TRIVIAL 1 
    14371438# define yystype YYSTYPE /* obsolescent; will be withdrawn */ 
     
    14431444 
    14441445 
    14451446/* Line 264 of yacc.c  */ 
    1446 #line 1436 "compilers/imcc/imcparser.c" 
     1447#line 1437 "compilers/imcc/imcparser.c" 
    14471448 
    14481449#ifdef short 
    14491450# undef short 
     
    18661867/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ 
    18671868static const yytype_uint16 yyrline[] = 
    18681869{ 
    1869        0,  1163,  1163,  1167,  1168,  1172,  1173,  1174,  1180,  1186, 
    1870     1187,  1188,  1189,  1193,  1194,  1203,  1209,  1217,  1229,  1242, 
    1871     1242,  1251,  1251,  1258,  1258,  1267,  1268,  1272,  1273,  1277, 
    1872     1278,  1279,  1280,  1281,  1282,  1283,  1286,  1286,  1295,  1294, 
    1873     1307,  1311,  1324,  1328,  1332,  1332,  1344,  1346,  1350,  1365, 
    1874     1366,  1370,  1370,  1382,  1383,  1392,  1396,  1400,  1391,  1412, 
    1875     1413,  1414,  1427,  1427,  1431,  1456,  1460,  1466,  1475,  1481, 
    1876     1490,  1496,  1505,  1511,  1520,  1528,  1533,  1544,  1547,  1552, 
    1877     1560,  1561,  1562,  1563,  1564,  1575,  1586,  1589,  1591,  1596, 
    1878     1595,  1626,  1627,  1631,  1632,  1636,  1637,  1641,  1642,  1646, 
    1879     1647,  1648,  1649,  1650,  1651,  1652,  1653,  1654,  1655,  1656, 
    1880     1657,  1658,  1659,  1663,  1668,  1672,  1676,  1680,  1684,  1689, 
    1881     1698,  1699,  1711,  1716,  1717,  1725,  1726,  1726,  1738,  1739, 
    1882     1743,  1744,  1745,  1746,  1747,  1748,  1749,  1750,  1755,  1755, 
    1883     1758,  1766,  1766,  1772,  1773,  1778,  1786,  1787,  1792,  1800, 
    1884     1804,  1809,  1808,  1821,  1822,  1826,  1827,  1837,  1842,  1852, 
    1885     1861,  1862,  1874,  1878,  1880,  1881,  1882,  1883,  1884,  1888, 
    1886     1889,  1893,  1894,  1898,  1909,  1910,  1921,  1928,  1937,  1945, 
    1887     1947,  1952,  1953,  1954,  1954,  1967,  1984,  1997,  1997,  2004, 
    1888     2005,  2005,  2011,  2017,  2021,  2033,  2034,  2035,  2036,  2037, 
    1889     2038,  2042,  2043,  2044,  2045,  2049,  2051,  2053,  2055,  2057, 
    1890     2060,  2067,  2066,  2075,  2076,  2077,  2078,  2086,  2087,  2088, 
    1891     2092,  2093,  2094,  2095,  2096,  2097,  2098,  2099,  2100,  2101, 
    1892     2102,  2103,  2104,  2105,  2106,  2107,  2108,  2109,  2110,  2111, 
    1893     2112,  2113,  2114,  2120,  2119,  2131,  2136,  2137,  2138,  2139, 
    1894     2140,  2141,  2142,  2143,  2144,  2145,  2146,  2147,  2148,  2153, 
    1895     2164,  2165,  2166,  2167,  2173,  2187,  2193,  2199,  2205,  2204, 
    1896     2213,  2214,  2224,  2234,  2241,  2246,  2256,  2260,  2261,  2265, 
    1897     2266,  2267,  2270,  2271,  2275,  2279,  2289,  2295,  2305,  2310, 
    1898     2314,  2315,  2319,  2323,  2327,  2334,  2338,  2342,  2349,  2350, 
    1899     2354,  2355,  2356,  2357,  2358,  2359,  2363,  2364,  2368,  2369, 
    1900     2373,  2374,  2378,  2379,  2386,  2393,  2394,  2395,  2399,  2400, 
    1901     2404,  2405,  2409,  2410,  2414,  2415,  2419,  2419,  2431,  2431, 
    1902     2443,  2444,  2452,  2459,  2460,  2461,  2462,  2463,  2467,  2468, 
    1903     2472,  2473,  2474 
     1870       0,  1164,  1164,  1168,  1169,  1173,  1174,  1175,  1181,  1187, 
     1871    1188,  1189,  1190,  1194,  1195,  1204,  1210,  1218,  1230,  1243, 
     1872    1243,  1252,  1252,  1259,  1259,  1268,  1269,  1273,  1274,  1278, 
     1873    1279,  1280,  1281,  1282,  1283,  1284,  1287,  1287,  1296,  1295, 
     1874    1308,  1312,  1325,  1329,  1333,  1333,  1345,  1347,  1351,  1366, 
     1875    1367,  1371,  1371,  1383,  1384,  1393,  1397,  1401,  1392,  1413, 
     1876    1414,  1415,  1428,  1428,  1432,  1457,  1461,  1467,  1476,  1482, 
     1877    1491,  1497,  1506,  1512,  1521,  1529,  1534,  1545,  1548,  1553, 
     1878    1561,  1562,  1563,  1564,  1565,  1576,  1587,  1590,  1592,  1597, 
     1879    1596,  1627,  1628,  1632,  1633,  1637,  1638,  1642,  1643,  1647, 
     1880    1648,  1649,  1650,  1651,  1652,  1653,  1654,  1655,  1656,  1657, 
     1881    1658,  1659,  1660,  1664,  1669,  1673,  1677,  1681,  1685,  1690, 
     1882    1699,  1700,  1712,  1717,  1718,  1726,  1727,  1727,  1739,  1740, 
     1883    1744,  1745,  1746,  1747,  1748,  1749,  1750,  1751,  1756,  1756, 
     1884    1759,  1767,  1767,  1773,  1774,  1779,  1787,  1788,  1793,  1801, 
     1885    1805,  1810,  1809,  1822,  1823,  1827,  1828,  1838,  1843,  1853, 
     1886    1862,  1863,  1875,  1879,  1881,  1882,  1883,  1884,  1885,  1889, 
     1887    1890,  1894,  1895,  1899,  1910,  1911,  1922,  1929,  1938,  1946, 
     1888    1948,  1953,  1954,  1955,  1955,  1968,  1985,  1998,  1998,  2005, 
     1889    2006,  2006,  2012,  2018,  2022,  2034,  2035,  2036,  2037,  2038, 
     1890    2039,  2043,  2044,  2045,  2046,  2050,  2052,  2054,  2056,  2058, 
     1891    2061,  2068,  2067,  2076,  2077,  2078,  2079,  2087,  2088,  2089, 
     1892    2093,  2094,  2095,  2096,  2097,  2098,  2099,  2100,  2101,  2102, 
     1893    2103,  2104,  2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112, 
     1894    2113,  2114,  2115,  2121,  2120,  2132,  2137,  2138,  2139,  2140, 
     1895    2141,  2142,  2143,  2144,  2145,  2146,  2147,  2148,  2149,  2154, 
     1896    2165,  2166,  2167,  2168,  2174,  2188,  2194,  2200,  2206,  2205, 
     1897    2214,  2215,  2225,  2235,  2242,  2247,  2257,  2261,  2262,  2266, 
     1898    2267,  2268,  2271,  2272,  2276,  2280,  2290,  2296,  2306,  2311, 
     1899    2315,  2316,  2320,  2324,  2328,  2335,  2339,  2343,  2350,  2351, 
     1900    2355,  2356,  2357,  2358,  2359,  2360,  2364,  2365,  2369,  2370, 
     1901    2374,  2375,  2379,  2380,  2387,  2394,  2395,  2396,  2400,  2401, 
     1902    2405,  2406,  2410,  2411,  2415,  2416,  2420,  2420,  2432,  2432, 
     1903    2444,  2445,  2453,  2460,  2461,  2462,  2463,  2464,  2468,  2469, 
     1904    2473,  2474,  2475 
    19041905}; 
    19051906#endif 
    19061907 
     
    32603261        case 2: 
    32613262 
    32623263/* Line 1464 of yacc.c  */ 
    3263 #line 1163 "compilers/imcc/imcc.y" 
     3264#line 1164 "compilers/imcc/imcc.y" 
    32643265    { if (yynerrs) YYABORT; (yyval.i) = 0; } 
    32653266    break; 
    32663267 
    32673268  case 5: 
    32683269 
    32693270/* Line 1464 of yacc.c  */ 
    3270 #line 1172 "compilers/imcc/imcc.y" 
     3271#line 1173 "compilers/imcc/imcc.y" 
    32713272    { (yyval.i) = (yyvsp[(1) - (1)].i); } 
    32723273    break; 
    32733274 
    32743275  case 6: 
    32753276 
    32763277/* Line 1464 of yacc.c  */ 
    3277 #line 1173 "compilers/imcc/imcc.y" 
     3278#line 1174 "compilers/imcc/imcc.y" 
    32783279    { (yyval.i) = (yyvsp[(1) - (1)].i); } 
    32793280    break; 
    32803281 
    32813282  case 7: 
    32823283 
    32833284/* Line 1464 of yacc.c  */ 
    3284 #line 1175 "compilers/imcc/imcc.y" 
     3285#line 1176 "compilers/imcc/imcc.y" 
    32853286    { 
    32863287           (yyval.i) = (yyvsp[(1) - (1)].i); 
    32873288           imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); 
     
    32923293  case 8: 
    32933294 
    32943295/* Line 1464 of yacc.c  */ 
    3295 #line 1181 "compilers/imcc/imcc.y" 
     3296#line 1182 "compilers/imcc/imcc.y" 
    32963297    { 
    32973298           (yyval.i) = (yyvsp[(1) - (1)].i); 
    32983299           imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); 
     
    33033304  case 9: 
    33043305 
    33053306/* Line 1464 of yacc.c  */ 
    3306 #line 1186 "compilers/imcc/imcc.y" 
     3307#line 1187 "compilers/imcc/imcc.y" 
    33073308    { (yyval.i) = 0; } 
    33083309    break; 
    33093310 
    33103311  case 10: 
    33113312 
    33123313/* Line 1464 of yacc.c  */ 
    3313 #line 1187 "compilers/imcc/imcc.y" 
     3314#line 1188 "compilers/imcc/imcc.y" 
    33143315    { (yyval.i) = 0; } 
    33153316    break; 
    33163317 
    33173318  case 11: 
    33183319 
    33193320/* Line 1464 of yacc.c  */ 
    3320 #line 1188 "compilers/imcc/imcc.y" 
     3321#line 1189 "compilers/imcc/imcc.y" 
    33213322    { (yyval.i) = 0; } 
    33223323    break; 
    33233324 
    33243325  case 12: 
    33253326 
    33263327/* Line 1464 of yacc.c  */ 
    3327 #line 1189 "compilers/imcc/imcc.y" 
     3328#line 1190 "compilers/imcc/imcc.y" 
    33283329    { (yyval.i) = 0; } 
    33293330    break; 
    33303331 
    33313332  case 13: 
    33323333 
    33333334/* Line 1464 of yacc.c  */ 
    3334 #line 1193 "compilers/imcc/imcc.y" 
     3335#line 1194 "compilers/imcc/imcc.y" 
    33353336    { (yyval.i) = 0; } 
    33363337    break; 
    33373338 
    33383339  case 14: 
    33393340 
    33403341/* Line 1464 of yacc.c  */ 
    3341 #line 1195 "compilers/imcc/imcc.y" 
     3342#line 1196 "compilers/imcc/imcc.y" 
    33423343    { 
    33433344           (yyval.i) = 0; 
    33443345           do_loadlib(interp, (yyvsp[(2) - (3)].s)); 
     
    33493350  case 15: 
    33503351 
    33513352/* Line 1464 of yacc.c  */ 
    3352 #line 1204 "compilers/imcc/imcc.y" 
     3353#line 1205 "compilers/imcc/imcc.y" 
    33533354    { 
    33543355           IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s)); 
    33553356           /* set_filename() frees the STRINGC */ 
     
    33603361  case 16: 
    33613362 
    33623363/* Line 1464 of yacc.c  */ 
    3363 #line 1210 "compilers/imcc/imcc.y" 
     3364#line 1211 "compilers/imcc/imcc.y" 
    33643365    { 
    33653366           /* set_filename() frees the STRINGC */ 
    33663367           set_filename(interp, (yyvsp[(2) - (3)].s)); 
     
    33703371  case 17: 
    33713372 
    33723373/* Line 1464 of yacc.c  */ 
    3373 #line 1218 "compilers/imcc/imcc.y" 
     3374#line 1219 "compilers/imcc/imcc.y" 
    33743375    { 
    33753376          /* We'll want to store an entry while emitting instructions, so just 
    33763377           * store annotation like it's an instruction. */ 
     
    33833384  case 18: 
    33843385 
    33853386/* Line 1464 of yacc.c  */ 
    3386 #line 1230 "compilers/imcc/imcc.y" 
     3387#line 1231 "compilers/imcc/imcc.y" 
    33873388    { 
    33883389            STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL); 
    33893390            Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), 
     
    33983399  case 19: 
    33993400 
    34003401/* Line 1464 of yacc.c  */ 
    3401 #line 1242 "compilers/imcc/imcc.y" 
     3402#line 1243 "compilers/imcc/imcc.y" 
    34023403    { IMCC_INFO(interp)->is_def = 1; } 
    34033404    break; 
    34043405 
    34053406  case 20: 
    34063407 
    34073408/* Line 1464 of yacc.c  */ 
    3408 #line 1243 "compilers/imcc/imcc.y" 
     3409#line 1244 "compilers/imcc/imcc.y" 
    34093410    { 
    34103411             mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); 
    34113412             mem_sys_free((yyvsp[(4) - (6)].s)); 
     
    34163417  case 21: 
    34173418 
    34183419/* Line 1464 of yacc.c  */ 
    3419 #line 1251 "compilers/imcc/imcc.y" 
     3420#line 1252 "compilers/imcc/imcc.y" 
    34203421    { IMCC_INFO(interp)->is_def = 1; } 
    34213422    break; 
    34223423 
    34233424  case 22: 
    34243425 
    34253426/* Line 1464 of yacc.c  */ 
    3426 #line 1252 "compilers/imcc/imcc.y" 
     3427#line 1253 "compilers/imcc/imcc.y" 
    34273428    { 
    34283429           (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s)); 
    34293430           mem_sys_free((yyvsp[(6) - (6)].s)); 
     
    34343435  case 23: 
    34353436 
    34363437/* Line 1464 of yacc.c  */ 
    3437 #line 1258 "compilers/imcc/imcc.y" 
     3438#line 1259 "compilers/imcc/imcc.y" 
    34383439    { IMCC_INFO(interp)->is_def = 1; } 
    34393440    break; 
    34403441 
    34413442  case 24: 
    34423443 
    34433444/* Line 1464 of yacc.c  */ 
    3444 #line 1259 "compilers/imcc/imcc.y" 
     3445#line 1260 "compilers/imcc/imcc.y" 
    34453446    { 
    34463447           (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s)); 
    34473448           mem_sys_free((yyvsp[(3) - (6)].s)); 
     
    34533454  case 29: 
    34543455 
    34553456/* Line 1464 of yacc.c  */ 
    3456 #line 1277 "compilers/imcc/imcc.y" 
     3457#line 1278 "compilers/imcc/imcc.y" 
    34573458    { (yyval.i) = 0;  } 
    34583459    break; 
    34593460 
    34603461  case 30: 
    34613462 
    34623463/* Line 1464 of yacc.c  */ 
    3463 #line 1278 "compilers/imcc/imcc.y" 
     3464#line 1279 "compilers/imcc/imcc.y" 
    34643465    { (yyval.i) = 0;  } 
    34653466    break; 
    34663467 
    34673468  case 31: 
    34683469 
    34693470/* Line 1464 of yacc.c  */ 
    3470 #line 1279 "compilers/imcc/imcc.y" 
     3471#line 1280 "compilers/imcc/imcc.y" 
    34713472    { (yyval.i) = 0;  } 
    34723473    break; 
    34733474 
    34743475  case 32: 
    34753476 
    34763477/* Line 1464 of yacc.c  */ 
    3477 #line 1280 "compilers/imcc/imcc.y" 
     3478#line 1281 "compilers/imcc/imcc.y" 
    34783479    { (yyval.i) = 0;  } 
    34793480    break; 
    34803481 
    34813482  case 33: 
    34823483 
    34833484/* Line 1464 of yacc.c  */ 
    3484 #line 1281 "compilers/imcc/imcc.y" 
     3485#line 1282 "compilers/imcc/imcc.y" 
    34853486    { (yyval.i) = (yyvsp[(1) - (1)].i); } 
    34863487    break; 
    34873488 
    34883489  case 36: 
    34893490 
    34903491/* Line 1464 of yacc.c  */ 
    3491 #line 1286 "compilers/imcc/imcc.y" 
     3492#line 1287 "compilers/imcc/imcc.y" 
    34923493    { clear_state(interp); } 
    34933494    break; 
    34943495 
    34953496  case 37: 
    34963497 
    34973498/* Line 1464 of yacc.c  */ 
    3498 #line 1288 "compilers/imcc/imcc.y" 
     3499#line 1289 "compilers/imcc/imcc.y" 
    34993500    { 
    35003501           (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit, 
    35013502                    (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs, 
     
    35073508  case 38: 
    35083509 
    35093510/* Line 1464 of yacc.c  */ 
    3510 #line 1295 "compilers/imcc/imcc.y" 
     3511#line 1296 "compilers/imcc/imcc.y" 
    35113512    { 
    35123513           imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); 
    35133514           IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); 
     
    35173518  case 39: 
    35183519 
    35193520/* Line 1464 of yacc.c  */ 
    3520 #line 1300 "compilers/imcc/imcc.y" 
     3521#line 1301 "compilers/imcc/imcc.y" 
    35213522    { 
    35223523           (yyval.i) = iSUBROUTINE(interp, 
    35233524                    IMCC_INFO(interp)->cur_unit, 
     
    35303531  case 40: 
    35313532 
    35323533/* Line 1464 of yacc.c  */ 
    3533 #line 1308 "compilers/imcc/imcc.y" 
     3534#line 1309 "compilers/imcc/imcc.y" 
    35343535    { 
    35353536           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); 
    35363537         } 
     
    35393540  case 41: 
    35403541 
    35413542/* Line 1464 of yacc.c  */ 
    3542 #line 1312 "compilers/imcc/imcc.y" 
     3543#line 1313 "compilers/imcc/imcc.y" 
    35433544    { 
    35443545           char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1); 
    35453546           SymReg *r    = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s)); 
     
    35573558  case 42: 
    35583559 
    35593560/* Line 1464 of yacc.c  */ 
    3560 #line 1324 "compilers/imcc/imcc.y" 
     3561#line 1325 "compilers/imcc/imcc.y" 
    35613562    { (yyval.i) = 0;} 
    35623563    break; 
    35633564 
    35643565  case 44: 
    35653566 
    35663567/* Line 1464 of yacc.c  */ 
    3567 #line 1332 "compilers/imcc/imcc.y" 
     3568#line 1333 "compilers/imcc/imcc.y" 
    35683569    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); } 
    35693570    break; 
    35703571 
    35713572  case 45: 
    35723573 
    35733574/* Line 1464 of yacc.c  */ 
    3574 #line 1335 "compilers/imcc/imcc.y" 
     3575#line 1336 "compilers/imcc/imcc.y" 
    35753576    { 
    35763577           /* if (optimizer_level & OPT_PASM) 
    35773578                         imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit); 
     
    35843585  case 48: 
    35853586 
    35863587/* Line 1464 of yacc.c  */ 
    3587 #line 1351 "compilers/imcc/imcc.y" 
     3588#line 1352 "compilers/imcc/imcc.y" 
    35883589    { 
    35893590           int re_open = 0; 
    35903591           (yyval.i) = 0; 
     
    36013602  case 49: 
    36023603 
    36033604/* Line 1464 of yacc.c  */ 
    3604 #line 1365 "compilers/imcc/imcc.y" 
     3605#line 1366 "compilers/imcc/imcc.y" 
    36053606    { (yyval.sr) = (yyvsp[(2) - (3)].sr); } 
    36063607    break; 
    36073608 
    36083609  case 50: 
    36093610 
    36103611/* Line 1464 of yacc.c  */ 
    3611 #line 1366 "compilers/imcc/imcc.y" 
     3612#line 1367 "compilers/imcc/imcc.y" 
    36123613    { (yyval.sr) = NULL; } 
    36133614    break; 
    36143615 
    36153616  case 51: 
    36163617 
    36173618/* Line 1464 of yacc.c  */ 
    3618 #line 1370 "compilers/imcc/imcc.y" 
     3619#line 1371 "compilers/imcc/imcc.y" 
    36193620    { 
    36203621           IMCC_INFO(interp)->nkeys    = 0; 
    36213622         } 
     
    36243625  case 52: 
    36253626 
    36263627/* Line 1464 of yacc.c  */ 
    3627 #line 1374 "compilers/imcc/imcc.y" 
     3628#line 1375 "compilers/imcc/imcc.y" 
    36283629    { 
    36293630           (yyval.sr) = link_keys(interp, 
    36303631                          IMCC_INFO(interp)->nkeys, 
     
    36353636  case 53: 
    36363637 
    36373638/* Line 1464 of yacc.c  */ 
    3638 #line 1382 "compilers/imcc/imcc.y" 
     3639#line 1383 "compilers/imcc/imcc.y" 
    36393640    { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); } 
    36403641    break; 
    36413642 
    36423643  case 54: 
    36433644 
    36443645/* Line 1464 of yacc.c  */ 
    3645 #line 1384 "compilers/imcc/imcc.y" 
     3646#line 1385 "compilers/imcc/imcc.y" 
    36463647    { 
    36473648           IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr); 
    36483649           (yyval.sr) = IMCC_INFO(interp)->keys[0]; 
     
    36523653  case 55: 
    36533654 
    36543655/* Line 1464 of yacc.c  */ 
    3655 #line 1392 "compilers/imcc/imcc.y" 
     3656#line 1393 "compilers/imcc/imcc.y" 
    36563657    { 
    36573658           IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB); 
    36583659         } 
     
    36613662  case 56: 
    36623663 
    36633664/* Line 1464 of yacc.c  */ 
    3664 #line 1396 "compilers/imcc/imcc.y" 
     3665#line 1397 "compilers/imcc/imcc.y" 
    36653666    { 
    36663667           iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr)); 
    36673668         } 
     
    36703671  case 57: 
    36713672 
    36723673/* Line 1464 of yacc.c  */ 
    3673 #line 1400 "compilers/imcc/imcc.y" 
     3674#line 1401 "compilers/imcc/imcc.y" 
    36743675    { 
    36753676          IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t); 
    36763677          if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) { 
     
    36833684  case 58: 
    36843685 
    36853686/* Line 1464 of yacc.c  */ 
    3686 #line 1408 "compilers/imcc/imcc.y" 
     3687#line 1409 "compilers/imcc/imcc.y" 
    36873688    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; } 
    36883689    break; 
    36893690 
    36903691  case 59: 
    36913692 
    36923693/* Line 1464 of yacc.c  */ 
    3693 #line 1412 "compilers/imcc/imcc.y" 
     3694#line 1413 "compilers/imcc/imcc.y" 
    36943695    { (yyval.sr) = 0; } 
    36953696    break; 
    36963697 
    36973698  case 60: 
    36983699 
    36993700/* Line 1464 of yacc.c  */ 
    3700 #line 1413 "compilers/imcc/imcc.y" 
     3701#line 1414 "compilers/imcc/imcc.y" 
    37013702    { (yyval.sr) = 0; } 
    37023703    break; 
    37033704 
    37043705  case 61: 
    37053706 
    37063707/* Line 1464 of yacc.c  */ 
    3707 #line 1415 "compilers/imcc/imcc.y" 
     3708#line 1416 "compilers/imcc/imcc.y" 
    37083709    { 
    37093710           if (IMCC_INFO(interp)->adv_named_id) { 
    37103711                 add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call, 
     
    37193720  case 62: 
    37203721 
    37213722/* Line 1464 of yacc.c  */ 
    3722 #line 1427 "compilers/imcc/imcc.y" 
     3723#line 1428 "compilers/imcc/imcc.y" 
    37233724    { IMCC_INFO(interp)->is_def = 1; } 
    37243725    break; 
    37253726 
    37263727  case 63: 
    37273728 
    37283729/* Line 1464 of yacc.c  */ 
    3729 #line 1427 "compilers/imcc/imcc.y" 
     3730#line 1428 "compilers/imcc/imcc.y" 
    37303731    { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; } 
    37313732    break; 
    37323733 
    37333734  case 64: 
    37343735 
    37353736/* Line 1464 of yacc.c  */ 
    3736 #line 1432 "compilers/imcc/imcc.y" 
     3737#line 1433 "compilers/imcc/imcc.y" 
    37373738    { 
    37383739           if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') { 
    37393740               const char *type; 
     
    37583759  case 65: 
    37593760 
    37603761/* Line 1464 of yacc.c  */ 
    3761 #line 1456 "compilers/imcc/imcc.y" 
     3762#line 1457 "compilers/imcc/imcc.y" 
    37623763    { (yyval.t) = 0; } 
    37633764    break; 
    37643765 
    37653766  case 66: 
    37663767 
    37673768/* Line 1464 of yacc.c  */ 
    3768 #line 1461 "compilers/imcc/imcc.y" 
     3769#line 1462 "compilers/imcc/imcc.y" 
    37693770    { 
    37703771           (yyval.t) = 0; 
    37713772           IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s)); 
     
    37763777  case 67: 
    37773778 
    37783779/* Line 1464 of yacc.c  */ 
    3779 #line 1467 "compilers/imcc/imcc.y" 
     3780#line 1468 "compilers/imcc/imcc.y" 
    37803781    { 
    37813782           (yyval.t) = 0; 
    37823783           IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); 
     
    37873788  case 68: 
    37883789 
    37893790/* Line 1464 of yacc.c  */ 
    3790 #line 1476 "compilers/imcc/imcc.y" 
     3791#line 1477 "compilers/imcc/imcc.y" 
    37913792    { 
    37923793           (yyval.t) = P_VTABLE; 
    37933794           IMCC_INFO(interp)->cur_unit->vtable_name      = NULL; 
     
    37983799  case 69: 
    37993800 
    38003801/* Line 1464 of yacc.c  */ 
    3801 #line 1482 "compilers/imcc/imcc.y" 
     3802#line 1483 "compilers/imcc/imcc.y" 
    38023803    { 
    38033804           (yyval.t) = P_VTABLE; 
    38043805           IMCC_INFO(interp)->cur_unit->vtable_name      = (yyvsp[(3) - (4)].s); 
     
    38093810  case 70: 
    38103811 
    38113812/* Line 1464 of yacc.c  */ 
    3812 #line 1491 "compilers/imcc/imcc.y" 
     3813#line 1492 "compilers/imcc/imcc.y" 
    38133814    { 
    38143815           (yyval.t) = P_METHOD; 
    38153816           IMCC_INFO(interp)->cur_unit->method_name = NULL; 
     
    38203821  case 71: 
    38213822 
    38223823/* Line 1464 of yacc.c  */ 
    3823 #line 1497 "compilers/imcc/imcc.y" 
     3824#line 1498 "compilers/imcc/imcc.y" 
    38243825    { 
    38253826           (yyval.t) = P_METHOD; 
    38263827           IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s); 
     
    38313832  case 72: 
    38323833 
    38333834/* Line 1464 of yacc.c  */ 
    3834 #line 1506 "compilers/imcc/imcc.y" 
     3835#line 1507 "compilers/imcc/imcc.y" 
    38353836    { 
    38363837           (yyval.t) = P_NSENTRY; 
    38373838           IMCC_INFO(interp)->cur_unit->ns_entry_name     = NULL; 
     
    38423843  case 73: 
    38433844 
    38443845/* Line 1464 of yacc.c  */ 
    3845 #line 1512 "compilers/imcc/imcc.y" 
     3846#line 1513 "compilers/imcc/imcc.y" 
    38463847    { 
    38473848           (yyval.t) = P_NSENTRY; 
    38483849           IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s); 
     
    38533854  case 74: 
    38543855 
    38553856/* Line 1464 of yacc.c  */ 
    3856 #line 1521 "compilers/imcc/imcc.y" 
     3857#line 1522 "compilers/imcc/imcc.y" 
    38573858    { 
    38583859           (yyval.t) = 0; 
    38593860           IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s); 
     
    38633864  case 75: 
    38643865 
    38653866/* Line 1464 of yacc.c  */ 
    3866 #line 1529 "compilers/imcc/imcc.y" 
     3867#line 1530 "compilers/imcc/imcc.y" 
    38673868    { 
    38683869           (yyval.t) = 0; 
    38693870           IMCC_INFO(interp)->cur_unit->subid = NULL; 
     
    38733874  case 76: 
    38743875 
    38753876/* Line 1464 of yacc.c  */ 
    3876 #line 1534 "compilers/imcc/imcc.y" 
     3877#line 1535 "compilers/imcc/imcc.y" 
    38773878    { 
    38783879           (yyval.t) = 0; 
    38793880           IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); 
     
    38853886  case 77: 
    38863887 
    38873888/* Line 1464 of yacc.c  */ 
    3888 #line 1544 "compilers/imcc/imcc.y" 
     3889#line 1545 "compilers/imcc/imcc.y" 
    38893890    { 
    38903891           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL); 
    38913892         } 
     
    38943895  case 78: 
    38953896 
    38963897/* Line 1464 of yacc.c  */ 
    3897 #line 1548 "compilers/imcc/imcc.y" 
     3898#line 1549 "compilers/imcc/imcc.y" 
    38983899    { 
    38993900           (yyval.t) = 0; 
    39003901           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr)); 
     
    39043905  case 79: 
    39053906 
    39063907/* Line 1464 of yacc.c  */ 
    3907 #line 1553 "compilers/imcc/imcc.y" 
     3908#line 1554 "compilers/imcc/imcc.y" 
    39083909    { 
    39093910           (yyval.t) = 0; 
    39103911           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr)); 
     
    39143915  case 80: 
    39153916 
    39163917/* Line 1464 of yacc.c  */ 
    3917 #line 1560 "compilers/imcc/imcc.y" 
     3918#line 1561 "compilers/imcc/imcc.y" 
    39183919    { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); } 
    39193920    break; 
    39203921 
    39213922  case 81: 
    39223923 
    39233924/* Line 1464 of yacc.c  */ 
    3924 #line 1561 "compilers/imcc/imcc.y" 
     3925#line 1562 "compilers/imcc/imcc.y" 
    39253926    { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); } 
    39263927    break; 
    39273928 
    39283929  case 82: 
    39293930 
    39303931/* Line 1464 of yacc.c  */ 
    3931 #line 1562 "compilers/imcc/imcc.y" 
     3932#line 1563 "compilers/imcc/imcc.y" 
    39323933    { (yyval.sr) = mk_const(interp, "PMC",      'S'); } 
    39333934    break; 
    39343935 
    39353936  case 83: 
    39363937 
    39373938/* Line 1464 of yacc.c  */ 
    3938 #line 1563 "compilers/imcc/imcc.y" 
     3939#line 1564 "compilers/imcc/imcc.y" 
    39393940    { (yyval.sr) = mk_const(interp, "STRING",   'S'); } 
    39403941    break; 
    39413942 
    39423943  case 84: 
    39433944 
    39443945/* Line 1464 of yacc.c  */ 
    3945 #line 1565 "compilers/imcc/imcc.y" 
     3946#line 1566 "compilers/imcc/imcc.y" 
    39463947    { 
    39473948           SymReg *r; 
    39483949           if (strcmp((yyvsp[(1) - (1)].s), "_") != 0) 
     
    39583959  case 85: 
    39593960 
    39603961/* Line 1464 of yacc.c  */ 
    3961 #line 1576 "compilers/imcc/imcc.y" 
     3962#line 1577 "compilers/imcc/imcc.y" 
    39623963    { 
    39633964           SymReg *r; 
    39643965           if (strcmp((yyvsp[(1) - (1)].s), "_") != 0) 
     
    39743975  case 86: 
    39753976 
    39763977/* Line 1464 of yacc.c  */ 
    3977 #line 1586 "compilers/imcc/imcc.y" 
     3978#line 1587 "compilers/imcc/imcc.y" 
    39783979    { (yyval.sr) = (yyvsp[(2) - (3)].sr); } 
    39793980    break; 
    39803981 
    39813982  case 89: 
    39823983 
    39833984/* Line 1464 of yacc.c  */ 
    3984 #line 1596 "compilers/imcc/imcc.y" 
     3985#line 1597 "compilers/imcc/imcc.y" 
    39853986    { 
    39863987           char name[128]; 
    39873988           SymReg *r, *r1; 
     
    40084009  case 90: 
    40094010 
    40104011/* Line 1464 of yacc.c  */ 
    4011 #line 1622 "compilers/imcc/imcc.y" 
     4012#line 1623 "compilers/imcc/imcc.y" 
    40124013    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; } 
    40134014    break; 
    40144015 
    40154016  case 91: 
    40164017 
    40174018/* Line 1464 of yacc.c  */ 
    4018 #line 1626 "compilers/imcc/imcc.y" 
     4019#line 1627 "compilers/imcc/imcc.y" 
    40194020    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; } 
    40204021    break; 
    40214022 
    40224023  case 92: 
    40234024 
    40244025/* Line 1464 of yacc.c  */ 
    4025 #line 1627 "compilers/imcc/imcc.y" 
     4026#line 1628 "compilers/imcc/imcc.y" 
    40264027    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; } 
    40274028    break; 
    40284029 
    40294030  case 93: 
    40304031 
    40314032/* Line 1464 of yacc.c  */ 
    4032 #line 1631 "compilers/imcc/imcc.y" 
     4033#line 1632 "compilers/imcc/imcc.y" 
    40334034    { (yyval.i) = NULL; } 
    40344035    break; 
    40354036 
    40364037  case 94: 
    40374038 
    40384039/* Line 1464 of yacc.c  */ 
    4039 #line 1632 "compilers/imcc/imcc.y" 
     4040#line 1633 "compilers/imcc/imcc.y" 
    40404041    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); } 
    40414042    break; 
    40424043 
    40434044  case 95: 
    40444045 
    40454046/* Line 1464 of yacc.c  */ 
    4046 #line 1636 "compilers/imcc/imcc.y" 
     4047#line 1637 "compilers/imcc/imcc.y" 
    40474048    { (yyval.t) = 0; } 
    40484049    break; 
    40494050 
    40504051  case 97: 
    40514052 
    40524053/* Line 1464 of yacc.c  */ 
    4053 #line 1641 "compilers/imcc/imcc.y" 
     4054#line 1642 "compilers/imcc/imcc.y" 
    40544055    { (yyval.t) = (yyvsp[(1) - (1)].t); } 
    40554056    break; 
    40564057 
    40574058  case 98: 
    40584059 
    40594060/* Line 1464 of yacc.c  */ 
    4060 #line 1642 "compilers/imcc/imcc.y" 
     4061#line 1643 "compilers/imcc/imcc.y" 
    40614062    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } 
    40624063    break; 
    40634064 
    40644065  case 99: 
    40654066 
    40664067/* Line 1464 of yacc.c  */ 
    4067 #line 1646 "compilers/imcc/imcc.y" 
     4068#line 1647 "compilers/imcc/imcc.y" 
    40684069    { (yyval.t) = P_LOAD; } 
    40694070    break; 
    40704071 
    40714072  case 100: 
    40724073 
    40734074/* Line 1464 of yacc.c  */ 
    4074 #line 1647 "compilers/imcc/imcc.y" 
     4075#line 1648 "compilers/imcc/imcc.y" 
    40754076    { (yyval.t) = P_INIT; } 
    40764077    break; 
    40774078 
    40784079  case 101: 
    40794080 
    40804081/* Line 1464 of yacc.c  */ 
    4081 #line 1648 "compilers/imcc/imcc.y" 
     4082#line 1649 "compilers/imcc/imcc.y" 
    40824083    { (yyval.t) = P_MAIN; } 
    40834084    break; 
    40844085 
    40854086  case 102: 
    40864087 
    40874088/* Line 1464 of yacc.c  */ 
    4088 #line 1649 "compilers/imcc/imcc.y" 
     4089#line 1650 "compilers/imcc/imcc.y" 
    40894090    { (yyval.t) = P_IMMEDIATE; } 
    40904091    break; 
    40914092 
    40924093  case 103: 
    40934094 
    40944095/* Line 1464 of yacc.c  */ 
    4095 #line 1650 "compilers/imcc/imcc.y" 
     4096#line 1651 "compilers/imcc/imcc.y" 
    40964097    { (yyval.t) = P_POSTCOMP; } 
    40974098    break; 
    40984099 
    40994100  case 104: 
    41004101 
    41014102/* Line 1464 of yacc.c  */ 
    4102 #line 1651 "compilers/imcc/imcc.y" 
     4103#line 1652 "compilers/imcc/imcc.y" 
    41034104    { (yyval.t) = P_ANON; } 
    41044105    break; 
    41054106 
    41064107  case 105: 
    41074108 
    41084109/* Line 1464 of yacc.c  */ 
    4109 #line 1652 "compilers/imcc/imcc.y" 
     4110#line 1653 "compilers/imcc/imcc.y" 
    41104111    { (yyval.t) = P_NEED_LEX; } 
    41114112    break; 
    41124113 
    41134114  case 113: 
    41144115 
    41154116/* Line 1464 of yacc.c  */ 
    4116 #line 1664 "compilers/imcc/imcc.y" 
     4117#line 1665 "compilers/imcc/imcc.y" 
    41174118    { 
    41184119           add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr)); 
    41194120           add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); 
     
    41234124  case 114: 
    41244125 
    41254126/* Line 1464 of yacc.c  */ 
    4126 #line 1669 "compilers/imcc/imcc.y" 
     4127#line 1670 "compilers/imcc/imcc.y" 
    41274128    { 
    41284129           add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 
    41294130         } 
     
    41324133  case 115: 
    41334134 
    41344135/* Line 1464 of yacc.c  */ 
    4135 #line 1673 "compilers/imcc/imcc.y" 
     4136#line 1674 "compilers/imcc/imcc.y" 
    41364137    { 
    41374138           add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 
    41384139         } 
     
    41414142  case 116: 
    41424143 
    41434144/* Line 1464 of yacc.c  */ 
    4144 #line 1677 "compilers/imcc/imcc.y" 
     4145#line 1678 "compilers/imcc/imcc.y" 
    41454146    { 
    41464147           add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 
    41474148         } 
     
    41504151  case 117: 
    41514152 
    41524153/* Line 1464 of yacc.c  */ 
    4153 #line 1681 "compilers/imcc/imcc.y" 
     4154#line 1682 "compilers/imcc/imcc.y" 
    41544155    { 
    41554156           add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S')); 
    41564157         } 
     
    41594160  case 118: 
    41604161 
    41614162/* Line 1464 of yacc.c  */ 
    4162 #line 1685 "compilers/imcc/imcc.y" 
     4163#line 1686 "compilers/imcc/imcc.y" 
    41634164    { 
    41644165           add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr)); 
    41654166           add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); 
     
    41694170  case 119: 
    41704171 
    41714172/* Line 1464 of yacc.c  */ 
    4172 #line 1690 "compilers/imcc/imcc.y" 
     4173#line 1691 "compilers/imcc/imcc.y" 
    41734174    { 
    41744175           add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S')); 
    41754176           add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); 
     
    41794180  case 120: 
    41804181 
    41814182/* Line 1464 of yacc.c  */ 
    4182 #line 1698 "compilers/imcc/imcc.y" 
     4183#line 1699 "compilers/imcc/imcc.y" 
    41834184    { (yyval.sr) = 0; } 
    41844185    break; 
    41854186 
    41864187  case 121: 
    41874188 
    41884189/* Line 1464 of yacc.c  */ 
    4189 #line 1699 "compilers/imcc/imcc.y" 
     4190#line 1700 "compilers/imcc/imcc.y" 
    41904191    { 
    41914192                                 if (IMCC_INFO(interp)->adv_named_id) { 
    41924193                                     add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call, 
     
    42014202  case 122: 
    42024203 
    42034204/* Line 1464 of yacc.c  */ 
    4204 #line 1711 "compilers/imcc/imcc.y" 
     4205#line 1712 "compilers/imcc/imcc.y" 
    42054206    { (yyval.sr) = (yyvsp[(2) - (2)].sr); } 
    42064207    break; 
    42074208 
    42084209  case 123: 
    42094210 
    42104211/* Line 1464 of yacc.c  */ 
    4211 #line 1716 "compilers/imcc/imcc.y" 
     4212#line 1717 "compilers/imcc/imcc.y" 
    42124213    { (yyval.sr) = 0; } 
    42134214    break; 
    42144215 
    42154216  case 124: 
    42164217 
    42174218/* Line 1464 of yacc.c  */ 
    4218 #line 1718 "compilers/imcc/imcc.y" 
     4219#line 1719 "compilers/imcc/imcc.y" 
    42194220    { 
    42204221           if ((yyvsp[(2) - (3)].sr)) 
    42214222               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 
     
    42254226  case 125: 
    42264227 
    42274228/* Line 1464 of yacc.c  */ 
    4228 #line 1725 "compilers/imcc/imcc.y" 
     4229#line 1726 "compilers/imcc/imcc.y" 
    42294230    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } 
    42304231    break; 
    42314232 
    42324233  case 126: 
    42334234 
    42344235/* Line 1464 of yacc.c  */ 
    4235 #line 1726 "compilers/imcc/imcc.y" 
     4236#line 1727 "compilers/imcc/imcc.y" 
    42364237    { IMCC_INFO(interp)->is_def = 1; } 
    42374238    break; 
    42384239 
    42394240  case 127: 
    42404241 
    42414242/* Line 1464 of yacc.c  */ 
    4242 #line 1727 "compilers/imcc/imcc.y" 
     4243#line 1728 "compilers/imcc/imcc.y" 
    42434244    { 
    42444245           IdList * const l = (yyvsp[(4) - (4)].idlist); 
    42454246           SymReg *ignored; 
     
    42534254  case 128: 
    42544255 
    42554256/* Line 1464 of yacc.c  */ 
    4256 #line 1738 "compilers/imcc/imcc.y" 
     4257#line 1739 "compilers/imcc/imcc.y" 
    42574258    { (yyval.t) = 0; } 
    42584259    break; 
    42594260 
    42604261  case 129: 
    42614262 
    42624263/* Line 1464 of yacc.c  */ 
    4263 #line 1739 "compilers/imcc/imcc.y" 
     4264#line 1740 "compilers/imcc/imcc.y" 
    42644265    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } 
    42654266    break; 
    42664267 
    42674268  case 130: 
    42684269 
    42694270/* Line 1464 of yacc.c  */ 
    4270 #line 1743 "compilers/imcc/imcc.y" 
     4271#line 1744 "compilers/imcc/imcc.y" 
    42714272    { (yyval.t) = VT_FLAT;   } 
    42724273    break; 
    42734274 
    42744275  case 131: 
    42754276 
    42764277/* Line 1464 of yacc.c  */ 
    4277 #line 1744 "compilers/imcc/imcc.y" 
     4278#line 1745 "compilers/imcc/imcc.y" 
    42784279    { (yyval.t) = VT_OPTIONAL; } 
    42794280    break; 
    42804281 
    42814282  case 132: 
    42824283 
    42834284/* Line 1464 of yacc.c  */ 
    4284 #line 1745 "compilers/imcc/imcc.y" 
     4285#line 1746 "compilers/imcc/imcc.y" 
    42854286    { (yyval.t) = VT_OPT_FLAG; } 
    42864287    break; 
    42874288 
    42884289  case 133: 
    42894290 
    42904291/* Line 1464 of yacc.c  */ 
    4291 #line 1746 "compilers/imcc/imcc.y" 
     4292#line 1747 "compilers/imcc/imcc.y" 
    42924293    { (yyval.t) = VT_NAMED; } 
    42934294    break; 
    42944295 
    42954296  case 134: 
    42964297 
    42974298/* Line 1464 of yacc.c  */ 
    4298 #line 1747 "compilers/imcc/imcc.y" 
     4299#line 1748 "compilers/imcc/imcc.y" 
    42994300    { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); } 
    43004301    break; 
    43014302 
    43024303  case 135: 
    43034304 
    43044305/* Line 1464 of yacc.c  */ 
    4305 #line 1748 "compilers/imcc/imcc.y" 
     4306#line 1749 "compilers/imcc/imcc.y" 
    43064307    { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); } 
    43074308    break; 
    43084309 
    43094310  case 136: 
    43104311 
    43114312/* Line 1464 of yacc.c  */ 
    4312 #line 1749 "compilers/imcc/imcc.y" 
     4313#line 1750 "compilers/imcc/imcc.y" 
    43134314    { (yyval.t) = 0; } 
    43144315    break; 
    43154316 
    43164317  case 137: 
    43174318 
    43184319/* Line 1464 of yacc.c  */ 
    4319 #line 1750 "compilers/imcc/imcc.y" 
     4320#line 1751 "compilers/imcc/imcc.y" 
    43204321    { (yyval.t) = VT_CALL_SIG; } 
    43214322    break; 
    43224323 
    43234324  case 138: 
    43244325 
    43254326/* Line 1464 of yacc.c  */ 
    4326 #line 1755 "compilers/imcc/imcc.y" 
     4327#line 1756 "compilers/imcc/imcc.y" 
    43274328    { begin_return_or_yield(interp, 0); } 
    43284329    break; 
    43294330 
    43304331  case 139: 
    43314332 
    43324333/* Line 1464 of yacc.c  */ 
    4333 #line 1757 "compilers/imcc/imcc.y" 
     4334#line 1758 "compilers/imcc/imcc.y" 
    43344335    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; } 
    43354336    break; 
    43364337 
    43374338  case 140: 
    43384339 
    43394340/* Line 1464 of yacc.c  */ 
    4340 #line 1759 "compilers/imcc/imcc.y" 
     4341#line 1760 "compilers/imcc/imcc.y" 
    43414342    { 
    43424343           IMCC_INFO(interp)->asm_state = AsmDefault; 
    43434344           (yyval.i) = 0; 
     
    43474348  case 141: 
    43484349 
    43494350/* Line 1464 of yacc.c  */ 
    4350 #line 1766 "compilers/imcc/imcc.y" 
     4351#line 1767 "compilers/imcc/imcc.y" 
    43514352    { begin_return_or_yield(interp, 1); } 
    43524353    break; 
    43534354 
    43544355  case 142: 
    43554356 
    43564357/* Line 1464 of yacc.c  */ 
    4357 #line 1768 "compilers/imcc/imcc.y" 
     4358#line 1769 "compilers/imcc/imcc.y" 
    43584359    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; } 
    43594360    break; 
    43604361 
    43614362  case 143: 
    43624363 
    43634364/* Line 1464 of yacc.c  */ 
    4364 #line 1772 "compilers/imcc/imcc.y" 
     4365#line 1773 "compilers/imcc/imcc.y" 
    43654366    { (yyval.sr) = 0; } 
    43664367    break; 
    43674368 
    43684369  case 144: 
    43694370 
    43704371/* Line 1464 of yacc.c  */ 
    4371 #line 1774 "compilers/imcc/imcc.y" 
     4372#line 1775 "compilers/imcc/imcc.y" 
    43724373    { 
    43734374           if ((yyvsp[(1) - (2)].sr)) 
    43744375               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr)); 
     
    43784379  case 145: 
    43794380 
    43804381/* Line 1464 of yacc.c  */ 
    4381 #line 1779 "compilers/imcc/imcc.y" 
     4382#line 1780 "compilers/imcc/imcc.y" 
    43824383    { 
    43834384           if ((yyvsp[(2) - (3)].sr)) 
    43844385               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr)); 
     
    43884389  case 146: 
    43894390 
    43904391/* Line 1464 of yacc.c  */ 
    4391 #line 1786 "compilers/imcc/imcc.y" 
     4392#line 1787 "compilers/imcc/imcc.y" 
    43924393    { (yyval.sr) = 0; } 
    43934394    break; 
    43944395 
    43954396  case 147: 
    43964397 
    43974398/* Line 1464 of yacc.c  */ 
    4398 #line 1788 "compilers/imcc/imcc.y" 
     4399#line 1789 "compilers/imcc/imcc.y" 
    43994400    { 
    44004401           if ((yyvsp[(1) - (2)].sr)) 
    44014402               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr)); 
     
    44054406  case 148: 
    44064407 
    44074408/* Line 1464 of yacc.c  */ 
    4408 #line 1793 "compilers/imcc/imcc.y" 
     4409#line 1794 "compilers/imcc/imcc.y" 
    44094410    { 
    44104411           if ((yyvsp[(2) - (3)].sr)) 
    44114412               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr)); 
     
    44154416  case 149: 
    44164417 
    44174418/* Line 1464 of yacc.c  */ 
    4418 #line 1800 "compilers/imcc/imcc.y" 
     4419#line 1801 "compilers/imcc/imcc.y" 
    44194420    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } 
    44204421    break; 
    44214422 
    44224423  case 150: 
    44234424 
    44244425/* Line 1464 of yacc.c  */ 
    4425 #line 1804 "compilers/imcc/imcc.y" 
     4426#line 1805 "compilers/imcc/imcc.y" 
    44264427    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } 
    44274428    break; 
    44284429 
    44294430  case 151: 
    44304431 
    44314432/* Line 1464 of yacc.c  */ 
    4432 #line 1809 "compilers/imcc/imcc.y" 
     4433#line 1810 "compilers/imcc/imcc.y" 
    44334434    { 
    44344435          if (IMCC_INFO(interp)->asm_state == AsmDefault) 
    44354436              begin_return_or_yield(interp, (yyvsp[(1) - (2)].t)); 
     
    44394440  case 152: 
    44404441 
    44414442/* Line 1464 of yacc.c  */ 
    4442 #line 1814 "compilers/imcc/imcc.y" 
     4443#line 1815 "compilers/imcc/imcc.y" 
    44434444    { 
    44444445          IMCC_INFO(interp)->asm_state = AsmDefault; 
    44454446          (yyval.t) = 0; 
     
    44494450  case 153: 
    44504451 
    44514452/* Line 1464 of yacc.c  */ 
    4452 #line 1821 "compilers/imcc/imcc.y" 
     4453#line 1822 "compilers/imcc/imcc.y" 
    44534454    { (yyval.t) = 0; } 
    44544455    break; 
    44554456 
    44564457  case 154: 
    44574458 
    44584459/* Line 1464 of yacc.c  */ 
    4459 #line 1822 "compilers/imcc/imcc.y" 
     4460#line 1823 "compilers/imcc/imcc.y" 
    44604461    { (yyval.t) = 1; } 
    44614462    break; 
    44624463 
    44634464  case 155: 
    44644465 
    44654466/* Line 1464 of yacc.c  */ 
    4466 #line 1826 "compilers/imcc/imcc.y" 
     4467#line 1827 "compilers/imcc/imcc.y" 
    44674468    { (yyval.i) = 0; } 
    44684469    break; 
    44694470 
    44704471  case 156: 
    44714472 
    44724473/* Line 1464 of yacc.c  */ 
    4473 #line 1828 "compilers/imcc/imcc.y" 
     4474#line 1829 "compilers/imcc/imcc.y" 
    44744475    { 
    44754476           if (IMCC_INFO(interp)->adv_named_id) { 
    44764477               add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, 
     
    44854486  case 157: 
    44864487 
    44874488/* Line 1464 of yacc.c  */ 
    4488 #line 1838 "compilers/imcc/imcc.y" 
     4489#line 1839 "compilers/imcc/imcc.y" 
    44894490    { 
    44904491            SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S'); 
    44914492            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr)); 
     
    44954496  case 158: 
    44964497 
    44974498/* Line 1464 of yacc.c  */ 
    4498 #line 1843 "compilers/imcc/imcc.y" 
     4499#line 1844 "compilers/imcc/imcc.y" 
    44994500    { 
    45004501           if (IMCC_INFO(interp)->adv_named_id) { 
    45014502               add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, 
     
    45104511  case 159: 
    45114512 
    45124513/* Line 1464 of yacc.c  */ 
    4513 #line 1853 "compilers/imcc/imcc.y" 
     4514#line 1854 "compilers/imcc/imcc.y" 
    45144515    { 
    45154516           SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S'); 
    45164517           add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr)); 
     
    45204521  case 162: 
    45214522 
    45224523/* Line 1464 of yacc.c  */ 
    4523 #line 1874 "compilers/imcc/imcc.y" 
     4524#line 1875 "compilers/imcc/imcc.y" 
    45244525    { clear_state(interp); } 
    45254526    break; 
    45264527 
    45274528  case 163: 
    45284529 
    45294530/* Line 1464 of yacc.c  */ 
    4530 #line 1879 "compilers/imcc/imcc.y" 
     4531#line 1880 "compilers/imcc/imcc.y" 
    45314532    { (yyval.i) = (yyvsp[(2) - (2)].i); } 
    45324533    break; 
    45334534 
    45344535  case 164: 
    45354536 
    45364537/* Line 1464 of yacc.c  */ 
    4537 #line 1880 "compilers/imcc/imcc.y" 
     4538#line 1881 "compilers/imcc/imcc.y" 
    45384539    { (yyval.i) = 0; } 
    45394540    break; 
    45404541 
    45414542  case 165: 
    45424543 
    45434544/* Line 1464 of yacc.c  */ 
    4544 #line 1881 "compilers/imcc/imcc.y" 
     4545#line 1882 "compilers/imcc/imcc.y" 
    45454546    { (yyval.i) = 0; } 
    45464547    break; 
    45474548 
    45484549  case 166: 
    45494550 
    45504551/* Line 1464 of yacc.c  */ 
    4551 #line 1882 "compilers/imcc/imcc.y" 
     4552#line 1883 "compilers/imcc/imcc.y" 
    45524553    { (yyval.i) = 0; } 
    45534554    break; 
    45544555 
    45554556  case 167: 
    45564557 
    45574558/* Line 1464 of yacc.c  */ 
    4558 #line 1883 "compilers/imcc/imcc.y" 
     4559#line 1884 "compilers/imcc/imcc.y" 
    45594560    { (yyval.i) = 0; } 
    45604561    break; 
    45614562 
    45624563  case 168: 
    45634564 
    45644565/* Line 1464 of yacc.c  */ 
    4565 #line 1884 "compilers/imcc/imcc.y" 
     4566#line 1885 "compilers/imcc/imcc.y" 
    45664567    { (yyval.i) = (yyvsp[(1) - (1)].i); } 
    45674568    break; 
    45684569 
    45694570  case 169: 
    45704571 
    45714572/* Line 1464 of yacc.c  */ 
    4572 #line 1888 "compilers/imcc/imcc.y" 
     4573#line 1889 "compilers/imcc/imcc.y" 
    45734574    { (yyval.i) = NULL; } 
    45744575    break; 
    45754576 
    45764577  case 173: 
    45774578 
    45784579/* Line 1464 of yacc.c  */ 
    4579 #line 1899 "compilers/imcc/imcc.y" 
     4580#line 1900 "compilers/imcc/imcc.y" 
    45804581    { 
    45814582             Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s))); 
    45824583             mem_sys_free((yyvsp[(1) - (1)].s)); 
     
    45874588  case 174: 
    45884589 
    45894590/* Line 1464 of yacc.c  */ 
    4590 #line 1909 "compilers/imcc/imcc.y" 
     4591#line 1910 "compilers/imcc/imcc.y" 
    45914592    { (yyval.i) = (yyvsp[(2) - (3)].i); } 
    45924593    break; 
    45934594 
    45944595  case 175: 
    45954596 
    45964597/* Line 1464 of yacc.c  */ 
    4597 #line 1911 "compilers/imcc/imcc.y" 
     4598#line 1912 "compilers/imcc/imcc.y" 
    45984599    { 
    45994600           if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) { 
    46004601               IMCC_warning(interp, "Too many errors. Correct some first.\n"); 
     
    46074608  case 176: 
    46084609 
    46094610/* Line 1464 of yacc.c  */ 
    4610 #line 1922 "compilers/imcc/imcc.y" 
     4611#line 1923 "compilers/imcc/imcc.y" 
    46114612    { 
    46124613           IdList* const l = (yyvsp[(1) - (1)].idlist); 
    46134614           l->next = NULL; 
     
    46184619  case 177: 
    46194620 
    46204621/* Line 1464 of yacc.c  */ 
    4621 #line 1929 "compilers/imcc/imcc.y" 
     4622#line 1930 "compilers/imcc/imcc.y" 
    46224623    { 
    46234624           IdList* const l = (yyvsp[(3) - (3)].idlist); 
    46244625           l->next = (yyvsp[(1) - (3)].idlist); 
     
    46294630  case 178: 
    46304631 
    46314632/* Line 1464 of yacc.c  */ 
    4632 #line 1938 "compilers/imcc/imcc.y" 
     4633#line 1939 "compilers/imcc/imcc.y" 
    46334634    { 
    46344635           IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList); 
    46354636           l->id           = (yyvsp[(1) - (2)].s); 
     
    46404641  case 183: 
    46414642 
    46424643/* Line 1464 of yacc.c  */ 
    4643 #line 1954 "compilers/imcc/imcc.y" 
     4644#line 1955 "compilers/imcc/imcc.y" 
    46444645    { IMCC_INFO(interp)->is_def = 1; } 
    46454646    break; 
    46464647 
    46474648  case 184: 
    46484649 
    46494650/* Line 1464 of yacc.c  */ 
    4650 #line 1955 "compilers/imcc/imcc.y" 
     4651#line 1956 "compilers/imcc/imcc.y" 
    46514652    { 
    46524653           IdList *l = (yyvsp[(4) - (4)].idlist); 
    46534654           while (l) { 
     
    46654666  case 185: 
    46664667 
    46674668/* Line 1464 of yacc.c  */ 
    4668 #line 1968 "compilers/imcc/imcc.y" 
     4669#line 1969 "compilers/imcc/imcc.y" 
    46694670    { 
    46704671            if ((yyvsp[(4) - (4)].sr)->set != 'P') { 
    46714672                mem_sys_free((yyvsp[(2) - (4)].s)); 
     
    46874688  case 186: 
    46884689 
    46894690/* Line 1464 of yacc.c  */ 
    4690 #line 1985 "compilers/imcc/imcc.y" 
     4691#line 1986 "compilers/imcc/imcc.y" 
    46914692    { 
    46924693            if ((yyvsp[(4) - (4)].sr)->set != 'P') { 
    46934694                mem_sys_free((yyvsp[(2) - (4)].s)); 
     
    47054706  case 187: 
    47064707 
    47074708/* Line 1464 of yacc.c  */ 
    4708 #line 1997 "compilers/imcc/imcc.y" 
     4709#line 1998 "compilers/imcc/imcc.y" 
    47094710    { IMCC_INFO(interp)->is_def = 1; } 
    47104711    break; 
    47114712 
    47124713  case 188: 
    47134714 
    47144715/* Line 1464 of yacc.c  */ 
    4715 #line 1998 "compilers/imcc/imcc.y" 
     4716#line 1999 "compilers/imcc/imcc.y" 
    47164717    { 
    47174718           mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0); 
    47184719           IMCC_INFO(interp)->is_def = 0; 
     
    47234724  case 190: 
    47244725 
    47254726/* Line 1464 of yacc.c  */ 
    4726 #line 2005 "compilers/imcc/imcc.y" 
     4727#line 2006 "compilers/imcc/imcc.y" 
    47274728    { IMCC_INFO(interp)->is_def = 1; } 
    47284729    break; 
    47294730 
    47304731  case 191: 
    47314732 
    47324733/* Line 1464 of yacc.c  */ 
    4733 #line 2006 "compilers/imcc/imcc.y" 
     4734#line 2007 "compilers/imcc/imcc.y" 
    47344735    { 
    47354736           mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); 
    47364737           IMCC_INFO(interp)->is_def = 0; 
     
    47414742  case 192: 
    47424743 
    47434744/* Line 1464 of yacc.c  */ 
    4744 #line 2012 "compilers/imcc/imcc.y" 
     4745#line 2013 "compilers/imcc/imcc.y" 
    47454746    { 
    47464747           (yyval.i) = NULL; 
    47474748           IMCC_INFO(interp)->cur_call->pcc_sub->tailcall = 1; 
     
    47524753  case 193: 
    47534754 
    47544755/* Line 1464 of yacc.c  */ 
    4755 #line 2018 "compilers/imcc/imcc.y" 
     4756#line 2019 "compilers/imcc/imcc.y" 
    47564757    { 
    47574758            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); 
    47584759         } 
     
    47614762  case 194: 
    47624763 
    47634764/* Line 1464 of yacc.c  */ 
    4764 #line 2022 "compilers/imcc/imcc.y" 
     4765#line 2023 "compilers/imcc/imcc.y" 
    47654766    { 
    47664767           (yyval.i) = INS(interp, 
    47674768                    IMCC_INFO(interp)->cur_unit, 
     
    47784779  case 195: 
    47794780 
    47804781/* Line 1464 of yacc.c  */ 
    4781 #line 2033 "compilers/imcc/imcc.y" 
     4782#line 2034 "compilers/imcc/imcc.y" 
    47824783    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); } 
    47834784    break; 
    47844785 
    47854786  case 196: 
    47864787 
    47874788/* Line 1464 of yacc.c  */ 
    4788 #line 2034 "compilers/imcc/imcc.y" 
     4789#line 2035 "compilers/imcc/imcc.y" 
    47894790    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; } 
    47904791    break; 
    47914792 
    47924793  case 197: 
    47934794 
    47944795/* Line 1464 of yacc.c  */ 
    4795 #line 2035 "compilers/imcc/imcc.y" 
     4796#line 2036 "compilers/imcc/imcc.y" 
    47964797    { (yyval.i) = 0; } 
    47974798    break; 
    47984799 
    47994800  case 200: 
    48004801 
    48014802/* Line 1464 of yacc.c  */ 
    4802 #line 2038 "compilers/imcc/imcc.y" 
     4803#line 2039 "compilers/imcc/imcc.y" 
    48034804    { (yyval.i) = 0;} 
    48044805    break; 
    48054806 
    48064807  case 201: 
    48074808 
    48084809/* Line 1464 of yacc.c  */ 
    4809 #line 2042 "compilers/imcc/imcc.y" 
     4810#line 2043 "compilers/imcc/imcc.y" 
    48104811    { (yyval.t) = 'I'; } 
    48114812    break; 
    48124813 
    48134814  case 202: 
    48144815 
    48154816/* Line 1464 of yacc.c  */ 
    4816 #line 2043 "compilers/imcc/imcc.y" 
     4817#line 2044 "compilers/imcc/imcc.y" 
    48174818    { (yyval.t) = 'N'; } 
    48184819    break; 
    48194820 
    48204821  case 203: 
    48214822 
    48224823/* Line 1464 of yacc.c  */ 
    4823 #line 2044 "compilers/imcc/imcc.y" 
     4824#line 2045 "compilers/imcc/imcc.y" 
    48244825    { (yyval.t) = 'S'; } 
    48254826    break; 
    48264827 
    48274828  case 204: 
    48284829 
    48294830/* Line 1464 of yacc.c  */ 
    4830 #line 2045 "compilers/imcc/imcc.y" 
     4831#line 2046 "compilers/imcc/imcc.y" 
    48314832    { (yyval.t) = 'P'; } 
    48324833    break; 
    48334834 
    48344835  case 205: 
    48354836 
    48364837/* Line 1464 of yacc.c  */ 
    4837 #line 2050 "compilers/imcc/imcc.y" 
     4838#line 2051 "compilers/imcc/imcc.y" 
    48384839    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  } 
    48394840    break; 
    48404841 
    48414842  case 206: 
    48424843 
    48434844/* Line 1464 of yacc.c  */ 
    4844 #line 2052 "compilers/imcc/imcc.y" 
     4845#line 2053 "compilers/imcc/imcc.y" 
    48454846    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  } 
    48464847    break; 
    48474848 
    48484849  case 207: 
    48494850 
    48504851/* Line 1464 of yacc.c  */ 
    4851 #line 2054 "compilers/imcc/imcc.y" 
     4852#line 2055 "compilers/imcc/imcc.y" 
    48524853    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } 
    48534854    break; 
    48544855 
    48554856  case 208: 
    48564857 
    48574858/* Line 1464 of yacc.c  */ 
    4858 #line 2056 "compilers/imcc/imcc.y" 
     4859#line 2057 "compilers/imcc/imcc.y" 
    48594860    { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); } 
    48604861    break; 
    48614862 
    48624863  case 209: 
    48634864 
    48644865/* Line 1464 of yacc.c  */ 
    4865 #line 2058 "compilers/imcc/imcc.y" 
     4866#line 2059 "compilers/imcc/imcc.y" 
    48664867    { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); } 
    48674868    break; 
    48684869 
    48694870  case 210: 
    48704871 
    48714872/* Line 1464 of yacc.c  */ 
    4872 #line 2061 "compilers/imcc/imcc.y" 
     4873#line 2062 "compilers/imcc/imcc.y" 
    48734874    { 
    48744875           add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr)); 
    48754876           IMCC_INFO(interp)->cur_call = NULL; 
     
    48804881  case 211: 
    48814882 
    48824883/* Line 1464 of yacc.c  */ 
    4883 #line 2067 "compilers/imcc/imcc.y" 
     4884#line 2068 "compilers/imcc/imcc.y" 
    48844885    { 
    48854886           (yyval.i) = IMCC_create_itcall_label(interp); 
    48864887         } 
     
    48894890  case 212: 
    48904891 
    48914892/* Line 1464 of yacc.c  */ 
    4892 #line 2071 "compilers/imcc/imcc.y" 
     4893#line 2072 "compilers/imcc/imcc.y" 
    48934894    { 
    48944895           IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr)); 
    48954896           IMCC_INFO(interp)->cur_call = NULL; 
     
    48994900  case 216: 
    49004901 
    49014902/* Line 1464 of yacc.c  */ 
    4902 #line 2079 "compilers/imcc/imcc.y" 
     4903#line 2080 "compilers/imcc/imcc.y" 
    49034904    { 
    49044905           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr)); 
    49054906         } 
     
    49084909  case 217: 
    49094910 
    49104911/* Line 1464 of yacc.c  */ 
    4911 #line 2086 "compilers/imcc/imcc.y" 
     4912#line 2087 "compilers/imcc/imcc.y" 
    49124913    { (yyval.s) = (char *)"not"; } 
    49134914    break; 
    49144915 
    49154916  case 218: 
    49164917 
    49174918/* Line 1464 of yacc.c  */ 
    4918 #line 2087 "compilers/imcc/imcc.y" 
     4919#line 2088 "compilers/imcc/imcc.y" 
    49194920    { (yyval.s) = (char *)"bnot"; } 
    49204921    break; 
    49214922 
    49224923  case 219: 
    49234924 
    49244925/* Line 1464 of yacc.c  */ 
    4925 #line 2088 "compilers/imcc/imcc.y" 
     4926#line 2089 "compilers/imcc/imcc.y" 
    49264927    { (yyval.s) = (char *)"neg"; } 
    49274928    break; 
    49284929 
    49294930  case 220: 
    49304931 
    49314932/* Line 1464 of yacc.c  */ 
    4932 #line 2092 "compilers/imcc/imcc.y" 
     4933#line 2093 "compilers/imcc/imcc.y" 
    49334934    { (yyval.s) = (char *)"sub"; } 
    49344935    break; 
    49354936 
    49364937  case 221: 
    49374938 
    49384939/* Line 1464 of yacc.c  */ 
    4939 #line 2093 "compilers/imcc/imcc.y" 
     4940#line 2094 "compilers/imcc/imcc.y" 
    49404941    { (yyval.s) = (char *)"add"; } 
    49414942    break; 
    49424943 
    49434944  case 222: 
    49444945 
    49454946/* Line 1464 of yacc.c  */ 
    4946 #line 2094 "compilers/imcc/imcc.y" 
     4947#line 2095 "compilers/imcc/imcc.y" 
    49474948    { (yyval.s) = (char *)"mul"; } 
    49484949    break; 
    49494950 
    49504951  case 223: 
    49514952 
    49524953/* Line 1464 of yacc.c  */ 
    4953 #line 2095 "compilers/imcc/imcc.y" 
     4954#line 2096 "compilers/imcc/imcc.y" 
    49544955    { (yyval.s) = (char *)"div"; } 
    49554956    break; 
    49564957 
    49574958  case 224: 
    49584959 
    49594960/* Line 1464 of yacc.c  */ 
    4960 #line 2096 "compilers/imcc/imcc.y" 
     4961#line 2097 "compilers/imcc/imcc.y" 
    49614962    { (yyval.s) = (char *)"mod"; } 
    49624963    break; 
    49634964 
    49644965  case 225: 
    49654966 
    49664967/* Line 1464 of yacc.c  */ 
    4967 #line 2097 "compilers/imcc/imcc.y" 
     4968#line 2098 "compilers/imcc/imcc.y" 
    49684969    { (yyval.s) = (char *)"fdiv"; } 
    49694970    break; 
    49704971 
    49714972  case 226: 
    49724973 
    49734974/* Line 1464 of yacc.c  */ 
    4974 #line 2098 "compilers/imcc/imcc.y" 
     4975#line 2099 "compilers/imcc/imcc.y" 
    49754976    { (yyval.s) = (char *)"pow"; } 
    49764977    break; 
    49774978 
    49784979  case 227: 
    49794980 
    49804981/* Line 1464 of yacc.c  */ 
    4981 #line 2099 "compilers/imcc/imcc.y" 
     4982#line 2100 "compilers/imcc/imcc.y" 
    49824983    { (yyval.s) = (char *)"concat"; } 
    49834984    break; 
    49844985 
    49854986  case 228: 
    49864987 
    49874988/* Line 1464 of yacc.c  */ 
    4988 #line 2100 "compilers/imcc/imcc.y" 
     4989#line 2101 "compilers/imcc/imcc.y" 
    49894990    { (yyval.s) = (char *)"iseq"; } 
    49904991    break; 
    49914992 
    49924993  case 229: 
    49934994 
    49944995/* Line 1464 of yacc.c  */ 
    4995 #line 2101 "compilers/imcc/imcc.y" 
     4996#line 2102 "compilers/imcc/imcc.y" 
    49964997    { (yyval.s) = (char *)"isne"; } 
    49974998    break; 
    49984999 
    49995000  case 230: 
    50005001 
    50015002/* Line 1464 of yacc.c  */ 
    5002 #line 2102 "compilers/imcc/imcc.y" 
     5003#line 2103 "compilers/imcc/imcc.y" 
    50035004    { (yyval.s) = (char *)"isgt"; } 
    50045005    break; 
    50055006 
    50065007  case 231: 
    50075008 
    50085009/* Line 1464 of yacc.c  */ 
    5009 #line 2103 "compilers/imcc/imcc.y" 
     5010#line 2104 "compilers/imcc/imcc.y" 
    50105011    { (yyval.s) = (char *)"isge"; } 
    50115012    break; 
    50125013 
    50135014  case 232: 
    50145015 
    50155016/* Line 1464 of yacc.c  */ 
    5016 #line 2104 "compilers/imcc/imcc.y" 
     5017#line 2105 "compilers/imcc/imcc.y" 
    50175018    { (yyval.s) = (char *)"islt"; } 
    50185019    break; 
    50195020 
    50205021  case 233: 
    50215022 
    50225023/* Line 1464 of yacc.c  */ 
    5023 #line 2105 "compilers/imcc/imcc.y" 
     5024#line 2106 "compilers/imcc/imcc.y" 
    50245025    { (yyval.s) = (char *)"isle"; } 
    50255026    break; 
    50265027 
    50275028  case 234: 
    50285029 
    50295030/* Line 1464 of yacc.c  */ 
    5030 #line 2106 "compilers/imcc/imcc.y" 
     5031#line 2107 "compilers/imcc/imcc.y" 
    50315032    { (yyval.s) = (char *)"shl"; } 
    50325033    break; 
    50335034 
    50345035  case 235: 
    50355036 
    50365037/* Line 1464 of yacc.c  */ 
    5037 #line 2107 "compilers/imcc/imcc.y" 
     5038#line 2108 "compilers/imcc/imcc.y" 
    50385039    { (yyval.s) = (char *)"shr"; } 
    50395040    break; 
    50405041 
    50415042  case 236: 
    50425043 
    50435044/* Line 1464 of yacc.c  */ 
    5044 #line 2108 "compilers/imcc/imcc.y" 
     5045#line 2109 "compilers/imcc/imcc.y" 
    50455046    { (yyval.s) = (char *)"lsr"; } 
    50465047    break; 
    50475048 
    50485049  case 237: 
    50495050 
    50505051/* Line 1464 of yacc.c  */ 
    5051 #line 2109 "compilers/imcc/imcc.y" 
     5052#line 2110 "compilers/imcc/imcc.y" 
    50525053    { (yyval.s) = (char *)"and"; } 
    50535054    break; 
    50545055 
    50555056  case 238: 
    50565057 
    50575058/* Line 1464 of yacc.c  */ 
    5058 #line 2110 "compilers/imcc/imcc.y" 
     5059#line 2111 "compilers/imcc/imcc.y" 
    50595060    { (yyval.s) = (char *)"or"; } 
    50605061    break; 
    50615062 
    50625063  case 239: 
    50635064 
    50645065/* Line 1464 of yacc.c  */ 
    5065 #line 2111 "compilers/imcc/imcc.y" 
     5066#line 2112 "compilers/imcc/imcc.y" 
    50665067    { (yyval.s) = (char *)"xor"; } 
    50675068    break; 
    50685069 
    50695070  case 240: 
    50705071 
    50715072/* Line 1464 of yacc.c  */ 
    5072 #line 2112 "compilers/imcc/imcc.y" 
     5073#line 2113 "compilers/imcc/imcc.y" 
    50735074    { (yyval.s) = (char *)"band"; } 
    50745075    break; 
    50755076 
    50765077  case 241: 
    50775078 
    50785079/* Line 1464 of yacc.c  */ 
    5079 #line 2113 "compilers/imcc/imcc.y" 
     5080#line 2114 "compilers/imcc/imcc.y" 
    50805081    { (yyval.s) = (char *)"bor"; } 
    50815082    break; 
    50825083 
    50835084  case 242: 
    50845085 
    50855086/* Line 1464 of yacc.c  */ 
    5086 #line 2114 "compilers/imcc/imcc.y" 
     5087#line 2115 "compilers/imcc/imcc.y" 
    50875088    { (yyval.s) = (char *)"bxor"; } 
    50885089    break; 
    50895090 
    50905091  case 243: 
    50915092 
    50925093/* Line 1464 of yacc.c  */ 
    5093 #line 2120 "compilers/imcc/imcc.y" 
     5094#line 2121 "compilers/imcc/imcc.y" 
    50945095    { 
    50955096           (yyval.i) = IMCC_create_itcall_label(interp); 
    50965097           (yyval.i)->type &= ~ITCALL; 
     
    51015102  case 244: 
    51025103 
    51035104/* Line 1464 of yacc.c  */ 
    5104 #line 2125 "compilers/imcc/imcc.y" 
     5105#line 2126 "compilers/imcc/imcc.y" 
    51055106    {  (yyval.i) = 0; } 
    51065107    break; 
    51075108 
    51085109  case 245: 
    51095110 
    51105111/* Line 1464 of yacc.c  */ 
    5111 #line 2132 "compilers/imcc/imcc.y" 
     5112#line 2133 "compilers/imcc/imcc.y" 
    51125113    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); } 
    51135114    break; 
    51145115 
    51155116  case 246: 
    51165117 
    51175118/* Line 1464 of yacc.c  */ 
    5118 #line 2136 "compilers/imcc/imcc.y" 
     5119#line 2137 "compilers/imcc/imcc.y" 
    51195120    { (yyval.s) = (char *)"add"; } 
    51205121    break; 
    51215122 
    51225123  case 247: 
    51235124 
    51245125/* Line 1464 of yacc.c  */ 
    5125 #line 2137 "compilers/imcc/imcc.y" 
     5126#line 2138 "compilers/imcc/imcc.y" 
    51265127    { (yyval.s) = (char *)"sub"; } 
    51275128    break; 
    51285129 
    51295130  case 248: 
    51305131 
    51315132/* Line 1464 of yacc.c  */ 
    5132 #line 2138 "compilers/imcc/imcc.y" 
     5133#line 2139 "compilers/imcc/imcc.y" 
    51335134    { (yyval.s) = (char *)"mul"; } 
    51345135    break; 
    51355136 
    51365137  case 249: 
    51375138 
    51385139/* Line 1464 of yacc.c  */ 
    5139 #line 2139 "compilers/imcc/imcc.y" 
     5140#line 2140 "compilers/imcc/imcc.y" 
    51405141    { (yyval.s) = (char *)"div"; } 
    51415142    break; 
    51425143 
    51435144  case 250: 
    51445145 
    51455146/* Line 1464 of yacc.c  */ 
    5146 #line 2140 "compilers/imcc/imcc.y" 
     5147#line 2141 "compilers/imcc/imcc.y" 
    51475148    { (yyval.s) = (char *)"mod"; } 
    51485149    break; 
    51495150 
    51505151  case 251: 
    51515152 
    51525153/* Line 1464 of yacc.c  */ 
    5153 #line 2141 "compilers/imcc/imcc.y" 
     5154#line 2142 "compilers/imcc/imcc.y" 
    51545155    { (yyval.s) = (char *)"fdiv"; } 
    51555156    break; 
    51565157 
    51575158  case 252: 
    51585159 
    51595160/* Line 1464 of yacc.c  */ 
    5160 #line 2142 "compilers/imcc/imcc.y" 
     5161#line 2143 "compilers/imcc/imcc.y" 
    51615162    { (yyval.s) = (char *)"concat"; } 
    51625163    break; 
    51635164 
    51645165  case 253: 
    51655166 
    51665167/* Line 1464 of yacc.c  */ 
    5167 #line 2143 "compilers/imcc/imcc.y" 
     5168#line 2144 "compilers/imcc/imcc.y" 
    51685169    { (yyval.s) = (char *)"band"; } 
    51695170    break; 
    51705171 
    51715172  case 254: 
    51725173 
    51735174/* Line 1464 of yacc.c  */ 
    5174 #line 2144 "compilers/imcc/imcc.y" 
     5175#line 2145 "compilers/imcc/imcc.y" 
    51755176    { (yyval.s) = (char *)"bor"; } 
    51765177    break; 
    51775178 
    51785179  case 255: 
    51795180 
    51805181/* Line 1464 of yacc.c  */ 
    5181 #line 2145 "compilers/imcc/imcc.y" 
     5182#line 2146 "compilers/imcc/imcc.y" 
    51825183    { (yyval.s) = (char *)"bxor"; } 
    51835184    break; 
    51845185 
    51855186  case 256: 
    51865187 
    51875188/* Line 1464 of yacc.c  */ 
    5188 #line 2146 "compilers/imcc/imcc.y" 
     5189#line 2147 "compilers/imcc/imcc.y" 
    51895190    { (yyval.s) = (char *)"shr"; } 
    51905191    break; 
    51915192 
    51925193  case 257: 
    51935194 
    51945195/* Line 1464 of yacc.c  */ 
    5195 #line 2147 "compilers/imcc/imcc.y" 
     5196#line 2148 "compilers/imcc/imcc.y" 
    51965197    { (yyval.s) = (char *)"shl"; } 
    51975198    break; 
    51985199 
    51995200  case 258: 
    52005201 
    52015202/* Line 1464 of yacc.c  */ 
    5202 #line 2148 "compilers/imcc/imcc.y" 
     5203#line 2149 "compilers/imcc/imcc.y" 
    52035204    { (yyval.s) = (char *)"lsr"; } 
    52045205    break; 
    52055206 
    52065207  case 259: 
    52075208 
    52085209/* Line 1464 of yacc.c  */ 
    5209 #line 2154 "compilers/imcc/imcc.y" 
     5210#line 2155 "compilers/imcc/imcc.y" 
    52105211    { 
    52115212        (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s), 
    52125213                      IMCC_INFO(interp) -> regs, 
     
    52195220  case 260: 
    52205221 
    52215222/* Line 1464 of yacc.c  */ 
    5222 #line 2164 "compilers/imcc/imcc.y" 
     5223#line 2165 "compilers/imcc/imcc.y" 
    52235224    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); } 
    52245225    break; 
    52255226 
    52265227  case 261: 
    52275228 
    52285229/* Line 1464 of yacc.c  */ 
    5229 #line 2165 "compilers/imcc/imcc.y" 
     5230#line 2166 "compilers/imcc/imcc.y" 
    52305231    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    52315232    break; 
    52325233 
    52335234  case 262: 
    52345235 
    52355236/* Line 1464 of yacc.c  */ 
    5236 #line 2166 "compilers/imcc/imcc.y" 
     5237#line 2167 "compilers/imcc/imcc.y" 
    52375238    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); } 
    52385239    break; 
    52395240 
    52405241  case 263: 
    52415242 
    52425243/* Line 1464 of yacc.c  */ 
    5243 #line 2168 "compilers/imcc/imcc.y" 
     5244#line 2169 "compilers/imcc/imcc.y" 
    52445245    { 
    52455246           (yyval.sr) = (yyvsp[(1) - (1)].sr); 
    52465247           if ((yyvsp[(1) - (1)].sr)->set != 'P') 
     
    52515252  case 264: 
    52525253 
    52535254/* Line 1464 of yacc.c  */ 
    5254 #line 2174 "compilers/imcc/imcc.y" 
     5255#line 2175 "compilers/imcc/imcc.y" 
    52555256    { 
    52565257            /* disallow bareword method names; SREG name constants are fine */ 
    52575258            const char * const name = (yyvsp[(3) - (3)].sr)->name; 
     
    52705271  case 265: 
    52715272 
    52725273/* Line 1464 of yacc.c  */ 
    5273 #line 2188 "compilers/imcc/imcc.y" 
     5274#line 2189 "compilers/imcc/imcc.y" 
    52745275    { 
    52755276            IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); 
    52765277            (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'U'); 
     
    52815282  case 266: 
    52825283 
    52835284/* Line 1464 of yacc.c  */ 
    5284 #line 2194 "compilers/imcc/imcc.y" 
     5285#line 2195 "compilers/imcc/imcc.y" 
    52855286    { 
    52865287            IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); 
    52875288            (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S'); 
     
    52925293  case 267: 
    52935294 
    52945295/* Line 1464 of yacc.c  */ 
    5295 #line 2199 "compilers/imcc/imcc.y" 
     5296#line 2200 "compilers/imcc/imcc.y" 
    52965297    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); } 
    52975298    break; 
    52985299 
    52995300  case 268: 
    53005301 
    53015302/* Line 1464 of yacc.c  */ 
    5302 #line 2205 "compilers/imcc/imcc.y" 
     5303#line 2206 "compilers/imcc/imcc.y" 
    53035304    { 
    53045305           (yyval.i) = IMCC_create_itcall_label(interp); 
    53055306           IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr)); 
     
    53095310  case 269: 
    53105311 
    53115312/* Line 1464 of yacc.c  */ 
    5312 #line 2209 "compilers/imcc/imcc.y" 
     5313#line 2210 "compilers/imcc/imcc.y" 
    53135314    { (yyval.i) = (yyvsp[(2) - (5)].i); } 
    53145315    break; 
    53155316 
    53165317  case 270: 
    53175318 
    53185319/* Line 1464 of yacc.c  */ 
    5319 #line 2213 "compilers/imcc/imcc.y" 
     5320#line 2214 "compilers/imcc/imcc.y" 
    53205321    { (yyval.sr) = 0; } 
    53215322    break; 
    53225323 
    53235324  case 271: 
    53245325 
    53255326/* Line 1464 of yacc.c  */ 
    5326 #line 2215 "compilers/imcc/imcc.y" 
     5327#line 2216 "compilers/imcc/imcc.y" 
    53275328    { 
    53285329           (yyval.sr) = 0; 
    53295330           if (IMCC_INFO(interp)->adv_named_id) { 
     
    53385339  case 272: 
    53395340 
    53405341/* Line 1464 of yacc.c  */ 
    5341 #line 2225 "compilers/imcc/imcc.y" 
     5342#line 2226 "compilers/imcc/imcc.y" 
    53425343    { 
    53435344           (yyval.sr) = 0; 
    53445345           if (IMCC_INFO(interp)->adv_named_id) { 
     
    53535354  case 273: 
    53545355 
    53555356/* Line 1464 of yacc.c  */ 
    5356 #line 2235 "compilers/imcc/imcc.y" 
     5357#line 2236 "compilers/imcc/imcc.y" 
    53575358    { 
    53585359           (yyval.sr) = 0; 
    53595360           add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, 
     
    53655366  case 274: 
    53665367 
    53675368/* Line 1464 of yacc.c  */ 
    5368 #line 2242 "compilers/imcc/imcc.y" 
     5369#line 2243 "compilers/imcc/imcc.y" 
    53695370    { 
    53705371           (yyval.sr) = 0; 
    53715372           add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); 
     
    53755376  case 275: 
    53765377 
    53775378/* Line 1464 of yacc.c  */ 
    5378 #line 2247 "compilers/imcc/imcc.y" 
     5379#line 2248 "compilers/imcc/imcc.y" 
    53795380    { 
    53805381           (yyval.sr) = 0; 
    53815382           add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, 
     
    53875388  case 276: 
    53885389 
    53895390/* Line 1464 of yacc.c  */ 
    5390 #line 2256 "compilers/imcc/imcc.y" 
     5391#line 2257 "compilers/imcc/imcc.y" 
    53915392    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); } 
    53925393    break; 
    53935394 
    53945395  case 277: 
    53955396 
    53965397/* Line 1464 of yacc.c  */ 
    5397 #line 2260 "compilers/imcc/imcc.y" 
     5398#line 2261 "compilers/imcc/imcc.y" 
    53985399    { (yyval.t) = 0; } 
    53995400    break; 
    54005401 
    54015402  case 278: 
    54025403 
    54035404/* Line 1464 of yacc.c  */ 
    5404 #line 2261 "compilers/imcc/imcc.y" 
     5405#line 2262 "compilers/imcc/imcc.y" 
    54055406    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } 
    54065407    break; 
    54075408 
    54085409  case 279: 
    54095410 
    54105411/* Line 1464 of yacc.c  */ 
    5411 #line 2265 "compilers/imcc/imcc.y" 
     5412#line 2266 "compilers/imcc/imcc.y" 
    54125413    { (yyval.t) = VT_FLAT;     } 
    54135414    break; 
    54145415 
    54155416  case 280: 
    54165417 
    54175418/* Line 1464 of yacc.c  */ 
    5418 #line 2266 "compilers/imcc/imcc.y" 
     5419#line 2267 "compilers/imcc/imcc.y" 
    54195420    { (yyval.t) = VT_NAMED;    } 
    54205421    break; 
    54215422 
    54225423  case 281: 
    54235424 
    54245425/* Line 1464 of yacc.c  */ 
    5425 #line 2267 "compilers/imcc/imcc.y" 
     5426#line 2268 "compilers/imcc/imcc.y" 
    54265427    { (yyval.t) = VT_CALL_SIG; } 
    54275428    break; 
    54285429 
    54295430  case 282: 
    54305431 
    54315432/* Line 1464 of yacc.c  */ 
    5432 #line 2270 "compilers/imcc/imcc.y" 
     5433#line 2271 "compilers/imcc/imcc.y" 
    54335434    { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; } 
    54345435    break; 
    54355436 
    54365437  case 283: 
    54375438 
    54385439/* Line 1464 of yacc.c  */ 
    5439 #line 2271 "compilers/imcc/imcc.y" 
     5440#line 2272 "compilers/imcc/imcc.y" 
    54405441    { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; } 
    54415442    break; 
    54425443 
    54435444  case 284: 
    54445445 
    54455446/* Line 1464 of yacc.c  */ 
    5446 #line 2275 "compilers/imcc/imcc.y" 
     5447#line 2276 "compilers/imcc/imcc.y" 
    54475448    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); } 
    54485449    break; 
    54495450 
    54505451  case 285: 
    54515452 
    54525453/* Line 1464 of yacc.c  */ 
    5453 #line 2280 "compilers/imcc/imcc.y" 
     5454#line 2281 "compilers/imcc/imcc.y" 
    54545455    { 
    54555456           (yyval.sr) = 0; 
    54565457           if (IMCC_INFO(interp)->adv_named_id) { 
     
    54655466  case 286: 
    54665467 
    54675468/* Line 1464 of yacc.c  */ 
    5468 #line 2290 "compilers/imcc/imcc.y" 
     5469#line 2291 "compilers/imcc/imcc.y" 
    54695470    { 
    54705471            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, 
    54715472                    mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr)); 
     
    54765477  case 287: 
    54775478 
    54785479/* Line 1464 of yacc.c  */ 
    5479 #line 2296 "compilers/imcc/imcc.y" 
     5480#line 2297 "compilers/imcc/imcc.y" 
    54805481    { 
    54815482           (yyval.sr) = 0; 
    54825483           if (IMCC_INFO(interp)->adv_named_id) { 
     
    54915492  case 288: 
    54925493 
    54935494/* Line 1464 of yacc.c  */ 
    5494 #line 2306 "compilers/imcc/imcc.y" 
     5495#line 2307 "compilers/imcc/imcc.y" 
    54955496    { 
    54965497           add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr)); 
    54975498           mem_sys_free((yyvsp[(1) - (3)].s)); 
     
    55015502  case 289: 
    55025503 
    55035504/* Line 1464 of yacc.c  */ 
    5504 #line 2310 "compilers/imcc/imcc.y" 
     5505#line 2311 "compilers/imcc/imcc.y" 
    55055506    { (yyval.sr) = 0; } 
    55065507    break; 
    55075508 
    55085509  case 290: 
    55095510 
    55105511/* Line 1464 of yacc.c  */ 
    5511 #line 2314 "compilers/imcc/imcc.y" 
     5512#line 2315 "compilers/imcc/imcc.y" 
    55125513    { (yyval.i) = (yyvsp[(1) - (1)].i); } 
    55135514    break; 
    55145515 
    55155516  case 291: 
    55165517 
    55175518/* Line 1464 of yacc.c  */ 
    5518 #line 2315 "compilers/imcc/imcc.y" 
     5519#line 2316 "compilers/imcc/imcc.y" 
    55195520    { (yyval.i) = (yyvsp[(1) - (1)].i); } 
    55205521    break; 
    55215522 
    55225523  case 292: 
    55235524 
    55245525/* Line 1464 of yacc.c  */ 
    5525 #line 2320 "compilers/imcc/imcc.y" 
     5526#line 2321 "compilers/imcc/imcc.y" 
    55265527    { 
    55275528           (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); 
    55285529         } 
     
    55315532  case 293: 
    55325533 
    55335534/* Line 1464 of yacc.c  */ 
    5534 #line 2324 "compilers/imcc/imcc.y" 
     5535#line 2325 "compilers/imcc/imcc.y" 
    55355536    { 
    55365537           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); 
    55375538         } 
     
    55405541  case 294: 
    55415542 
    55425543/* Line 1464 of yacc.c  */ 
    5543 #line 2328 "compilers/imcc/imcc.y" 
     5544#line 2329 "compilers/imcc/imcc.y" 
    55445545    { 
    55455546           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); 
    55465547         } 
     
    55495550  case 295: 
    55505551 
    55515552/* Line 1464 of yacc.c  */ 
    5552 #line 2335 "compilers/imcc/imcc.y" 
     5553#line 2336 "compilers/imcc/imcc.y" 
    55535554    { 
    55545555           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); 
    55555556         } 
     
    55585559  case 296: 
    55595560 
    55605561/* Line 1464 of yacc.c  */ 
    5561 #line 2339 "compilers/imcc/imcc.y" 
     5562#line 2340 "compilers/imcc/imcc.y" 
    55625563    { 
    55635564           (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); 
    55645565         } 
     
    55675568  case 297: 
    55685569 
    55695570/* Line 1464 of yacc.c  */ 
    5570 #line 2343 "compilers/imcc/imcc.y" 
     5571#line 2344 "compilers/imcc/imcc.y" 
    55715572    { 
    55725573           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); 
    55735574         } 
     
    55765577  case 298: 
    55775578 
    55785579/* Line 1464 of yacc.c  */ 
    5579 #line 2349 "compilers/imcc/imcc.y" 
     5580#line 2350 "compilers/imcc/imcc.y" 
    55805581    { (yyval.t) = 0; } 
    55815582    break; 
    55825583 
    55835584  case 299: 
    55845585 
    55855586/* Line 1464 of yacc.c  */ 
    5586 #line 2350 "compilers/imcc/imcc.y" 
     5587#line 2351 "compilers/imcc/imcc.y" 
    55875588    { (yyval.t) = 0; } 
    55885589    break; 
    55895590 
    55905591  case 300: 
    55915592 
    55925593/* Line 1464 of yacc.c  */ 
    5593 #line 2354 "compilers/imcc/imcc.y" 
     5594#line 2355 "compilers/imcc/imcc.y" 
    55945595    { (yyval.s) = (char *)"eq"; } 
    55955596    break; 
    55965597 
    55975598  case 301: 
    55985599 
    55995600/* Line 1464 of yacc.c  */ 
    5600 #line 2355 "compilers/imcc/imcc.y" 
     5601#line 2356 "compilers/imcc/imcc.y" 
    56015602    { (yyval.s) = (char *)"ne"; } 
    56025603    break; 
    56035604 
    56045605  case 302: 
    56055606 
    56065607/* Line 1464 of yacc.c  */ 
    5607 #line 2356 "compilers/imcc/imcc.y" 
     5608#line 2357 "compilers/imcc/imcc.y" 
    56085609    { (yyval.s) = (char *)"gt"; } 
    56095610    break; 
    56105611 
    56115612  case 303: 
    56125613 
    56135614/* Line 1464 of yacc.c  */ 
    5614 #line 2357 "compilers/imcc/imcc.y" 
     5615#line 2358 "compilers/imcc/imcc.y" 
    56155616    { (yyval.s) = (char *)"ge"; } 
    56165617    break; 
    56175618 
    56185619  case 304: 
    56195620 
    56205621/* Line 1464 of yacc.c  */ 
    5621 #line 2358 "compilers/imcc/imcc.y" 
     5622#line 2359 "compilers/imcc/imcc.y" 
    56225623    { (yyval.s) = (char *)"lt"; } 
    56235624    break; 
    56245625 
    56255626  case 305: 
    56265627 
    56275628/* Line 1464 of yacc.c  */ 
    5628 #line 2359 "compilers/imcc/imcc.y" 
     5629#line 2360 "compilers/imcc/imcc.y" 
    56295630    { (yyval.s) = (char *)"le"; } 
    56305631    break; 
    56315632 
    56325633  case 308: 
    56335634 
    56345635/* Line 1464 of yacc.c  */ 
    5635 #line 2368 "compilers/imcc/imcc.y" 
     5636#line 2369 "compilers/imcc/imcc.y" 
    56365637    { (yyval.sr) = NULL; } 
    56375638    break; 
    56385639 
    56395640  case 309: 
    56405641 
    56415642/* Line 1464 of yacc.c  */ 
    5642 #line 2369 "compilers/imcc/imcc.y" 
     5643#line 2370 "compilers/imcc/imcc.y" 
    56435644    { (yyval.sr) = (yyvsp[(1) - (1)].sr); } 
    56445645    break; 
    56455646 
    56465647  case 310: 
    56475648 
    56485649/* Line 1464 of yacc.c  */ 
    5649 #line 2373 "compilers/imcc/imcc.y" 
     5650#line 2374 "compilers/imcc/imcc.y" 
    56505651    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; } 
    56515652    break; 
    56525653 
    56535654  case 312: 
    56545655 
    56555656/* Line 1464 of yacc.c  */ 
    5656 #line 2378 "compilers/imcc/imcc.y" 
     5657#line 2379 "compilers/imcc/imcc.y" 
    56575658    { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); } 
    56585659    break; 
    56595660 
    56605661  case 313: 
    56615662 
    56625663/* Line 1464 of yacc.c  */ 
    5663 #line 2380 "compilers/imcc/imcc.y" 
     5664#line 2381 "compilers/imcc/imcc.y" 
    56645665    { 
    56655666           IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr); 
    56665667           IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs); 
     
    56725673  case 314: 
    56735674 
    56745675/* Line 1464 of yacc.c  */ 
    5675 #line 2387 "compilers/imcc/imcc.y" 
     5676#line 2388 "compilers/imcc/imcc.y" 
    56765677    { 
    56775678           IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr); 
    56785679           (yyval.sr) = (yyvsp[(2) - (3)].sr); 
     
    56825683  case 316: 
    56835684 
    56845685/* Line 1464 of yacc.c  */ 
    5685 #line 2394 "compilers/imcc/imcc.y" 
     5686#line 2395 "compilers/imcc/imcc.y" 
    56865687    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    56875688    break; 
    56885689 
    56895690  case 317: 
    56905691 
    56915692/* Line 1464 of yacc.c  */ 
    5692 #line 2395 "compilers/imcc/imcc.y" 
     5693#line 2396 "compilers/imcc/imcc.y" 
    56935694    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); } 
    56945695    break; 
    56955696 
    56965697  case 318: 
    56975698 
    56985699/* Line 1464 of yacc.c  */ 
    5699 #line 2399 "compilers/imcc/imcc.y" 
     5700#line 2400 "compilers/imcc/imcc.y" 
    57005701    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    57015702    break; 
    57025703 
    57035704  case 319: 
    57045705 
    57055706/* Line 1464 of yacc.c  */ 
    5706 #line 2400 "compilers/imcc/imcc.y" 
     5707#line 2401 "compilers/imcc/imcc.y" 
    57075708    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    57085709    break; 
    57095710 
    57105711  case 320: 
    57115712 
    57125713/* Line 1464 of yacc.c  */ 
    5713 #line 2404 "compilers/imcc/imcc.y" 
     5714#line 2405 "compilers/imcc/imcc.y" 
    57145715    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    57155716    break; 
    57165717 
    57175718  case 321: 
    57185719 
    57195720/* Line 1464 of yacc.c  */ 
    5720 #line 2405 "compilers/imcc/imcc.y" 
     5721#line 2406 "compilers/imcc/imcc.y" 
    57215722    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    57225723    break; 
    57235724 
    57245725  case 326: 
    57255726 
    57265727/* Line 1464 of yacc.c  */ 
    5727 #line 2419 "compilers/imcc/imcc.y" 
     5728#line 2420 "compilers/imcc/imcc.y" 
    57285729    { 
    57295730           IMCC_INFO(interp)->nkeys    = 0; 
    57305731         } 
     
    57335734  case 327: 
    57345735 
    57355736/* Line 1464 of yacc.c  */ 
    5736 #line 2423 "compilers/imcc/imcc.y" 
     5737#line 2424 "compilers/imcc/imcc.y" 
    57375738    { 
    57385739           (yyval.sr) = link_keys(interp, 
    57395740                          IMCC_INFO(interp)->nkeys, 
     
    57445745  case 328: 
    57455746 
    57465747/* Line 1464 of yacc.c  */ 
    5747 #line 2431 "compilers/imcc/imcc.y" 
     5748#line 2432 "compilers/imcc/imcc.y" 
    57485749    { 
    57495750           IMCC_INFO(interp)->nkeys = 0; 
    57505751         } 
     
    57535754  case 329: 
    57545755 
    57555756/* Line 1464 of yacc.c  */ 
    5756 #line 2435 "compilers/imcc/imcc.y" 
     5757#line 2436 "compilers/imcc/imcc.y" 
    57575758    { 
    57585759           (yyval.sr) = link_keys(interp, 
    57595760                          IMCC_INFO(interp)->nkeys, 
     
    57645765  case 330: 
    57655766 
    57665767/* Line 1464 of yacc.c  */ 
    5767 #line 2443 "compilers/imcc/imcc.y" 
     5768#line 2444 "compilers/imcc/imcc.y" 
    57685769    { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); } 
    57695770    break; 
    57705771 
    57715772  case 331: 
    57725773 
    57735774/* Line 1464 of yacc.c  */ 
    5774 #line 2445 "compilers/imcc/imcc.y" 
     5775#line 2446 "compilers/imcc/imcc.y" 
    57755776    { 
    57765777           IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr); 
    57775778           (yyval.sr) = IMCC_INFO(interp)->keys[0]; 
     
    57815782  case 332: 
    57825783 
    57835784/* Line 1464 of yacc.c  */ 
    5784 #line 2453 "compilers/imcc/imcc.y" 
     5785#line 2454 "compilers/imcc/imcc.y" 
    57855786    { 
    57865787           (yyval.sr) = (yyvsp[(1) - (1)].sr); 
    57875788         } 
     
    57905791  case 333: 
    57915792 
    57925793/* Line 1464 of yacc.c  */ 
    5793 #line 2459 "compilers/imcc/imcc.y" 
     5794#line 2460 "compilers/imcc/imcc.y" 
    57945795    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); } 
    57955796    break; 
    57965797 
    57975798  case 334: 
    57985799 
    57995800/* Line 1464 of yacc.c  */ 
    5800 #line 2460 "compilers/imcc/imcc.y" 
     5801#line 2461 "compilers/imcc/imcc.y" 
    58015802    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); } 
    58025803    break; 
    58035804 
    58045805  case 335: 
    58055806 
    58065807/* Line 1464 of yacc.c  */ 
    5807 #line 2461 "compilers/imcc/imcc.y" 
     5808#line 2462 "compilers/imcc/imcc.y" 
    58085809    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); } 
    58095810    break; 
    58105811 
    58115812  case 336: 
    58125813 
    58135814/* Line 1464 of yacc.c  */ 
    5814 #line 2462 "compilers/imcc/imcc.y" 
     5815#line 2463 "compilers/imcc/imcc.y" 
    58155816    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); } 
    58165817    break; 
    58175818 
    58185819  case 337: 
    58195820 
    58205821/* Line 1464 of yacc.c  */ 
    5821 #line 2463 "compilers/imcc/imcc.y" 
     5822#line 2464 "compilers/imcc/imcc.y" 
    58225823    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    58235824    break; 
    58245825 
    58255826  case 338: 
    58265827 
    58275828/* Line 1464 of yacc.c  */ 
    5828 #line 2467 "compilers/imcc/imcc.y" 
     5829#line 2468 "compilers/imcc/imcc.y" 
    58295830    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    58305831    break; 
    58315832 
    58325833  case 339: 
    58335834 
    58345835/* Line 1464 of yacc.c  */ 
    5835 #line 2468 "compilers/imcc/imcc.y" 
     5836#line 2469 "compilers/imcc/imcc.y" 
    58365837    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    58375838    break; 
    58385839 
    58395840  case 340: 
    58405841 
    58415842/* Line 1464 of yacc.c  */ 
    5842 #line 2472 "compilers/imcc/imcc.y" 
     5843#line 2473 "compilers/imcc/imcc.y" 
    58435844    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    58445845    break; 
    58455846 
    58465847  case 341: 
    58475848 
    58485849/* Line 1464 of yacc.c  */ 
    5849 #line 2473 "compilers/imcc/imcc.y" 
     5850#line 2474 "compilers/imcc/imcc.y" 
    58505851    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); } 
    58515852    break; 
    58525853 
    58535854  case 342: 
    58545855 
    58555856/* Line 1464 of yacc.c  */ 
    5856 #line 2474 "compilers/imcc/imcc.y" 
     5857#line 2475 "compilers/imcc/imcc.y" 
    58575858    { (yyval.sr) = (yyvsp[(1) - (1)].sr); } 
    58585859    break; 
    58595860 
    58605861 
    58615862 
    58625863/* Line 1464 of yacc.c  */ 
    5863 #line 5853 "compilers/imcc/imcparser.c" 
     5864#line 5854 "compilers/imcc/imcparser.c" 
    58645865      default: break; 
    58655866    } 
    58665867  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 
     
    60726073 
    60736074 
    60746075/* Line 1684 of yacc.c  */ 
    6075 #line 2480 "compilers/imcc/imcc.y" 
     6076#line 2481 "compilers/imcc/imcc.y" 
    60766077 
    60776078 
    60786079/* I need this prototype somewhere... */ 
     
    60916092     * outside the bison buffer, and thus, not "accessible" by 
    60926093     * us. This means it may segfault. */ 
    60936094    const char * const chr = yyget_text((yyscan_t)yyscanner); 
     6095    PMC        * err_msgs  = IMCC_INFO(interp)->error_messages; 
    60946096 
    6095     /* IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, s); */ 
    6096     /* --- This was called before, not sure if I should call some 
    6097            similar function that does not die like this one. */ 
     6097    IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; 
    60986098 
    6099     /* Basically, if current token is a newline, it mean the error was 
    6100      * before the newline, and thus, line is the line *after* the 
    6101      * error. Instead of duplicating code for both cases (the 'newline' and 
    6102      * non-newline case, do the test twice; efficiency is not important when 
    6103      * we have an error anyway. */ 
    6104     if (!at_eof(yyscanner)) { 
    6105         IMCC_warning(interp, "error:imcc:%s", s); 
     6099    /* don't bother printing the current token if it is either a newline or EOF */ 
     6100    VTABLE_push_string(interp, err_msgs, 
     6101                        at_eof(yyscanner) || *chr == '\n' ? 
     6102                            Parrot_str_new(interp, s, 0) : 
     6103                            Parrot_sprintf_c(interp, "%s ('%s')", s, chr)); 
     6104    VTABLE_push_string(interp, err_msgs, IMCC_inc_str(interp)); 
    61066105 
    6107         /* don't print the current token if it is a newline */ 
    6108         if (*chr != '\n') 
    6109             IMCC_warning(interp, " ('%s')", chr); 
    6110  
    6111         IMCC_print_inc(interp); 
    6112     } 
    6113  
    6114     /* scanner is at EOF; just to be sure, don't print "current" token */ 
    6115     else { 
    6116         IMCC_warning(interp, "error:imcc:%s", s); 
    6117         IMCC_print_inc(interp); 
    6118     } 
    6119  
    61206106    return 0; 
    61216107} 
    61226108 
  • compilers/imcc/debug.c

     
    4646{ 
    4747    ASSERT_ARGS(IMCC_fatal) 
    4848    va_list ap; 
     49    STRING *msg; 
    4950 
    5051    va_start(ap, fmt); 
    51     IMCC_INFO(interp)->error_message = Parrot_vsprintf_c(interp, fmt, ap); 
     52    msg = Parrot_vsprintf_c(interp, fmt, ap); 
    5253    va_end(ap); 
     54 
     55    VTABLE_push_string(interp, IMCC_INFO(interp)->error_messages, msg); 
    5356    IMCC_THROW(IMCC_INFO(interp)->jump_buf, IMCC_FATAL_EXCEPTION); 
    5457} 
    5558 
     
    7073{ 
    7174    ASSERT_ARGS(IMCC_fataly) 
    7275    va_list ap; 
     76    STRING *msg; 
    7377 
    7478    va_start(ap, fmt); 
    75     IMCC_INFO(interp)->error_message = Parrot_vsprintf_c(interp, fmt, ap); 
     79    msg = Parrot_vsprintf_c(interp, fmt, ap); 
    7680    va_end(ap); 
     81 
     82    VTABLE_push_string(interp, IMCC_INFO(interp)->error_messages, msg); 
    7783    IMCC_THROW(IMCC_INFO(interp)->jump_buf, IMCC_FATALY_EXCEPTION); 
    7884} 
    7985 
  • compilers/imcc/parser_util.c

     
    630630    } 
    631631    else { 
    632632        PackFile_Segment_destroy(interp, (PackFile_Segment *)new_cs); 
    633         *error_message = IMCC_INFO(interp)->error_message; 
     633        *error_message = Parrot_str_join(interp, 
     634                            string_from_literal(interp, "\n"), 
     635                            IMCC_INFO(interp)->error_messages); 
    634636    } 
    635637 
    636638    if (imc_info) { 
     
    892894    if (!IMCC_INFO(interp)->error_code) 
    893895        cs = interp->code; 
    894896    else 
    895         *error_message = IMCC_INFO(interp)->error_message; 
     897        *error_message = Parrot_str_join(interp, 
     898                            string_from_literal(interp, "\n"), 
     899                            IMCC_INFO(interp)->error_messages); 
    896900 
    897901    if (cs_save) 
    898902        (void)Parrot_switch_to_cs(interp, cs_save, 0); 
  • compilers/imcc/imcparser.h

     
    295295{ 
    296296 
    297297/* Line 1685 of yacc.c  */ 
    298 #line 1068 "compilers/imcc/imcc.y" 
     298#line 1069 "compilers/imcc/imcc.y" 
    299299 
    300300    IdList * idlist; 
    301301    int t;