diff --git a/compilers/imcc/imcc.y b/compilers/imcc/imcc.y index 5130ee8b6e..644684cebc 100644 --- a/compilers/imcc/imcc.y +++ b/compilers/imcc/imcc.y @@ -1612,8 +1612,22 @@ sub_proto_list: ; proto: - LOAD { $$ = P_LOAD; } - | INIT { $$ = P_INIT; } + LOAD { + $$ = P_LOAD; + /* + SymReg * const r = mk_const(imcc, "load", 'S'); + add_pcc_flag_str(imcc, imcc->cur_call, r); + $$ = r; + */ + } + | INIT { + $$ = P_INIT; + /* + SymReg * const r = mk_const(imcc, "load", 'S'); + add_pcc_flag_str(imcc, imcc->cur_call, r); + $$ = r; + */ + } | MAIN { $$ = P_MAIN; } | IMMEDIATE { $$ = P_IMMEDIATE; } | POSTCOMP { $$ = P_POSTCOMP; } diff --git a/compilers/imcc/imcparser.c b/compilers/imcc/imcparser.c index aac076f803..e0456d3a39 100644 --- a/compilers/imcc/imcparser.c +++ b/compilers/imcc/imcparser.c @@ -1826,31 +1826,31 @@ static const yytype_uint16 yyrline[] = 1382, 1407, 1412, 1415, 1420, 1428, 1429, 1430, 1431, 1432, 1443, 1454, 1459, 1462, 1469, 1480, 1486, 1495, 1501, 1510, 1516, 1525, 1531, 1540, 1548, 1553, 1563, 1565, 1570, 1569, - 1595, 1596, 1600, 1601, 1605, 1606, 1610, 1611, 1615, 1616, - 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, - 1627, 1628, 1629, 1633, 1638, 1645, 1646, 1659, 1664, 1665, - 1673, 1674, 1674, 1686, 1687, 1691, 1692, 1693, 1694, 1695, - 1696, 1697, 1702, 1702, 1705, 1713, 1713, 1719, 1720, 1725, - 1733, 1734, 1739, 1747, 1751, 1756, 1755, 1768, 1769, 1773, - 1774, 1784, 1789, 1799, 1808, 1809, 1821, 1825, 1826, 1828, - 1829, 1830, 1831, 1832, 1836, 1837, 1841, 1842, 1846, 1858, - 1859, 1870, 1877, 1886, 1895, 1896, 1897, 1897, 1910, 1920, - 1926, 1926, 1933, 1934, 1934, 1940, 1946, 1950, 1956, 1957, - 1958, 1959, 1960, 1961, 1965, 1966, 1967, 1968, 1972, 1974, - 1976, 1978, 1980, 1983, 1990, 1989, 1998, 1999, 2000, 2001, - 2009, 2010, 2011, 2015, 2016, 2017, 2018, 2019, 2020, 2021, - 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, - 2032, 2033, 2034, 2035, 2036, 2037, 2043, 2042, 2054, 2056, - 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, - 2076, 2077, 2082, 2091, 2092, 2093, 2094, 2100, 2114, 2120, - 2126, 2136, 2135, 2144, 2145, 2155, 2165, 2171, 2176, 2186, - 2190, 2191, 2195, 2196, 2197, 2199, 2205, 2214, 2218, 2228, - 2234, 2244, 2249, 2253, 2254, 2258, 2262, 2266, 2273, 2277, - 2281, 2288, 2289, 2293, 2294, 2295, 2296, 2297, 2298, 2302, - 2303, 2307, 2308, 2312, 2313, 2317, 2318, 2325, 2332, 2333, - 2334, 2338, 2339, 2343, 2344, 2348, 2349, 2353, 2354, 2358, - 2358, 2368, 2368, 2380, 2381, 2389, 2396, 2397, 2398, 2399, - 2400, 2404, 2405, 2409, 2410, 2411 + 1595, 1596, 1600, 1601, 1605, 1606, 1610, 1611, 1615, 1623, + 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, + 1641, 1642, 1643, 1647, 1652, 1659, 1660, 1673, 1678, 1679, + 1687, 1688, 1688, 1700, 1701, 1705, 1706, 1707, 1708, 1709, + 1710, 1711, 1716, 1716, 1719, 1727, 1727, 1733, 1734, 1739, + 1747, 1748, 1753, 1761, 1765, 1770, 1769, 1782, 1783, 1787, + 1788, 1798, 1803, 1813, 1822, 1823, 1835, 1839, 1840, 1842, + 1843, 1844, 1845, 1846, 1850, 1851, 1855, 1856, 1860, 1872, + 1873, 1884, 1891, 1900, 1909, 1910, 1911, 1911, 1924, 1934, + 1940, 1940, 1947, 1948, 1948, 1954, 1960, 1964, 1970, 1971, + 1972, 1973, 1974, 1975, 1979, 1980, 1981, 1982, 1986, 1988, + 1990, 1992, 1994, 1997, 2004, 2003, 2012, 2013, 2014, 2015, + 2023, 2024, 2025, 2029, 2030, 2031, 2032, 2033, 2034, 2035, + 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, + 2046, 2047, 2048, 2049, 2050, 2051, 2057, 2056, 2068, 2070, + 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, + 2090, 2091, 2096, 2105, 2106, 2107, 2108, 2114, 2128, 2134, + 2140, 2150, 2149, 2158, 2159, 2169, 2179, 2185, 2190, 2200, + 2204, 2205, 2209, 2210, 2211, 2213, 2219, 2228, 2232, 2242, + 2248, 2258, 2263, 2267, 2268, 2272, 2276, 2280, 2287, 2291, + 2295, 2302, 2303, 2307, 2308, 2309, 2310, 2311, 2312, 2316, + 2317, 2321, 2322, 2326, 2327, 2331, 2332, 2339, 2346, 2347, + 2348, 2352, 2353, 2357, 2358, 2362, 2363, 2367, 2368, 2372, + 2372, 2382, 2382, 2394, 2395, 2403, 2410, 2411, 2412, 2413, + 2414, 2418, 2419, 2423, 2424, 2425 }; #endif @@ -4002,55 +4002,69 @@ YYSTYPE yylval; /* Line 1455 of yacc.c */ #line 1615 "compilers/imcc/imcc.y" - { (yyval.t) = P_LOAD; } + { + (yyval.t) = P_LOAD; + /* + SymReg * const r = mk_const(imcc, "load", 'S'); + add_pcc_flag_str(imcc, imcc->cur_call, r); + $$ = r; + */ + } break; case 99: /* Line 1455 of yacc.c */ -#line 1616 "compilers/imcc/imcc.y" - { (yyval.t) = P_INIT; } +#line 1623 "compilers/imcc/imcc.y" + { + (yyval.t) = P_INIT; + /* + SymReg * const r = mk_const(imcc, "load", 'S'); + add_pcc_flag_str(imcc, imcc->cur_call, r); + $$ = r; + */ + } break; case 100: /* Line 1455 of yacc.c */ -#line 1617 "compilers/imcc/imcc.y" +#line 1631 "compilers/imcc/imcc.y" { (yyval.t) = P_MAIN; } break; case 101: /* Line 1455 of yacc.c */ -#line 1618 "compilers/imcc/imcc.y" +#line 1632 "compilers/imcc/imcc.y" { (yyval.t) = P_IMMEDIATE; } break; case 102: /* Line 1455 of yacc.c */ -#line 1619 "compilers/imcc/imcc.y" +#line 1633 "compilers/imcc/imcc.y" { (yyval.t) = P_POSTCOMP; } break; case 103: /* Line 1455 of yacc.c */ -#line 1620 "compilers/imcc/imcc.y" +#line 1634 "compilers/imcc/imcc.y" { (yyval.t) = P_ANON; } break; case 104: /* Line 1455 of yacc.c */ -#line 1621 "compilers/imcc/imcc.y" +#line 1635 "compilers/imcc/imcc.y" { (yyval.t) = P_NEED_LEX; } break; case 113: /* Line 1455 of yacc.c */ -#line 1634 "compilers/imcc/imcc.y" +#line 1648 "compilers/imcc/imcc.y" { add_pcc_sub(imcc->cur_call, (yyvsp[(2) - (5)].sr)); add_pcc_cc(imcc->cur_call, (yyvsp[(4) - (5)].sr)); @@ -4060,7 +4074,7 @@ YYSTYPE yylval; case 114: /* Line 1455 of yacc.c */ -#line 1639 "compilers/imcc/imcc.y" +#line 1653 "compilers/imcc/imcc.y" { add_pcc_sub(imcc->cur_call, (yyvsp[(2) - (3)].sr)); } @@ -4069,14 +4083,14 @@ YYSTYPE yylval; case 115: /* Line 1455 of yacc.c */ -#line 1645 "compilers/imcc/imcc.y" +#line 1659 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 116: /* Line 1455 of yacc.c */ -#line 1647 "compilers/imcc/imcc.y" +#line 1661 "compilers/imcc/imcc.y" { if (imcc->adv_named_id) { add_pcc_named_param(imcc, imcc->cur_call, @@ -4091,21 +4105,21 @@ YYSTYPE yylval; case 117: /* Line 1455 of yacc.c */ -#line 1659 "compilers/imcc/imcc.y" +#line 1673 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (2)].sr); } break; case 118: /* Line 1455 of yacc.c */ -#line 1664 "compilers/imcc/imcc.y" +#line 1678 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 119: /* Line 1455 of yacc.c */ -#line 1666 "compilers/imcc/imcc.y" +#line 1680 "compilers/imcc/imcc.y" { if ((yyvsp[(2) - (3)].sr)) add_pcc_result(imcc, imcc->cur_call, (yyvsp[(2) - (3)].sr)); @@ -4115,21 +4129,21 @@ YYSTYPE yylval; case 120: /* Line 1455 of yacc.c */ -#line 1673 "compilers/imcc/imcc.y" +#line 1687 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } break; case 121: /* Line 1455 of yacc.c */ -#line 1674 "compilers/imcc/imcc.y" +#line 1688 "compilers/imcc/imcc.y" { imcc->is_def = 1; } break; case 122: /* Line 1455 of yacc.c */ -#line 1675 "compilers/imcc/imcc.y" +#line 1689 "compilers/imcc/imcc.y" { IdList * const l = (yyvsp[(4) - (4)].idlist); SymReg *ignored; @@ -4143,84 +4157,84 @@ YYSTYPE yylval; case 123: /* Line 1455 of yacc.c */ -#line 1686 "compilers/imcc/imcc.y" +#line 1700 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 124: /* Line 1455 of yacc.c */ -#line 1687 "compilers/imcc/imcc.y" +#line 1701 "compilers/imcc/imcc.y" { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } break; case 125: /* Line 1455 of yacc.c */ -#line 1691 "compilers/imcc/imcc.y" +#line 1705 "compilers/imcc/imcc.y" { (yyval.t) = VT_FLAT; } break; case 126: /* Line 1455 of yacc.c */ -#line 1692 "compilers/imcc/imcc.y" +#line 1706 "compilers/imcc/imcc.y" { (yyval.t) = VT_OPTIONAL; } break; case 127: /* Line 1455 of yacc.c */ -#line 1693 "compilers/imcc/imcc.y" +#line 1707 "compilers/imcc/imcc.y" { (yyval.t) = VT_OPT_FLAG; } break; case 128: /* Line 1455 of yacc.c */ -#line 1694 "compilers/imcc/imcc.y" +#line 1708 "compilers/imcc/imcc.y" { (yyval.t) = VT_NAMED; } break; case 129: /* Line 1455 of yacc.c */ -#line 1695 "compilers/imcc/imcc.y" +#line 1709 "compilers/imcc/imcc.y" { adv_named_set(imcc, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); } break; case 130: /* Line 1455 of yacc.c */ -#line 1696 "compilers/imcc/imcc.y" +#line 1710 "compilers/imcc/imcc.y" { adv_named_set_u(imcc, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); } break; case 131: /* Line 1455 of yacc.c */ -#line 1697 "compilers/imcc/imcc.y" +#line 1711 "compilers/imcc/imcc.y" { (yyval.t) = VT_CALL_SIG; } break; case 132: /* Line 1455 of yacc.c */ -#line 1702 "compilers/imcc/imcc.y" +#line 1716 "compilers/imcc/imcc.y" { begin_return_or_yield(imcc, 0); } break; case 133: /* Line 1455 of yacc.c */ -#line 1704 "compilers/imcc/imcc.y" +#line 1718 "compilers/imcc/imcc.y" { (yyval.i) = 0; imcc->asm_state = AsmDefault; } break; case 134: /* Line 1455 of yacc.c */ -#line 1706 "compilers/imcc/imcc.y" +#line 1720 "compilers/imcc/imcc.y" { imcc->asm_state = AsmDefault; (yyval.i) = 0; @@ -4230,28 +4244,28 @@ YYSTYPE yylval; case 135: /* Line 1455 of yacc.c */ -#line 1713 "compilers/imcc/imcc.y" +#line 1727 "compilers/imcc/imcc.y" { begin_return_or_yield(imcc, 1); } break; case 136: /* Line 1455 of yacc.c */ -#line 1715 "compilers/imcc/imcc.y" +#line 1729 "compilers/imcc/imcc.y" { (yyval.i) = 0; imcc->asm_state = AsmDefault; } break; case 137: /* Line 1455 of yacc.c */ -#line 1719 "compilers/imcc/imcc.y" +#line 1733 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 138: /* Line 1455 of yacc.c */ -#line 1721 "compilers/imcc/imcc.y" +#line 1735 "compilers/imcc/imcc.y" { if ((yyvsp[(1) - (2)].sr)) add_pcc_result(imcc, imcc->sr_return, (yyvsp[(1) - (2)].sr)); @@ -4261,7 +4275,7 @@ YYSTYPE yylval; case 139: /* Line 1455 of yacc.c */ -#line 1726 "compilers/imcc/imcc.y" +#line 1740 "compilers/imcc/imcc.y" { if ((yyvsp[(2) - (3)].sr)) add_pcc_result(imcc, imcc->sr_return, (yyvsp[(2) - (3)].sr)); @@ -4271,14 +4285,14 @@ YYSTYPE yylval; case 140: /* Line 1455 of yacc.c */ -#line 1733 "compilers/imcc/imcc.y" +#line 1747 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 141: /* Line 1455 of yacc.c */ -#line 1735 "compilers/imcc/imcc.y" +#line 1749 "compilers/imcc/imcc.y" { if ((yyvsp[(1) - (2)].sr)) add_pcc_result(imcc, imcc->sr_return, (yyvsp[(1) - (2)].sr)); @@ -4288,7 +4302,7 @@ YYSTYPE yylval; case 142: /* Line 1455 of yacc.c */ -#line 1740 "compilers/imcc/imcc.y" +#line 1754 "compilers/imcc/imcc.y" { if ((yyvsp[(2) - (3)].sr)) add_pcc_result(imcc, imcc->sr_return, (yyvsp[(2) - (3)].sr)); @@ -4298,21 +4312,21 @@ YYSTYPE yylval; case 143: /* Line 1455 of yacc.c */ -#line 1747 "compilers/imcc/imcc.y" +#line 1761 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } break; case 144: /* Line 1455 of yacc.c */ -#line 1751 "compilers/imcc/imcc.y" +#line 1765 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } break; case 145: /* Line 1455 of yacc.c */ -#line 1756 "compilers/imcc/imcc.y" +#line 1770 "compilers/imcc/imcc.y" { if (imcc->asm_state == AsmDefault) begin_return_or_yield(imcc, (yyvsp[(1) - (2)].t)); @@ -4322,7 +4336,7 @@ YYSTYPE yylval; case 146: /* Line 1455 of yacc.c */ -#line 1761 "compilers/imcc/imcc.y" +#line 1775 "compilers/imcc/imcc.y" { imcc->asm_state = AsmDefault; (yyval.t) = 0; @@ -4332,28 +4346,28 @@ YYSTYPE yylval; case 147: /* Line 1455 of yacc.c */ -#line 1768 "compilers/imcc/imcc.y" +#line 1782 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 148: /* Line 1455 of yacc.c */ -#line 1769 "compilers/imcc/imcc.y" +#line 1783 "compilers/imcc/imcc.y" { (yyval.t) = 1; } break; case 149: /* Line 1455 of yacc.c */ -#line 1773 "compilers/imcc/imcc.y" +#line 1787 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 150: /* Line 1455 of yacc.c */ -#line 1775 "compilers/imcc/imcc.y" +#line 1789 "compilers/imcc/imcc.y" { if (imcc->adv_named_id) { add_pcc_named_return(imcc, imcc->sr_return, @@ -4368,7 +4382,7 @@ YYSTYPE yylval; case 151: /* Line 1455 of yacc.c */ -#line 1785 "compilers/imcc/imcc.y" +#line 1799 "compilers/imcc/imcc.y" { SymReg * const name = mk_const(imcc, (yyvsp[(1) - (3)].s), 'S'); add_pcc_named_return(imcc, imcc->sr_return, name, (yyvsp[(3) - (3)].sr)); @@ -4378,7 +4392,7 @@ YYSTYPE yylval; case 152: /* Line 1455 of yacc.c */ -#line 1790 "compilers/imcc/imcc.y" +#line 1804 "compilers/imcc/imcc.y" { if (imcc->adv_named_id) { add_pcc_named_return(imcc, imcc->sr_return, @@ -4393,7 +4407,7 @@ YYSTYPE yylval; case 153: /* Line 1455 of yacc.c */ -#line 1800 "compilers/imcc/imcc.y" +#line 1814 "compilers/imcc/imcc.y" { SymReg * const name = mk_const(imcc, (yyvsp[(3) - (5)].s), 'S'); add_pcc_named_return(imcc, imcc->sr_return, name, (yyvsp[(5) - (5)].sr)); @@ -4403,70 +4417,70 @@ YYSTYPE yylval; case 156: /* Line 1455 of yacc.c */ -#line 1821 "compilers/imcc/imcc.y" +#line 1835 "compilers/imcc/imcc.y" { clear_state(imcc); } break; case 157: /* Line 1455 of yacc.c */ -#line 1825 "compilers/imcc/imcc.y" +#line 1839 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 158: /* Line 1455 of yacc.c */ -#line 1827 "compilers/imcc/imcc.y" +#line 1841 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(2) - (2)].i); } break; case 159: /* Line 1455 of yacc.c */ -#line 1828 "compilers/imcc/imcc.y" +#line 1842 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 160: /* Line 1455 of yacc.c */ -#line 1829 "compilers/imcc/imcc.y" +#line 1843 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 161: /* Line 1455 of yacc.c */ -#line 1830 "compilers/imcc/imcc.y" +#line 1844 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 162: /* Line 1455 of yacc.c */ -#line 1831 "compilers/imcc/imcc.y" +#line 1845 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 163: /* Line 1455 of yacc.c */ -#line 1832 "compilers/imcc/imcc.y" +#line 1846 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 164: /* Line 1455 of yacc.c */ -#line 1836 "compilers/imcc/imcc.y" +#line 1850 "compilers/imcc/imcc.y" { (yyval.i) = NULL; } break; case 168: /* Line 1455 of yacc.c */ -#line 1847 "compilers/imcc/imcc.y" +#line 1861 "compilers/imcc/imcc.y" { Instruction * const i = iLABEL(imcc, imcc->cur_unit, mk_local_label(imcc, (yyvsp[(1) - (1)].s))); @@ -4478,14 +4492,14 @@ YYSTYPE yylval; case 169: /* Line 1455 of yacc.c */ -#line 1858 "compilers/imcc/imcc.y" +#line 1872 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(2) - (3)].i); } break; case 170: /* Line 1455 of yacc.c */ -#line 1860 "compilers/imcc/imcc.y" +#line 1874 "compilers/imcc/imcc.y" { if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) { IMCC_warning(imcc, "Too many errors. Correct some first.\n"); @@ -4498,7 +4512,7 @@ YYSTYPE yylval; case 171: /* Line 1455 of yacc.c */ -#line 1871 "compilers/imcc/imcc.y" +#line 1885 "compilers/imcc/imcc.y" { IdList* const l = (yyvsp[(1) - (1)].idlist); l->next = NULL; @@ -4509,7 +4523,7 @@ YYSTYPE yylval; case 172: /* Line 1455 of yacc.c */ -#line 1878 "compilers/imcc/imcc.y" +#line 1892 "compilers/imcc/imcc.y" { IdList* const l = (yyvsp[(3) - (3)].idlist); l->next = (yyvsp[(1) - (3)].idlist); @@ -4520,7 +4534,7 @@ YYSTYPE yylval; case 173: /* Line 1455 of yacc.c */ -#line 1887 "compilers/imcc/imcc.y" +#line 1901 "compilers/imcc/imcc.y" { IdList* const l = mem_gc_allocate_n_zeroed_typed(imcc->interp, 1, IdList); l->id = (yyvsp[(1) - (1)].s); @@ -4531,14 +4545,14 @@ YYSTYPE yylval; case 176: /* Line 1455 of yacc.c */ -#line 1897 "compilers/imcc/imcc.y" +#line 1911 "compilers/imcc/imcc.y" { imcc->is_def = 1; } break; case 177: /* Line 1455 of yacc.c */ -#line 1898 "compilers/imcc/imcc.y" +#line 1912 "compilers/imcc/imcc.y" { IdList *l = (yyvsp[(4) - (4)].idlist); while (l) { @@ -4556,7 +4570,7 @@ YYSTYPE yylval; case 178: /* Line 1455 of yacc.c */ -#line 1911 "compilers/imcc/imcc.y" +#line 1925 "compilers/imcc/imcc.y" { SymReg *n; char *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1); @@ -4571,7 +4585,7 @@ YYSTYPE yylval; case 179: /* Line 1455 of yacc.c */ -#line 1921 "compilers/imcc/imcc.y" +#line 1935 "compilers/imcc/imcc.y" { SymReg *n = mk_const(imcc, (yyvsp[(2) - (4)].s), 'U'); set_lexical(imcc, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0; @@ -4582,14 +4596,14 @@ YYSTYPE yylval; case 180: /* Line 1455 of yacc.c */ -#line 1926 "compilers/imcc/imcc.y" +#line 1940 "compilers/imcc/imcc.y" { imcc->is_def = 1; } break; case 181: /* Line 1455 of yacc.c */ -#line 1927 "compilers/imcc/imcc.y" +#line 1941 "compilers/imcc/imcc.y" { mk_const_ident(imcc, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0); imcc->is_def = 0; @@ -4600,14 +4614,14 @@ YYSTYPE yylval; case 183: /* Line 1455 of yacc.c */ -#line 1934 "compilers/imcc/imcc.y" +#line 1948 "compilers/imcc/imcc.y" { imcc->is_def = 1; } break; case 184: /* Line 1455 of yacc.c */ -#line 1935 "compilers/imcc/imcc.y" +#line 1949 "compilers/imcc/imcc.y" { mk_const_ident(imcc, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); imcc->is_def = 0; @@ -4618,7 +4632,7 @@ YYSTYPE yylval; case 185: /* Line 1455 of yacc.c */ -#line 1941 "compilers/imcc/imcc.y" +#line 1955 "compilers/imcc/imcc.y" { (yyval.i) = NULL; imcc->cur_call->pcc_sub->tailcall = 1; @@ -4629,7 +4643,7 @@ YYSTYPE yylval; case 186: /* Line 1455 of yacc.c */ -#line 1947 "compilers/imcc/imcc.y" +#line 1961 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); } @@ -4638,7 +4652,7 @@ YYSTYPE yylval; case 187: /* Line 1455 of yacc.c */ -#line 1951 "compilers/imcc/imcc.y" +#line 1965 "compilers/imcc/imcc.y" { (yyval.i) = INS(imcc, imcc->cur_unit, (yyvsp[(1) - (2)].s), 0, imcc->regs, imcc->nargs, imcc->keyvec, 1); @@ -4649,98 +4663,98 @@ YYSTYPE yylval; case 188: /* Line 1455 of yacc.c */ -#line 1956 "compilers/imcc/imcc.y" +#line 1970 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); } break; case 189: /* Line 1455 of yacc.c */ -#line 1957 "compilers/imcc/imcc.y" +#line 1971 "compilers/imcc/imcc.y" { (yyval.i) = 0; imcc->cur_call = NULL; } break; case 190: /* Line 1455 of yacc.c */ -#line 1958 "compilers/imcc/imcc.y" +#line 1972 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 193: /* Line 1455 of yacc.c */ -#line 1961 "compilers/imcc/imcc.y" +#line 1975 "compilers/imcc/imcc.y" { (yyval.i) = 0;} break; case 194: /* Line 1455 of yacc.c */ -#line 1965 "compilers/imcc/imcc.y" +#line 1979 "compilers/imcc/imcc.y" {(yyval.t) = 'I'; } break; case 195: /* Line 1455 of yacc.c */ -#line 1966 "compilers/imcc/imcc.y" +#line 1980 "compilers/imcc/imcc.y" { (yyval.t) = 'N'; } break; case 196: /* Line 1455 of yacc.c */ -#line 1967 "compilers/imcc/imcc.y" +#line 1981 "compilers/imcc/imcc.y" { (yyval.t) = 'S'; } break; case 197: /* Line 1455 of yacc.c */ -#line 1968 "compilers/imcc/imcc.y" +#line 1982 "compilers/imcc/imcc.y" { (yyval.t) = 'P'; } break; case 198: /* Line 1455 of yacc.c */ -#line 1973 "compilers/imcc/imcc.y" +#line 1987 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); } break; case 199: /* Line 1455 of yacc.c */ -#line 1975 "compilers/imcc/imcc.y" +#line 1989 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); } break; case 200: /* Line 1455 of yacc.c */ -#line 1977 "compilers/imcc/imcc.y" +#line 1991 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } break; case 201: /* Line 1455 of yacc.c */ -#line 1979 "compilers/imcc/imcc.y" +#line 1993 "compilers/imcc/imcc.y" { (yyval.i) = iINDEXFETCH(imcc, imcc->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); } break; case 202: /* Line 1455 of yacc.c */ -#line 1981 "compilers/imcc/imcc.y" +#line 1995 "compilers/imcc/imcc.y" { (yyval.i) = iINDEXSET(imcc, imcc->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); } break; case 203: /* Line 1455 of yacc.c */ -#line 1984 "compilers/imcc/imcc.y" +#line 1998 "compilers/imcc/imcc.y" { add_pcc_result(imcc, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr)); imcc->cur_call = NULL; @@ -4751,7 +4765,7 @@ YYSTYPE yylval; case 204: /* Line 1455 of yacc.c */ -#line 1990 "compilers/imcc/imcc.y" +#line 2004 "compilers/imcc/imcc.y" { (yyval.i) = IMCC_create_itcall_label(imcc); } @@ -4760,7 +4774,7 @@ YYSTYPE yylval; case 205: /* Line 1455 of yacc.c */ -#line 1994 "compilers/imcc/imcc.y" +#line 2008 "compilers/imcc/imcc.y" { IMCC_itcall_sub(imcc, (yyvsp[(6) - (9)].sr)); imcc->cur_call = NULL; @@ -4770,7 +4784,7 @@ YYSTYPE yylval; case 209: /* Line 1455 of yacc.c */ -#line 2002 "compilers/imcc/imcc.y" +#line 2016 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr)); } @@ -4779,189 +4793,189 @@ YYSTYPE yylval; case 210: /* Line 1455 of yacc.c */ -#line 2009 "compilers/imcc/imcc.y" +#line 2023 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"not"; } break; case 211: /* Line 1455 of yacc.c */ -#line 2010 "compilers/imcc/imcc.y" +#line 2024 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bnot"; } break; case 212: /* Line 1455 of yacc.c */ -#line 2011 "compilers/imcc/imcc.y" +#line 2025 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"neg"; } break; case 213: /* Line 1455 of yacc.c */ -#line 2015 "compilers/imcc/imcc.y" +#line 2029 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"sub"; } break; case 214: /* Line 1455 of yacc.c */ -#line 2016 "compilers/imcc/imcc.y" +#line 2030 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"add"; } break; case 215: /* Line 1455 of yacc.c */ -#line 2017 "compilers/imcc/imcc.y" +#line 2031 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mul"; } break; case 216: /* Line 1455 of yacc.c */ -#line 2018 "compilers/imcc/imcc.y" +#line 2032 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"div"; } break; case 217: /* Line 1455 of yacc.c */ -#line 2019 "compilers/imcc/imcc.y" +#line 2033 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mod"; } break; case 218: /* Line 1455 of yacc.c */ -#line 2020 "compilers/imcc/imcc.y" +#line 2034 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"fdiv"; } break; case 219: /* Line 1455 of yacc.c */ -#line 2021 "compilers/imcc/imcc.y" +#line 2035 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"pow"; } break; case 220: /* Line 1455 of yacc.c */ -#line 2022 "compilers/imcc/imcc.y" +#line 2036 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"concat"; } break; case 221: /* Line 1455 of yacc.c */ -#line 2023 "compilers/imcc/imcc.y" +#line 2037 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"iseq"; } break; case 222: /* Line 1455 of yacc.c */ -#line 2024 "compilers/imcc/imcc.y" +#line 2038 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isne"; } break; case 223: /* Line 1455 of yacc.c */ -#line 2025 "compilers/imcc/imcc.y" +#line 2039 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isgt"; } break; case 224: /* Line 1455 of yacc.c */ -#line 2026 "compilers/imcc/imcc.y" +#line 2040 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isge"; } break; case 225: /* Line 1455 of yacc.c */ -#line 2027 "compilers/imcc/imcc.y" +#line 2041 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"islt"; } break; case 226: /* Line 1455 of yacc.c */ -#line 2028 "compilers/imcc/imcc.y" +#line 2042 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isle"; } break; case 227: /* Line 1455 of yacc.c */ -#line 2029 "compilers/imcc/imcc.y" +#line 2043 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shl"; } break; case 228: /* Line 1455 of yacc.c */ -#line 2030 "compilers/imcc/imcc.y" +#line 2044 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shr"; } break; case 229: /* Line 1455 of yacc.c */ -#line 2031 "compilers/imcc/imcc.y" +#line 2045 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"lsr"; } break; case 230: /* Line 1455 of yacc.c */ -#line 2032 "compilers/imcc/imcc.y" +#line 2046 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"and"; } break; case 231: /* Line 1455 of yacc.c */ -#line 2033 "compilers/imcc/imcc.y" +#line 2047 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"or"; } break; case 232: /* Line 1455 of yacc.c */ -#line 2034 "compilers/imcc/imcc.y" +#line 2048 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"xor"; } break; case 233: /* Line 1455 of yacc.c */ -#line 2035 "compilers/imcc/imcc.y" +#line 2049 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"band"; } break; case 234: /* Line 1455 of yacc.c */ -#line 2036 "compilers/imcc/imcc.y" +#line 2050 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bor"; } break; case 235: /* Line 1455 of yacc.c */ -#line 2037 "compilers/imcc/imcc.y" +#line 2051 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bxor"; } break; case 236: /* Line 1455 of yacc.c */ -#line 2043 "compilers/imcc/imcc.y" +#line 2057 "compilers/imcc/imcc.y" { (yyval.i) = IMCC_create_itcall_label(imcc); (yyval.i)->type &= ~ITCALL; @@ -4972,21 +4986,21 @@ YYSTYPE yylval; case 237: /* Line 1455 of yacc.c */ -#line 2048 "compilers/imcc/imcc.y" +#line 2062 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 238: /* Line 1455 of yacc.c */ -#line 2055 "compilers/imcc/imcc.y" +#line 2069 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); } break; case 239: /* Line 1455 of yacc.c */ -#line 2057 "compilers/imcc/imcc.y" +#line 2071 "compilers/imcc/imcc.y" { if ((yyvsp[(1) - (3)].sr)->set == 'P') (yyval.i) = MK_I(imcc, imcc->cur_unit, "concat", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); @@ -4998,91 +5012,91 @@ YYSTYPE yylval; case 240: /* Line 1455 of yacc.c */ -#line 2066 "compilers/imcc/imcc.y" +#line 2080 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"add"; } break; case 241: /* Line 1455 of yacc.c */ -#line 2067 "compilers/imcc/imcc.y" +#line 2081 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"sub"; } break; case 242: /* Line 1455 of yacc.c */ -#line 2068 "compilers/imcc/imcc.y" +#line 2082 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mul"; } break; case 243: /* Line 1455 of yacc.c */ -#line 2069 "compilers/imcc/imcc.y" +#line 2083 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"div"; } break; case 244: /* Line 1455 of yacc.c */ -#line 2070 "compilers/imcc/imcc.y" +#line 2084 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mod"; } break; case 245: /* Line 1455 of yacc.c */ -#line 2071 "compilers/imcc/imcc.y" +#line 2085 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"fdiv"; } break; case 246: /* Line 1455 of yacc.c */ -#line 2072 "compilers/imcc/imcc.y" +#line 2086 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"band"; } break; case 247: /* Line 1455 of yacc.c */ -#line 2073 "compilers/imcc/imcc.y" +#line 2087 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bor"; } break; case 248: /* Line 1455 of yacc.c */ -#line 2074 "compilers/imcc/imcc.y" +#line 2088 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bxor"; } break; case 249: /* Line 1455 of yacc.c */ -#line 2075 "compilers/imcc/imcc.y" +#line 2089 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shr"; } break; case 250: /* Line 1455 of yacc.c */ -#line 2076 "compilers/imcc/imcc.y" +#line 2090 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shl"; } break; case 251: /* Line 1455 of yacc.c */ -#line 2077 "compilers/imcc/imcc.y" +#line 2091 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"lsr"; } break; case 252: /* Line 1455 of yacc.c */ -#line 2083 "compilers/imcc/imcc.y" +#line 2097 "compilers/imcc/imcc.y" { (yyval.i) = func_ins(imcc, imcc->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s), imcc -> regs, imcc -> nargs, imcc -> keyvec, 1); @@ -5093,28 +5107,28 @@ YYSTYPE yylval; case 253: /* Line 1455 of yacc.c */ -#line 2091 "compilers/imcc/imcc.y" +#line 2105 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 254: /* Line 1455 of yacc.c */ -#line 2092 "compilers/imcc/imcc.y" +#line 2106 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_fromc(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 255: /* Line 1455 of yacc.c */ -#line 2093 "compilers/imcc/imcc.y" +#line 2107 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_u(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 256: /* Line 1455 of yacc.c */ -#line 2095 "compilers/imcc/imcc.y" +#line 2109 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); if ((yyvsp[(1) - (1)].sr)->set != 'P') @@ -5125,7 +5139,7 @@ YYSTYPE yylval; case 257: /* Line 1455 of yacc.c */ -#line 2101 "compilers/imcc/imcc.y" +#line 2115 "compilers/imcc/imcc.y" { /* disallow bareword method names; SREG name constants are fine */ const char * const name = (yyvsp[(3) - (3)].sr)->name; @@ -5144,7 +5158,7 @@ YYSTYPE yylval; case 258: /* Line 1455 of yacc.c */ -#line 2115 "compilers/imcc/imcc.y" +#line 2129 "compilers/imcc/imcc.y" { imcc->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = mk_const(imcc, (yyvsp[(3) - (3)].s), 'U'); @@ -5155,7 +5169,7 @@ YYSTYPE yylval; case 259: /* Line 1455 of yacc.c */ -#line 2121 "compilers/imcc/imcc.y" +#line 2135 "compilers/imcc/imcc.y" { imcc->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = mk_const(imcc, (yyvsp[(3) - (3)].s), 'S'); @@ -5166,7 +5180,7 @@ YYSTYPE yylval; case 260: /* Line 1455 of yacc.c */ -#line 2127 "compilers/imcc/imcc.y" +#line 2141 "compilers/imcc/imcc.y" { imcc->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); @@ -5176,7 +5190,7 @@ YYSTYPE yylval; case 261: /* Line 1455 of yacc.c */ -#line 2136 "compilers/imcc/imcc.y" +#line 2150 "compilers/imcc/imcc.y" { (yyval.i) = IMCC_create_itcall_label(imcc); IMCC_itcall_sub(imcc, (yyvsp[(1) - (1)].sr)); @@ -5186,21 +5200,21 @@ YYSTYPE yylval; case 262: /* Line 1455 of yacc.c */ -#line 2140 "compilers/imcc/imcc.y" +#line 2154 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(2) - (5)].i); } break; case 263: /* Line 1455 of yacc.c */ -#line 2144 "compilers/imcc/imcc.y" +#line 2158 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 264: /* Line 1455 of yacc.c */ -#line 2146 "compilers/imcc/imcc.y" +#line 2160 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (imcc->adv_named_id) { @@ -5215,7 +5229,7 @@ YYSTYPE yylval; case 265: /* Line 1455 of yacc.c */ -#line 2156 "compilers/imcc/imcc.y" +#line 2170 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (imcc->adv_named_id) { @@ -5230,7 +5244,7 @@ YYSTYPE yylval; case 266: /* Line 1455 of yacc.c */ -#line 2166 "compilers/imcc/imcc.y" +#line 2180 "compilers/imcc/imcc.y" { (yyval.sr) = 0; add_pcc_named_arg(imcc, imcc->cur_call, mk_const(imcc, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr)); @@ -5241,7 +5255,7 @@ YYSTYPE yylval; case 267: /* Line 1455 of yacc.c */ -#line 2172 "compilers/imcc/imcc.y" +#line 2186 "compilers/imcc/imcc.y" { (yyval.sr) = 0; add_pcc_named_arg_var(imcc, imcc->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); @@ -5251,7 +5265,7 @@ YYSTYPE yylval; case 268: /* Line 1455 of yacc.c */ -#line 2177 "compilers/imcc/imcc.y" +#line 2191 "compilers/imcc/imcc.y" { (yyval.sr) = 0; add_pcc_named_arg(imcc, imcc->cur_call, @@ -5263,49 +5277,49 @@ YYSTYPE yylval; case 269: /* Line 1455 of yacc.c */ -#line 2186 "compilers/imcc/imcc.y" +#line 2200 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); } break; case 270: /* Line 1455 of yacc.c */ -#line 2190 "compilers/imcc/imcc.y" +#line 2204 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 271: /* Line 1455 of yacc.c */ -#line 2191 "compilers/imcc/imcc.y" +#line 2205 "compilers/imcc/imcc.y" { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } break; case 272: /* Line 1455 of yacc.c */ -#line 2195 "compilers/imcc/imcc.y" +#line 2209 "compilers/imcc/imcc.y" { (yyval.t) = VT_FLAT; } break; case 273: /* Line 1455 of yacc.c */ -#line 2196 "compilers/imcc/imcc.y" +#line 2210 "compilers/imcc/imcc.y" { (yyval.t) = VT_NAMED; } break; case 274: /* Line 1455 of yacc.c */ -#line 2197 "compilers/imcc/imcc.y" +#line 2211 "compilers/imcc/imcc.y" { (yyval.t) = VT_CALL_SIG; } break; case 275: /* Line 1455 of yacc.c */ -#line 2200 "compilers/imcc/imcc.y" +#line 2214 "compilers/imcc/imcc.y" { adv_named_set_u(imcc, (yyvsp[(3) - (4)].s)); mem_sys_free((yyvsp[(3) - (4)].s)); @@ -5316,7 +5330,7 @@ YYSTYPE yylval; case 276: /* Line 1455 of yacc.c */ -#line 2206 "compilers/imcc/imcc.y" +#line 2220 "compilers/imcc/imcc.y" { adv_named_set(imcc, (yyvsp[(3) - (4)].s)); mem_sys_free((yyvsp[(3) - (4)].s)); @@ -5327,14 +5341,14 @@ YYSTYPE yylval; case 277: /* Line 1455 of yacc.c */ -#line 2214 "compilers/imcc/imcc.y" +#line 2228 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); } break; case 278: /* Line 1455 of yacc.c */ -#line 2219 "compilers/imcc/imcc.y" +#line 2233 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (imcc->adv_named_id) { @@ -5349,7 +5363,7 @@ YYSTYPE yylval; case 279: /* Line 1455 of yacc.c */ -#line 2229 "compilers/imcc/imcc.y" +#line 2243 "compilers/imcc/imcc.y" { add_pcc_named_result(imcc, imcc->cur_call, mk_const(imcc, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr)); @@ -5360,7 +5374,7 @@ YYSTYPE yylval; case 280: /* Line 1455 of yacc.c */ -#line 2235 "compilers/imcc/imcc.y" +#line 2249 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (imcc->adv_named_id) { @@ -5375,7 +5389,7 @@ YYSTYPE yylval; case 281: /* Line 1455 of yacc.c */ -#line 2245 "compilers/imcc/imcc.y" +#line 2259 "compilers/imcc/imcc.y" { add_pcc_named_result(imcc, imcc->cur_call, mk_const(imcc, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr)); mem_sys_free((yyvsp[(1) - (3)].s)); @@ -5385,28 +5399,28 @@ YYSTYPE yylval; case 282: /* Line 1455 of yacc.c */ -#line 2249 "compilers/imcc/imcc.y" +#line 2263 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 283: /* Line 1455 of yacc.c */ -#line 2253 "compilers/imcc/imcc.y" +#line 2267 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 284: /* Line 1455 of yacc.c */ -#line 2254 "compilers/imcc/imcc.y" +#line 2268 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 285: /* Line 1455 of yacc.c */ -#line 2259 "compilers/imcc/imcc.y" +#line 2273 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); } @@ -5415,7 +5429,7 @@ YYSTYPE yylval; case 286: /* Line 1455 of yacc.c */ -#line 2263 "compilers/imcc/imcc.y" +#line 2277 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } @@ -5424,7 +5438,7 @@ YYSTYPE yylval; case 287: /* Line 1455 of yacc.c */ -#line 2267 "compilers/imcc/imcc.y" +#line 2281 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); } @@ -5433,7 +5447,7 @@ YYSTYPE yylval; case 288: /* Line 1455 of yacc.c */ -#line 2274 "compilers/imcc/imcc.y" +#line 2288 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); } @@ -5442,7 +5456,7 @@ YYSTYPE yylval; case 289: /* Line 1455 of yacc.c */ -#line 2278 "compilers/imcc/imcc.y" +#line 2292 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); } @@ -5451,7 +5465,7 @@ YYSTYPE yylval; case 290: /* Line 1455 of yacc.c */ -#line 2282 "compilers/imcc/imcc.y" +#line 2296 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(imcc, imcc->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } @@ -5460,91 +5474,91 @@ YYSTYPE yylval; case 291: /* Line 1455 of yacc.c */ -#line 2288 "compilers/imcc/imcc.y" +#line 2302 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 292: /* Line 1455 of yacc.c */ -#line 2289 "compilers/imcc/imcc.y" +#line 2303 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 293: /* Line 1455 of yacc.c */ -#line 2293 "compilers/imcc/imcc.y" +#line 2307 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"eq"; } break; case 294: /* Line 1455 of yacc.c */ -#line 2294 "compilers/imcc/imcc.y" +#line 2308 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"ne"; } break; case 295: /* Line 1455 of yacc.c */ -#line 2295 "compilers/imcc/imcc.y" +#line 2309 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"gt"; } break; case 296: /* Line 1455 of yacc.c */ -#line 2296 "compilers/imcc/imcc.y" +#line 2310 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"ge"; } break; case 297: /* Line 1455 of yacc.c */ -#line 2297 "compilers/imcc/imcc.y" +#line 2311 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"lt"; } break; case 298: /* Line 1455 of yacc.c */ -#line 2298 "compilers/imcc/imcc.y" +#line 2312 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"le"; } break; case 301: /* Line 1455 of yacc.c */ -#line 2307 "compilers/imcc/imcc.y" +#line 2321 "compilers/imcc/imcc.y" { (yyval.sr) = NULL; } break; case 302: /* Line 1455 of yacc.c */ -#line 2308 "compilers/imcc/imcc.y" +#line 2322 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); } break; case 303: /* Line 1455 of yacc.c */ -#line 2312 "compilers/imcc/imcc.y" +#line 2326 "compilers/imcc/imcc.y" { (yyval.sr) = imcc->regs[0]; } break; case 305: /* Line 1455 of yacc.c */ -#line 2317 "compilers/imcc/imcc.y" +#line 2331 "compilers/imcc/imcc.y" { imcc->regs[imcc->nargs++] = (yyvsp[(1) - (1)].sr); } break; case 306: /* Line 1455 of yacc.c */ -#line 2319 "compilers/imcc/imcc.y" +#line 2333 "compilers/imcc/imcc.y" { imcc -> regs[imcc->nargs++] = (yyvsp[(1) - (4)].sr); imcc -> keyvec |= KEY_BIT(imcc->nargs); @@ -5556,7 +5570,7 @@ YYSTYPE yylval; case 307: /* Line 1455 of yacc.c */ -#line 2326 "compilers/imcc/imcc.y" +#line 2340 "compilers/imcc/imcc.y" { imcc -> regs[imcc->nargs++] = (yyvsp[(2) - (3)].sr); (yyval.sr) = (yyvsp[(2) - (3)].sr); @@ -5566,49 +5580,49 @@ YYSTYPE yylval; case 309: /* Line 1455 of yacc.c */ -#line 2333 "compilers/imcc/imcc.y" +#line 2347 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_fromc(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 310: /* Line 1455 of yacc.c */ -#line 2334 "compilers/imcc/imcc.y" +#line 2348 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_u(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 311: /* Line 1455 of yacc.c */ -#line 2338 "compilers/imcc/imcc.y" +#line 2352 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 312: /* Line 1455 of yacc.c */ -#line 2339 "compilers/imcc/imcc.y" +#line 2353 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 313: /* Line 1455 of yacc.c */ -#line 2343 "compilers/imcc/imcc.y" +#line 2357 "compilers/imcc/imcc.y" { (yyval.sr) = mk_label_address(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 314: /* Line 1455 of yacc.c */ -#line 2344 "compilers/imcc/imcc.y" +#line 2358 "compilers/imcc/imcc.y" { (yyval.sr) = mk_label_address(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 319: /* Line 1455 of yacc.c */ -#line 2358 "compilers/imcc/imcc.y" +#line 2372 "compilers/imcc/imcc.y" { imcc->nkeys = 0; } @@ -5617,7 +5631,7 @@ YYSTYPE yylval; case 320: /* Line 1455 of yacc.c */ -#line 2362 "compilers/imcc/imcc.y" +#line 2376 "compilers/imcc/imcc.y" { (yyval.sr) = link_keys(imcc, imcc->nkeys, imcc->keys, 0); } @@ -5626,7 +5640,7 @@ YYSTYPE yylval; case 321: /* Line 1455 of yacc.c */ -#line 2368 "compilers/imcc/imcc.y" +#line 2382 "compilers/imcc/imcc.y" { imcc->nkeys = 0; } @@ -5635,7 +5649,7 @@ YYSTYPE yylval; case 322: /* Line 1455 of yacc.c */ -#line 2372 "compilers/imcc/imcc.y" +#line 2386 "compilers/imcc/imcc.y" { (yyval.sr) = link_keys(imcc, imcc->nkeys, @@ -5646,14 +5660,14 @@ YYSTYPE yylval; case 323: /* Line 1455 of yacc.c */ -#line 2380 "compilers/imcc/imcc.y" +#line 2394 "compilers/imcc/imcc.y" { imcc->keys[imcc->nkeys++] = (yyvsp[(1) - (1)].sr); } break; case 324: /* Line 1455 of yacc.c */ -#line 2382 "compilers/imcc/imcc.y" +#line 2396 "compilers/imcc/imcc.y" { imcc->keys[imcc->nkeys++] = (yyvsp[(3) - (3)].sr); (yyval.sr) = imcc->keys[0]; @@ -5663,7 +5677,7 @@ YYSTYPE yylval; case 325: /* Line 1455 of yacc.c */ -#line 2390 "compilers/imcc/imcc.y" +#line 2404 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); } @@ -5672,77 +5686,77 @@ YYSTYPE yylval; case 326: /* Line 1455 of yacc.c */ -#line 2396 "compilers/imcc/imcc.y" +#line 2410 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(imcc, (yyvsp[(1) - (1)].s), 'I'); } break; case 327: /* Line 1455 of yacc.c */ -#line 2397 "compilers/imcc/imcc.y" +#line 2411 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(imcc, (yyvsp[(1) - (1)].s), 'N'); } break; case 328: /* Line 1455 of yacc.c */ -#line 2398 "compilers/imcc/imcc.y" +#line 2412 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(imcc, (yyvsp[(1) - (1)].s), 'S'); } break; case 329: /* Line 1455 of yacc.c */ -#line 2399 "compilers/imcc/imcc.y" +#line 2413 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(imcc, (yyvsp[(1) - (1)].s), 'P'); } break; case 330: /* Line 1455 of yacc.c */ -#line 2400 "compilers/imcc/imcc.y" +#line 2414 "compilers/imcc/imcc.y" { (yyval.sr) = mk_pasm_reg(imcc, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 331: /* Line 1455 of yacc.c */ -#line 2404 "compilers/imcc/imcc.y" +#line 2418 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(imcc, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 332: /* Line 1455 of yacc.c */ -#line 2405 "compilers/imcc/imcc.y" +#line 2419 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(imcc, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 333: /* Line 1455 of yacc.c */ -#line 2409 "compilers/imcc/imcc.y" +#line 2423 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(imcc, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 334: /* Line 1455 of yacc.c */ -#line 2410 "compilers/imcc/imcc.y" +#line 2424 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(imcc, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 335: /* Line 1455 of yacc.c */ -#line 2411 "compilers/imcc/imcc.y" +#line 2425 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); } break; /* Line 1455 of yacc.c */ -#line 5735 "compilers/imcc/imcparser.c" +#line 5749 "compilers/imcc/imcparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -5954,7 +5968,7 @@ YYSTYPE yylval; /* Line 1675 of yacc.c */ -#line 2415 "compilers/imcc/imcc.y" +#line 2429 "compilers/imcc/imcc.y" /* I need this prototype somewhere... */ diff --git a/src/packfile/api.c b/src/packfile/api.c index 1b4146a71b..af79eda77d 100644 --- a/src/packfile/api.c +++ b/src/packfile/api.c @@ -363,14 +363,10 @@ Parrot_pf_deserialize(PARROT_INTERP, ARGIN(STRING *str)) Get an array of Subs in the packfile by named flag. -Currently accepted values are "load" and "init". - =cut */ -#define USE_TAGMAP 1 - PARROT_EXPORT PARROT_CANNOT_RETURN_NULL PMC * @@ -379,13 +375,16 @@ Parrot_pf_subs_by_flag(PARROT_INTERP, ARGIN(PMC * pfpmc), ARGIN(STRING * flag)) ASSERT_ARGS(Parrot_pf_subs_by_flag) PackFile * const pf = (PackFile*)VTABLE_get_pointer(interp, pfpmc); int mode = 0; + PMC * const subs = Parrot_pmc_new(interp, enum_class_ResizablePMCArray); if (!pf) Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL, "NULL packfile"); -#if USE_TAGMAP - else { - PMC * const subs = Parrot_pmc_new(interp, enum_class_ResizablePMCArray); + if (STRING_equal(interp, flag, CONST_STRING(interp, "load"))) + mode = 1; + else if (STRING_equal(interp, flag, CONST_STRING(interp, "init"))) + mode = 2; + { PackFile_ConstTable * const ct = pf->cur_cs->const_table; const opcode_t nmaps = ct->ntags; opcode_t flag_idx = -1; @@ -399,19 +398,9 @@ Parrot_pf_subs_by_flag(PARROT_INTERP, ARGIN(PMC * pfpmc), ARGIN(STRING * flag)) continue; VTABLE_push_pmc(interp, subs, ct->pmc.constants[pmc_idx]); } - return subs; } -#else - if (STRING_equal(interp, flag, CONST_STRING(interp, "load"))) - mode = 1; - else if (STRING_equal(interp, flag, CONST_STRING(interp, "init"))) - mode = 2; - else - Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION, - "%S is not a valid packfile trigger", flag); - { - PMC * const subs = Parrot_pmc_new(interp, enum_class_ResizablePMCArray); + if (mode == 1 || mode == 2) { PackFile_ByteCode * const self = pf->cur_cs; PackFile_ConstTable * const ct = self->const_table; STRING * const SUB = CONST_STRING(interp, "Sub"); @@ -432,9 +421,8 @@ Parrot_pf_subs_by_flag(PARROT_INTERP, ARGIN(PMC * pfpmc), ARGIN(STRING * flag)) else if (mode == 2 && Sub_comp_INIT_TEST(sub)) VTABLE_push_pmc(interp, subs, sub_pmc); } - return subs; } -#endif + return subs; } /*