[svn:parrot] r46427 - in trunk: . compilers/imcc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Sun May 9 04:49:19 UTC 2010
Author: plobsing
Date: Sun May 9 04:49:19 2010
New Revision: 46427
URL: https://trac.parrot.org/parrot/changeset/46427
Log:
deprecate :unique_reg and make it a nop
also eliminate NON_VOLATILE flag used for life analysis
Modified:
trunk/DEPRECATED.pod
trunk/compilers/imcc/cfg.c
trunk/compilers/imcc/debug.c
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/imcparser.c
trunk/compilers/imcc/parser.h
trunk/compilers/imcc/reg_alloc.c
trunk/compilers/imcc/symreg.c
trunk/compilers/imcc/symreg.h
Modified: trunk/DEPRECATED.pod
==============================================================================
--- trunk/DEPRECATED.pod Sun May 9 04:37:35 2010 (r46426)
+++ trunk/DEPRECATED.pod Sun May 9 04:49:19 2010 (r46427)
@@ -252,6 +252,10 @@
L<https://trac.parrot.org/parrot/ticket/1103>
+=item :unique_reg flag [eligible in 3.1]
+
+L<https://trac.parrot.org/parrot/ticket/1622>
+
=back
=head1 Functions
Modified: trunk/compilers/imcc/cfg.c
==============================================================================
--- trunk/compilers/imcc/cfg.c Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/cfg.c Sun May 9 04:49:19 2010 (r46427)
@@ -763,22 +763,6 @@
if (r->life_info[i]->flags & LF_use) {
const Instruction * const ins = unit->bb_list[i]->start;
- /* if the previous instruction (the last of the previous block) was
- * a sub call, and the symbol is live/use here, it needs allocation
- * in the non-volatile register range */
- if (ins->prev) {
- const Instruction * const prev = ins->prev;
-
- if ((prev->type & (ITPCCSUB|ITPCCYIELD))
- && prev->opnum != PARROT_OP_tailcall_p)
- r->usage |= U_NON_VOLATILE;
- else if (prev->opnum == PARROT_OP_invoke_p_p
- || prev->opnum == PARROT_OP_invokecc_p)
- r->usage |= U_NON_VOLATILE;
- else if (ins->type & ITADDR)
- r->usage |= U_NON_VOLATILE;
- }
-
/* This block uses r, so it must be live at the beginning */
r->life_info[i]->flags |= LF_lv_in;
@@ -844,10 +828,6 @@
for (ins = bb->start; ins; ins = ins->next) {
int is_alias;
- /* if we have a setp_ind opcode, it may write all PMC registers */
- if (ins->opnum == PARROT_OP_setp_ind_i_p && r->set == 'P')
- r->usage |= U_NON_VOLATILE;
-
/* restoreall and such */
if (ins_writes2(ins, r->set))
special = ins;
Modified: trunk/compilers/imcc/debug.c
==============================================================================
--- trunk/compilers/imcc/debug.c Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/debug.c Sun May 9 04:49:19 2010 (r46427)
@@ -406,9 +406,8 @@
continue;
if (!r->first_ins)
continue;
- fprintf(stderr, "%s %c\t%d\t%d\t%d\t%d\t%c %2d %2d\t%d\t%d\t%s\t%lx\n",
+ fprintf(stderr, "%s \t%d\t%d\t%d\t%d\t%c %2d %2d\t%d\t%d\t%s\t%lx\n",
r->name,
- r->usage & U_NON_VOLATILE ? 'P' : ' ',
r->first_ins->index, r->last_ins->index,
r->first_ins->bbindex, r->last_ins->bbindex,
r->set,
Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/imcc.y Sun May 9 04:49:19 2010 (r46427)
@@ -1419,9 +1419,7 @@
sub_param_type_def:
type IDENTIFIER paramtype_list
{
- if ($3 & VT_UNIQUE_REG)
- $$ = mk_ident_ur(interp, $2, $1);
- else if ($3 & VT_OPT_FLAG && $1 != 'I') {
+ if ($3 & VT_OPT_FLAG && $1 != 'I') {
const char *type;
switch ($1) {
case 'N': type = "num"; break;
@@ -1433,8 +1431,7 @@
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
":opt_flag parameter must be of type 'I', not '%s'", type);
}
- else
- $$ = mk_ident(interp, $2, $1);
+ $$ = mk_ident(interp, $2, $1);
$$->type |= $3;
mem_sys_free($2);
}
@@ -1712,10 +1709,7 @@
{
IdList * const l = $4;
SymReg *ignored;
- if (l->unique_reg)
- ignored = mk_ident_ur(interp, l->id, $3);
- else
- ignored = mk_ident(interp, l->id, $3);
+ ignored = mk_ident(interp, l->id, $3);
UNUSED(ignored);
IMCC_INFO(interp)->is_def = 0;
$$ = 0;
@@ -1734,7 +1728,7 @@
| ADV_NAMED { $$ = VT_NAMED; }
| ADV_NAMED '(' STRINGC ')' { adv_named_set(interp, $3); $$ = 0; mem_sys_free($3); }
| ADV_NAMED '(' USTRINGC ')' { adv_named_set_u(interp, $3); $$ = 0; mem_sys_free($3); }
- | UNIQUE_REG { $$ = VT_UNIQUE_REG; }
+ | UNIQUE_REG { $$ = 0; }
| ADV_CALL_SIG { $$ = VT_CALL_SIG; }
;
@@ -1926,14 +1920,13 @@
{
IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
l->id = $1;
- l->unique_reg = $2;
$$ = l;
}
;
opt_unique_reg:
- /* empty */ { $$ = 0; }
- | UNIQUE_REG { $$ = 1; }
+ /* empty */
+ | UNIQUE_REG
;
@@ -1945,10 +1938,7 @@
IdList *l = $4;
while (l) {
IdList *l1;
- if (l->unique_reg)
- mk_ident_ur(interp, l->id, $3);
- else
- mk_ident(interp, l->id, $3);
+ mk_ident(interp, l->id, $3);
l1 = l;
l = l->next;
mem_sys_free(l1->id);
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/imcparser.c Sun May 9 04:49:19 2010 (r46427)
@@ -1884,34 +1884,34 @@
1285, 1286, 1287, 1288, 1289, 1290, 1293, 1293, 1302, 1301,
1314, 1318, 1331, 1335, 1339, 1339, 1351, 1353, 1357, 1372,
1376, 1381, 1385, 1389, 1380, 1401, 1402, 1403, 1416, 1416,
- 1420, 1446, 1450, 1456, 1465, 1471, 1480, 1486, 1495, 1501,
- 1510, 1518, 1523, 1534, 1537, 1542, 1550, 1551, 1552, 1553,
- 1554, 1565, 1576, 1579, 1581, 1586, 1585, 1618, 1619, 1623,
- 1624, 1628, 1629, 1633, 1634, 1638, 1639, 1640, 1641, 1642,
- 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1655,
- 1660, 1664, 1669, 1673, 1677, 1682, 1691, 1692, 1696, 1701,
- 1702, 1710, 1711, 1711, 1726, 1727, 1731, 1732, 1733, 1734,
- 1735, 1736, 1737, 1738, 1743, 1743, 1746, 1754, 1754, 1760,
- 1761, 1766, 1774, 1775, 1780, 1788, 1792, 1797, 1796, 1809,
- 1810, 1814, 1815, 1825, 1830, 1840, 1849, 1850, 1862, 1866,
- 1868, 1869, 1870, 1871, 1872, 1876, 1877, 1881, 1882, 1886,
- 1897, 1898, 1909, 1916, 1925, 1935, 1936, 1941, 1942, 1943,
- 1943, 1959, 1976, 1989, 1989, 1996, 1997, 1997, 2003, 2009,
- 2013, 2025, 2026, 2027, 2028, 2029, 2030, 2034, 2035, 2036,
- 2037, 2041, 2054, 2056, 2058, 2060, 2062, 2067, 2070, 2077,
- 2076, 2085, 2086, 2087, 2088, 2096, 2097, 2098, 2102, 2103,
+ 1420, 1443, 1447, 1453, 1462, 1468, 1477, 1483, 1492, 1498,
+ 1507, 1515, 1520, 1531, 1534, 1539, 1547, 1548, 1549, 1550,
+ 1551, 1562, 1573, 1576, 1578, 1583, 1582, 1615, 1616, 1620,
+ 1621, 1625, 1626, 1630, 1631, 1635, 1636, 1637, 1638, 1639,
+ 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1652,
+ 1657, 1661, 1666, 1670, 1674, 1679, 1688, 1689, 1693, 1698,
+ 1699, 1707, 1708, 1708, 1720, 1721, 1725, 1726, 1727, 1728,
+ 1729, 1730, 1731, 1732, 1737, 1737, 1740, 1748, 1748, 1754,
+ 1755, 1760, 1768, 1769, 1774, 1782, 1786, 1791, 1790, 1803,
+ 1804, 1808, 1809, 1819, 1824, 1834, 1843, 1844, 1856, 1860,
+ 1862, 1863, 1864, 1865, 1866, 1870, 1871, 1875, 1876, 1880,
+ 1891, 1892, 1903, 1910, 1919, 1927, 1929, 1934, 1935, 1936,
+ 1936, 1949, 1966, 1979, 1979, 1986, 1987, 1987, 1993, 1999,
+ 2003, 2015, 2016, 2017, 2018, 2019, 2020, 2024, 2025, 2026,
+ 2027, 2031, 2044, 2046, 2048, 2050, 2052, 2057, 2060, 2067,
+ 2066, 2075, 2076, 2077, 2078, 2086, 2087, 2088, 2092, 2093,
+ 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103,
2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113,
- 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123,
- 2124, 2130, 2129, 2141, 2146, 2147, 2148, 2149, 2150, 2151,
- 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2163, 2174, 2175,
- 2176, 2177, 2183, 2197, 2203, 2209, 2215, 2214, 2223, 2224,
- 2234, 2244, 2251, 2256, 2266, 2270, 2271, 2275, 2276, 2277,
- 2280, 2281, 2285, 2289, 2299, 2305, 2315, 2320, 2324, 2325,
- 2329, 2333, 2337, 2344, 2348, 2352, 2359, 2360, 2364, 2365,
- 2366, 2367, 2368, 2369, 2373, 2374, 2378, 2379, 2383, 2384,
- 2388, 2389, 2396, 2403, 2404, 2405, 2409, 2410, 2414, 2415,
- 2419, 2420, 2424, 2425, 2429, 2429, 2441, 2441, 2453, 2454,
- 2462, 2469, 2470, 2471, 2472, 2473, 2477, 2478, 2479, 2480
+ 2114, 2120, 2119, 2131, 2136, 2137, 2138, 2139, 2140, 2141,
+ 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2153, 2164, 2165,
+ 2166, 2167, 2173, 2187, 2193, 2199, 2205, 2204, 2213, 2214,
+ 2224, 2234, 2241, 2246, 2256, 2260, 2261, 2265, 2266, 2267,
+ 2270, 2271, 2275, 2279, 2289, 2295, 2305, 2310, 2314, 2315,
+ 2319, 2323, 2327, 2334, 2338, 2342, 2349, 2350, 2354, 2355,
+ 2356, 2357, 2358, 2359, 2363, 2364, 2368, 2369, 2373, 2374,
+ 2378, 2379, 2386, 2393, 2394, 2395, 2399, 2400, 2404, 2405,
+ 2409, 2410, 2414, 2415, 2419, 2419, 2431, 2431, 2443, 2444,
+ 2452, 2459, 2460, 2461, 2462, 2463, 2467, 2468, 2469, 2470
};
#endif
@@ -3713,9 +3713,7 @@
/* Line 1464 of yacc.c */
#line 1421 "compilers/imcc/imcc.y"
{
- if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
- (yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
- else if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') {
+ if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') {
const char *type;
switch ((yyvsp[(1) - (3)].t)) {
case 'N': type = "num"; break;
@@ -3727,8 +3725,7 @@
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
":opt_flag parameter must be of type 'I', not '%s'", type);
}
- else
- (yyval.sr) = mk_ident(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
+ (yyval.sr) = mk_ident(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
(yyval.sr)->type |= (yyvsp[(3) - (3)].t);
mem_sys_free((yyvsp[(2) - (3)].s));
}
@@ -3737,14 +3734,14 @@
case 61:
/* Line 1464 of yacc.c */
-#line 1446 "compilers/imcc/imcc.y"
+#line 1443 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 62:
/* Line 1464 of yacc.c */
-#line 1451 "compilers/imcc/imcc.y"
+#line 1448 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3755,7 +3752,7 @@
case 63:
/* Line 1464 of yacc.c */
-#line 1457 "compilers/imcc/imcc.y"
+#line 1454 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3766,7 +3763,7 @@
case 64:
/* Line 1464 of yacc.c */
-#line 1466 "compilers/imcc/imcc.y"
+#line 1463 "compilers/imcc/imcc.y"
{
(yyval.t) = P_VTABLE;
IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3777,7 +3774,7 @@
case 65:
/* Line 1464 of yacc.c */
-#line 1472 "compilers/imcc/imcc.y"
+#line 1469 "compilers/imcc/imcc.y"
{
(yyval.t) = P_VTABLE;
IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3788,7 +3785,7 @@
case 66:
/* Line 1464 of yacc.c */
-#line 1481 "compilers/imcc/imcc.y"
+#line 1478 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3799,7 +3796,7 @@
case 67:
/* Line 1464 of yacc.c */
-#line 1487 "compilers/imcc/imcc.y"
+#line 1484 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3810,7 +3807,7 @@
case 68:
/* Line 1464 of yacc.c */
-#line 1496 "compilers/imcc/imcc.y"
+#line 1493 "compilers/imcc/imcc.y"
{
(yyval.t) = P_NSENTRY;
IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3821,7 +3818,7 @@
case 69:
/* Line 1464 of yacc.c */
-#line 1502 "compilers/imcc/imcc.y"
+#line 1499 "compilers/imcc/imcc.y"
{
(yyval.t) = P_NSENTRY;
IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3832,7 +3829,7 @@
case 70:
/* Line 1464 of yacc.c */
-#line 1511 "compilers/imcc/imcc.y"
+#line 1508 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3842,7 +3839,7 @@
case 71:
/* Line 1464 of yacc.c */
-#line 1519 "compilers/imcc/imcc.y"
+#line 1516 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3852,7 +3849,7 @@
case 72:
/* Line 1464 of yacc.c */
-#line 1524 "compilers/imcc/imcc.y"
+#line 1521 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3864,7 +3861,7 @@
case 73:
/* Line 1464 of yacc.c */
-#line 1534 "compilers/imcc/imcc.y"
+#line 1531 "compilers/imcc/imcc.y"
{
add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
}
@@ -3873,7 +3870,7 @@
case 74:
/* Line 1464 of yacc.c */
-#line 1538 "compilers/imcc/imcc.y"
+#line 1535 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3883,7 +3880,7 @@
case 75:
/* Line 1464 of yacc.c */
-#line 1543 "compilers/imcc/imcc.y"
+#line 1540 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3893,35 +3890,35 @@
case 76:
/* Line 1464 of yacc.c */
-#line 1550 "compilers/imcc/imcc.y"
+#line 1547 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "INTVAL", 'S'); }
break;
case 77:
/* Line 1464 of yacc.c */
-#line 1551 "compilers/imcc/imcc.y"
+#line 1548 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
break;
case 78:
/* Line 1464 of yacc.c */
-#line 1552 "compilers/imcc/imcc.y"
+#line 1549 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "PMC", 'S'); }
break;
case 79:
/* Line 1464 of yacc.c */
-#line 1553 "compilers/imcc/imcc.y"
+#line 1550 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "STRING", 'S'); }
break;
case 80:
/* Line 1464 of yacc.c */
-#line 1555 "compilers/imcc/imcc.y"
+#line 1552 "compilers/imcc/imcc.y"
{
SymReg *r;
if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3937,7 +3934,7 @@
case 81:
/* Line 1464 of yacc.c */
-#line 1566 "compilers/imcc/imcc.y"
+#line 1563 "compilers/imcc/imcc.y"
{
SymReg *r;
if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3953,14 +3950,14 @@
case 82:
/* Line 1464 of yacc.c */
-#line 1576 "compilers/imcc/imcc.y"
+#line 1573 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); }
break;
case 85:
/* Line 1464 of yacc.c */
-#line 1586 "compilers/imcc/imcc.y"
+#line 1583 "compilers/imcc/imcc.y"
{
char name[128];
SymReg *r, *r1;
@@ -3989,112 +3986,112 @@
case 86:
/* Line 1464 of yacc.c */
-#line 1614 "compilers/imcc/imcc.y"
+#line 1611 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 87:
/* Line 1464 of yacc.c */
-#line 1618 "compilers/imcc/imcc.y"
+#line 1615 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
break;
case 88:
/* Line 1464 of yacc.c */
-#line 1619 "compilers/imcc/imcc.y"
+#line 1616 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
break;
case 89:
/* Line 1464 of yacc.c */
-#line 1623 "compilers/imcc/imcc.y"
+#line 1620 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 90:
/* Line 1464 of yacc.c */
-#line 1624 "compilers/imcc/imcc.y"
+#line 1621 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
break;
case 91:
/* Line 1464 of yacc.c */
-#line 1628 "compilers/imcc/imcc.y"
+#line 1625 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 93:
/* Line 1464 of yacc.c */
-#line 1633 "compilers/imcc/imcc.y"
+#line 1630 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (1)].t); }
break;
case 94:
/* Line 1464 of yacc.c */
-#line 1634 "compilers/imcc/imcc.y"
+#line 1631 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 95:
/* Line 1464 of yacc.c */
-#line 1638 "compilers/imcc/imcc.y"
+#line 1635 "compilers/imcc/imcc.y"
{ (yyval.t) = P_LOAD; }
break;
case 96:
/* Line 1464 of yacc.c */
-#line 1639 "compilers/imcc/imcc.y"
+#line 1636 "compilers/imcc/imcc.y"
{ (yyval.t) = P_INIT; }
break;
case 97:
/* Line 1464 of yacc.c */
-#line 1640 "compilers/imcc/imcc.y"
+#line 1637 "compilers/imcc/imcc.y"
{ (yyval.t) = P_MAIN; }
break;
case 98:
/* Line 1464 of yacc.c */
-#line 1641 "compilers/imcc/imcc.y"
+#line 1638 "compilers/imcc/imcc.y"
{ (yyval.t) = P_IMMEDIATE; }
break;
case 99:
/* Line 1464 of yacc.c */
-#line 1642 "compilers/imcc/imcc.y"
+#line 1639 "compilers/imcc/imcc.y"
{ (yyval.t) = P_POSTCOMP; }
break;
case 100:
/* Line 1464 of yacc.c */
-#line 1643 "compilers/imcc/imcc.y"
+#line 1640 "compilers/imcc/imcc.y"
{ (yyval.t) = P_ANON; }
break;
case 101:
/* Line 1464 of yacc.c */
-#line 1644 "compilers/imcc/imcc.y"
+#line 1641 "compilers/imcc/imcc.y"
{ (yyval.t) = P_NEED_LEX; }
break;
case 109:
/* Line 1464 of yacc.c */
-#line 1656 "compilers/imcc/imcc.y"
+#line 1653 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -4104,7 +4101,7 @@
case 110:
/* Line 1464 of yacc.c */
-#line 1661 "compilers/imcc/imcc.y"
+#line 1658 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
}
@@ -4113,7 +4110,7 @@
case 111:
/* Line 1464 of yacc.c */
-#line 1665 "compilers/imcc/imcc.y"
+#line 1662 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
@@ -4123,7 +4120,7 @@
case 112:
/* Line 1464 of yacc.c */
-#line 1670 "compilers/imcc/imcc.y"
+#line 1667 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
}
@@ -4132,7 +4129,7 @@
case 113:
/* Line 1464 of yacc.c */
-#line 1674 "compilers/imcc/imcc.y"
+#line 1671 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
}
@@ -4141,7 +4138,7 @@
case 114:
/* Line 1464 of yacc.c */
-#line 1678 "compilers/imcc/imcc.y"
+#line 1675 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -4151,7 +4148,7 @@
case 115:
/* Line 1464 of yacc.c */
-#line 1683 "compilers/imcc/imcc.y"
+#line 1680 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -4161,35 +4158,35 @@
case 116:
/* Line 1464 of yacc.c */
-#line 1691 "compilers/imcc/imcc.y"
+#line 1688 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 117:
/* Line 1464 of yacc.c */
-#line 1692 "compilers/imcc/imcc.y"
+#line 1689 "compilers/imcc/imcc.y"
{ add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
break;
case 118:
/* Line 1464 of yacc.c */
-#line 1696 "compilers/imcc/imcc.y"
+#line 1693 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (2)].sr); }
break;
case 119:
/* Line 1464 of yacc.c */
-#line 1701 "compilers/imcc/imcc.y"
+#line 1698 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 120:
/* Line 1464 of yacc.c */
-#line 1703 "compilers/imcc/imcc.y"
+#line 1700 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4199,28 +4196,25 @@
case 121:
/* Line 1464 of yacc.c */
-#line 1710 "compilers/imcc/imcc.y"
+#line 1707 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 122:
/* Line 1464 of yacc.c */
-#line 1711 "compilers/imcc/imcc.y"
+#line 1708 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 123:
/* Line 1464 of yacc.c */
-#line 1712 "compilers/imcc/imcc.y"
+#line 1709 "compilers/imcc/imcc.y"
{
IdList * const l = (yyvsp[(4) - (4)].idlist);
SymReg *ignored;
- if (l->unique_reg)
- ignored = mk_ident_ur(interp, l->id, (yyvsp[(3) - (4)].t));
- else
- ignored = mk_ident(interp, l->id, (yyvsp[(3) - (4)].t));
+ ignored = mk_ident(interp, l->id, (yyvsp[(3) - (4)].t));
UNUSED(ignored);
IMCC_INFO(interp)->is_def = 0;
(yyval.sr) = 0;
@@ -4230,91 +4224,91 @@
case 124:
/* Line 1464 of yacc.c */
-#line 1726 "compilers/imcc/imcc.y"
+#line 1720 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 125:
/* Line 1464 of yacc.c */
-#line 1727 "compilers/imcc/imcc.y"
+#line 1721 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 126:
/* Line 1464 of yacc.c */
-#line 1731 "compilers/imcc/imcc.y"
+#line 1725 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 127:
/* Line 1464 of yacc.c */
-#line 1732 "compilers/imcc/imcc.y"
+#line 1726 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPTIONAL; }
break;
case 128:
/* Line 1464 of yacc.c */
-#line 1733 "compilers/imcc/imcc.y"
+#line 1727 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPT_FLAG; }
break;
case 129:
/* Line 1464 of yacc.c */
-#line 1734 "compilers/imcc/imcc.y"
+#line 1728 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 130:
/* Line 1464 of yacc.c */
-#line 1735 "compilers/imcc/imcc.y"
+#line 1729 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
break;
case 131:
/* Line 1464 of yacc.c */
-#line 1736 "compilers/imcc/imcc.y"
+#line 1730 "compilers/imcc/imcc.y"
{ adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
break;
case 132:
/* Line 1464 of yacc.c */
-#line 1737 "compilers/imcc/imcc.y"
- { (yyval.t) = VT_UNIQUE_REG; }
+#line 1731 "compilers/imcc/imcc.y"
+ { (yyval.t) = 0; }
break;
case 133:
/* Line 1464 of yacc.c */
-#line 1738 "compilers/imcc/imcc.y"
+#line 1732 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_CALL_SIG; }
break;
case 134:
/* Line 1464 of yacc.c */
-#line 1743 "compilers/imcc/imcc.y"
+#line 1737 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 0); }
break;
case 135:
/* Line 1464 of yacc.c */
-#line 1745 "compilers/imcc/imcc.y"
+#line 1739 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 136:
/* Line 1464 of yacc.c */
-#line 1747 "compilers/imcc/imcc.y"
+#line 1741 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
(yyval.i) = 0;
@@ -4324,28 +4318,28 @@
case 137:
/* Line 1464 of yacc.c */
-#line 1754 "compilers/imcc/imcc.y"
+#line 1748 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 1); }
break;
case 138:
/* Line 1464 of yacc.c */
-#line 1756 "compilers/imcc/imcc.y"
+#line 1750 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 139:
/* Line 1464 of yacc.c */
-#line 1760 "compilers/imcc/imcc.y"
+#line 1754 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 140:
/* Line 1464 of yacc.c */
-#line 1762 "compilers/imcc/imcc.y"
+#line 1756 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -4355,7 +4349,7 @@
case 141:
/* Line 1464 of yacc.c */
-#line 1767 "compilers/imcc/imcc.y"
+#line 1761 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -4365,14 +4359,14 @@
case 142:
/* Line 1464 of yacc.c */
-#line 1774 "compilers/imcc/imcc.y"
+#line 1768 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 143:
/* Line 1464 of yacc.c */
-#line 1776 "compilers/imcc/imcc.y"
+#line 1770 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -4382,7 +4376,7 @@
case 144:
/* Line 1464 of yacc.c */
-#line 1781 "compilers/imcc/imcc.y"
+#line 1775 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -4392,21 +4386,21 @@
case 145:
/* Line 1464 of yacc.c */
-#line 1788 "compilers/imcc/imcc.y"
+#line 1782 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 146:
/* Line 1464 of yacc.c */
-#line 1792 "compilers/imcc/imcc.y"
+#line 1786 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 147:
/* Line 1464 of yacc.c */
-#line 1797 "compilers/imcc/imcc.y"
+#line 1791 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->asm_state == AsmDefault)
begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -4416,7 +4410,7 @@
case 148:
/* Line 1464 of yacc.c */
-#line 1802 "compilers/imcc/imcc.y"
+#line 1796 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
(yyval.t) = 0;
@@ -4426,28 +4420,28 @@
case 149:
/* Line 1464 of yacc.c */
-#line 1809 "compilers/imcc/imcc.y"
+#line 1803 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 150:
/* Line 1464 of yacc.c */
-#line 1810 "compilers/imcc/imcc.y"
+#line 1804 "compilers/imcc/imcc.y"
{ (yyval.t) = 1; }
break;
case 151:
/* Line 1464 of yacc.c */
-#line 1814 "compilers/imcc/imcc.y"
+#line 1808 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 152:
/* Line 1464 of yacc.c */
-#line 1816 "compilers/imcc/imcc.y"
+#line 1810 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4462,7 +4456,7 @@
case 153:
/* Line 1464 of yacc.c */
-#line 1826 "compilers/imcc/imcc.y"
+#line 1820 "compilers/imcc/imcc.y"
{
SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr));
@@ -4472,7 +4466,7 @@
case 154:
/* Line 1464 of yacc.c */
-#line 1831 "compilers/imcc/imcc.y"
+#line 1825 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4487,7 +4481,7 @@
case 155:
/* Line 1464 of yacc.c */
-#line 1841 "compilers/imcc/imcc.y"
+#line 1835 "compilers/imcc/imcc.y"
{
SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr));
@@ -4497,63 +4491,63 @@
case 158:
/* Line 1464 of yacc.c */
-#line 1862 "compilers/imcc/imcc.y"
+#line 1856 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 159:
/* Line 1464 of yacc.c */
-#line 1867 "compilers/imcc/imcc.y"
+#line 1861 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (2)].i); }
break;
case 160:
/* Line 1464 of yacc.c */
-#line 1868 "compilers/imcc/imcc.y"
+#line 1862 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 161:
/* Line 1464 of yacc.c */
-#line 1869 "compilers/imcc/imcc.y"
+#line 1863 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 162:
/* Line 1464 of yacc.c */
-#line 1870 "compilers/imcc/imcc.y"
+#line 1864 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 163:
/* Line 1464 of yacc.c */
-#line 1871 "compilers/imcc/imcc.y"
+#line 1865 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 164:
/* Line 1464 of yacc.c */
-#line 1872 "compilers/imcc/imcc.y"
+#line 1866 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 165:
/* Line 1464 of yacc.c */
-#line 1876 "compilers/imcc/imcc.y"
+#line 1870 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 169:
/* Line 1464 of yacc.c */
-#line 1887 "compilers/imcc/imcc.y"
+#line 1881 "compilers/imcc/imcc.y"
{
Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
mem_sys_free((yyvsp[(1) - (1)].s));
@@ -4564,14 +4558,14 @@
case 170:
/* Line 1464 of yacc.c */
-#line 1897 "compilers/imcc/imcc.y"
+#line 1891 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (3)].i); }
break;
case 171:
/* Line 1464 of yacc.c */
-#line 1899 "compilers/imcc/imcc.y"
+#line 1893 "compilers/imcc/imcc.y"
{
if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4584,7 +4578,7 @@
case 172:
/* Line 1464 of yacc.c */
-#line 1910 "compilers/imcc/imcc.y"
+#line 1904 "compilers/imcc/imcc.y"
{
IdList* const l = (yyvsp[(1) - (1)].idlist);
l->next = NULL;
@@ -4595,7 +4589,7 @@
case 173:
/* Line 1464 of yacc.c */
-#line 1917 "compilers/imcc/imcc.y"
+#line 1911 "compilers/imcc/imcc.y"
{
IdList* const l = (yyvsp[(3) - (3)].idlist);
l->next = (yyvsp[(1) - (3)].idlist);
@@ -4606,48 +4600,30 @@
case 174:
/* Line 1464 of yacc.c */
-#line 1926 "compilers/imcc/imcc.y"
+#line 1920 "compilers/imcc/imcc.y"
{
IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
l->id = (yyvsp[(1) - (2)].s);
- l->unique_reg = (yyvsp[(2) - (2)].t);
(yyval.idlist) = l;
}
break;
- case 175:
-
-/* Line 1464 of yacc.c */
-#line 1935 "compilers/imcc/imcc.y"
- { (yyval.t) = 0; }
- break;
-
- case 176:
-
-/* Line 1464 of yacc.c */
-#line 1936 "compilers/imcc/imcc.y"
- { (yyval.t) = 1; }
- break;
-
case 179:
/* Line 1464 of yacc.c */
-#line 1943 "compilers/imcc/imcc.y"
+#line 1936 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 180:
/* Line 1464 of yacc.c */
-#line 1944 "compilers/imcc/imcc.y"
+#line 1937 "compilers/imcc/imcc.y"
{
IdList *l = (yyvsp[(4) - (4)].idlist);
while (l) {
IdList *l1;
- if (l->unique_reg)
- mk_ident_ur(interp, l->id, (yyvsp[(3) - (4)].t));
- else
- mk_ident(interp, l->id, (yyvsp[(3) - (4)].t));
+ mk_ident(interp, l->id, (yyvsp[(3) - (4)].t));
l1 = l;
l = l->next;
mem_sys_free(l1->id);
@@ -4660,7 +4636,7 @@
case 181:
/* Line 1464 of yacc.c */
-#line 1960 "compilers/imcc/imcc.y"
+#line 1950 "compilers/imcc/imcc.y"
{
if ((yyvsp[(4) - (4)].sr)->set != 'P') {
mem_sys_free((yyvsp[(2) - (4)].s));
@@ -4682,7 +4658,7 @@
case 182:
/* Line 1464 of yacc.c */
-#line 1977 "compilers/imcc/imcc.y"
+#line 1967 "compilers/imcc/imcc.y"
{
if ((yyvsp[(4) - (4)].sr)->set != 'P') {
mem_sys_free((yyvsp[(2) - (4)].s));
@@ -4700,14 +4676,14 @@
case 183:
/* Line 1464 of yacc.c */
-#line 1989 "compilers/imcc/imcc.y"
+#line 1979 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 184:
/* Line 1464 of yacc.c */
-#line 1990 "compilers/imcc/imcc.y"
+#line 1980 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
IMCC_INFO(interp)->is_def = 0;
@@ -4718,14 +4694,14 @@
case 186:
/* Line 1464 of yacc.c */
-#line 1997 "compilers/imcc/imcc.y"
+#line 1987 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 187:
/* Line 1464 of yacc.c */
-#line 1998 "compilers/imcc/imcc.y"
+#line 1988 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
IMCC_INFO(interp)->is_def = 0;
@@ -4736,7 +4712,7 @@
case 188:
/* Line 1464 of yacc.c */
-#line 2004 "compilers/imcc/imcc.y"
+#line 1994 "compilers/imcc/imcc.y"
{
(yyval.i) = NULL;
IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4747,7 +4723,7 @@
case 189:
/* Line 1464 of yacc.c */
-#line 2010 "compilers/imcc/imcc.y"
+#line 2000 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
}
@@ -4756,7 +4732,7 @@
case 190:
/* Line 1464 of yacc.c */
-#line 2014 "compilers/imcc/imcc.y"
+#line 2004 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp,
IMCC_INFO(interp)->cur_unit,
@@ -4773,63 +4749,63 @@
case 191:
/* Line 1464 of yacc.c */
-#line 2025 "compilers/imcc/imcc.y"
+#line 2015 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
break;
case 192:
/* Line 1464 of yacc.c */
-#line 2026 "compilers/imcc/imcc.y"
+#line 2016 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 193:
/* Line 1464 of yacc.c */
-#line 2027 "compilers/imcc/imcc.y"
+#line 2017 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 196:
/* Line 1464 of yacc.c */
-#line 2030 "compilers/imcc/imcc.y"
+#line 2020 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 197:
/* Line 1464 of yacc.c */
-#line 2034 "compilers/imcc/imcc.y"
+#line 2024 "compilers/imcc/imcc.y"
{ (yyval.t) = 'I'; }
break;
case 198:
/* Line 1464 of yacc.c */
-#line 2035 "compilers/imcc/imcc.y"
+#line 2025 "compilers/imcc/imcc.y"
{ (yyval.t) = 'N'; }
break;
case 199:
/* Line 1464 of yacc.c */
-#line 2036 "compilers/imcc/imcc.y"
+#line 2026 "compilers/imcc/imcc.y"
{ (yyval.t) = 'S'; }
break;
case 200:
/* Line 1464 of yacc.c */
-#line 2037 "compilers/imcc/imcc.y"
+#line 2027 "compilers/imcc/imcc.y"
{ (yyval.t) = 'P'; }
break;
case 201:
/* Line 1464 of yacc.c */
-#line 2042 "compilers/imcc/imcc.y"
+#line 2032 "compilers/imcc/imcc.y"
{
/* there'd normally be a mem_sys_strdup() here, but the lexer already
* copied the string, so it's safe to use directly */
@@ -4844,49 +4820,49 @@
case 202:
/* Line 1464 of yacc.c */
-#line 2055 "compilers/imcc/imcc.y"
+#line 2045 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
break;
case 203:
/* Line 1464 of yacc.c */
-#line 2057 "compilers/imcc/imcc.y"
+#line 2047 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
break;
case 204:
/* Line 1464 of yacc.c */
-#line 2059 "compilers/imcc/imcc.y"
+#line 2049 "compilers/imcc/imcc.y"
{ (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)); }
break;
case 205:
/* Line 1464 of yacc.c */
-#line 2061 "compilers/imcc/imcc.y"
+#line 2051 "compilers/imcc/imcc.y"
{ (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
break;
case 206:
/* Line 1464 of yacc.c */
-#line 2063 "compilers/imcc/imcc.y"
+#line 2053 "compilers/imcc/imcc.y"
{ (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
break;
case 207:
/* Line 1464 of yacc.c */
-#line 2068 "compilers/imcc/imcc.y"
+#line 2058 "compilers/imcc/imcc.y"
{ (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
break;
case 208:
/* Line 1464 of yacc.c */
-#line 2071 "compilers/imcc/imcc.y"
+#line 2061 "compilers/imcc/imcc.y"
{
add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
IMCC_INFO(interp)->cur_call = NULL;
@@ -4897,7 +4873,7 @@
case 209:
/* Line 1464 of yacc.c */
-#line 2077 "compilers/imcc/imcc.y"
+#line 2067 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
}
@@ -4906,7 +4882,7 @@
case 210:
/* Line 1464 of yacc.c */
-#line 2081 "compilers/imcc/imcc.y"
+#line 2071 "compilers/imcc/imcc.y"
{
IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
IMCC_INFO(interp)->cur_call = NULL;
@@ -4916,7 +4892,7 @@
case 214:
/* Line 1464 of yacc.c */
-#line 2089 "compilers/imcc/imcc.y"
+#line 2079 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
}
@@ -4925,189 +4901,189 @@
case 215:
/* Line 1464 of yacc.c */
-#line 2096 "compilers/imcc/imcc.y"
+#line 2086 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"not"; }
break;
case 216:
/* Line 1464 of yacc.c */
-#line 2097 "compilers/imcc/imcc.y"
+#line 2087 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bnot"; }
break;
case 217:
/* Line 1464 of yacc.c */
-#line 2098 "compilers/imcc/imcc.y"
+#line 2088 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"neg"; }
break;
case 218:
/* Line 1464 of yacc.c */
-#line 2102 "compilers/imcc/imcc.y"
+#line 2092 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 219:
/* Line 1464 of yacc.c */
-#line 2103 "compilers/imcc/imcc.y"
+#line 2093 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 220:
/* Line 1464 of yacc.c */
-#line 2104 "compilers/imcc/imcc.y"
+#line 2094 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 221:
/* Line 1464 of yacc.c */
-#line 2105 "compilers/imcc/imcc.y"
+#line 2095 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 222:
/* Line 1464 of yacc.c */
-#line 2106 "compilers/imcc/imcc.y"
+#line 2096 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 223:
/* Line 1464 of yacc.c */
-#line 2107 "compilers/imcc/imcc.y"
+#line 2097 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 224:
/* Line 1464 of yacc.c */
-#line 2108 "compilers/imcc/imcc.y"
+#line 2098 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"pow"; }
break;
case 225:
/* Line 1464 of yacc.c */
-#line 2109 "compilers/imcc/imcc.y"
+#line 2099 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 226:
/* Line 1464 of yacc.c */
-#line 2110 "compilers/imcc/imcc.y"
+#line 2100 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"iseq"; }
break;
case 227:
/* Line 1464 of yacc.c */
-#line 2111 "compilers/imcc/imcc.y"
+#line 2101 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isne"; }
break;
case 228:
/* Line 1464 of yacc.c */
-#line 2112 "compilers/imcc/imcc.y"
+#line 2102 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isgt"; }
break;
case 229:
/* Line 1464 of yacc.c */
-#line 2113 "compilers/imcc/imcc.y"
+#line 2103 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isge"; }
break;
case 230:
/* Line 1464 of yacc.c */
-#line 2114 "compilers/imcc/imcc.y"
+#line 2104 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"islt"; }
break;
case 231:
/* Line 1464 of yacc.c */
-#line 2115 "compilers/imcc/imcc.y"
+#line 2105 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isle"; }
break;
case 232:
/* Line 1464 of yacc.c */
-#line 2116 "compilers/imcc/imcc.y"
+#line 2106 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 233:
/* Line 1464 of yacc.c */
-#line 2117 "compilers/imcc/imcc.y"
+#line 2107 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 234:
/* Line 1464 of yacc.c */
-#line 2118 "compilers/imcc/imcc.y"
+#line 2108 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 235:
/* Line 1464 of yacc.c */
-#line 2119 "compilers/imcc/imcc.y"
+#line 2109 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"and"; }
break;
case 236:
/* Line 1464 of yacc.c */
-#line 2120 "compilers/imcc/imcc.y"
+#line 2110 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"or"; }
break;
case 237:
/* Line 1464 of yacc.c */
-#line 2121 "compilers/imcc/imcc.y"
+#line 2111 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"xor"; }
break;
case 238:
/* Line 1464 of yacc.c */
-#line 2122 "compilers/imcc/imcc.y"
+#line 2112 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 239:
/* Line 1464 of yacc.c */
-#line 2123 "compilers/imcc/imcc.y"
+#line 2113 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 240:
/* Line 1464 of yacc.c */
-#line 2124 "compilers/imcc/imcc.y"
+#line 2114 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 241:
/* Line 1464 of yacc.c */
-#line 2130 "compilers/imcc/imcc.y"
+#line 2120 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
(yyval.i)->type &= ~ITCALL;
@@ -5118,112 +5094,112 @@
case 242:
/* Line 1464 of yacc.c */
-#line 2135 "compilers/imcc/imcc.y"
+#line 2125 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 243:
/* Line 1464 of yacc.c */
-#line 2142 "compilers/imcc/imcc.y"
+#line 2132 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
break;
case 244:
/* Line 1464 of yacc.c */
-#line 2146 "compilers/imcc/imcc.y"
+#line 2136 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 245:
/* Line 1464 of yacc.c */
-#line 2147 "compilers/imcc/imcc.y"
+#line 2137 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 246:
/* Line 1464 of yacc.c */
-#line 2148 "compilers/imcc/imcc.y"
+#line 2138 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 247:
/* Line 1464 of yacc.c */
-#line 2149 "compilers/imcc/imcc.y"
+#line 2139 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 248:
/* Line 1464 of yacc.c */
-#line 2150 "compilers/imcc/imcc.y"
+#line 2140 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 249:
/* Line 1464 of yacc.c */
-#line 2151 "compilers/imcc/imcc.y"
+#line 2141 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 250:
/* Line 1464 of yacc.c */
-#line 2152 "compilers/imcc/imcc.y"
+#line 2142 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 251:
/* Line 1464 of yacc.c */
-#line 2153 "compilers/imcc/imcc.y"
+#line 2143 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 252:
/* Line 1464 of yacc.c */
-#line 2154 "compilers/imcc/imcc.y"
+#line 2144 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 253:
/* Line 1464 of yacc.c */
-#line 2155 "compilers/imcc/imcc.y"
+#line 2145 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 254:
/* Line 1464 of yacc.c */
-#line 2156 "compilers/imcc/imcc.y"
+#line 2146 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 255:
/* Line 1464 of yacc.c */
-#line 2157 "compilers/imcc/imcc.y"
+#line 2147 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 256:
/* Line 1464 of yacc.c */
-#line 2158 "compilers/imcc/imcc.y"
+#line 2148 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 257:
/* Line 1464 of yacc.c */
-#line 2164 "compilers/imcc/imcc.y"
+#line 2154 "compilers/imcc/imcc.y"
{
(yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
IMCC_INFO(interp) -> regs,
@@ -5236,28 +5212,28 @@
case 258:
/* Line 1464 of yacc.c */
-#line 2174 "compilers/imcc/imcc.y"
+#line 2164 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 259:
/* Line 1464 of yacc.c */
-#line 2175 "compilers/imcc/imcc.y"
+#line 2165 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 260:
/* Line 1464 of yacc.c */
-#line 2176 "compilers/imcc/imcc.y"
+#line 2166 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 261:
/* Line 1464 of yacc.c */
-#line 2178 "compilers/imcc/imcc.y"
+#line 2168 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -5268,7 +5244,7 @@
case 262:
/* Line 1464 of yacc.c */
-#line 2184 "compilers/imcc/imcc.y"
+#line 2174 "compilers/imcc/imcc.y"
{
/* disallow bareword method names; SREG name constants are fine */
const char * const name = (yyvsp[(3) - (3)].sr)->name;
@@ -5287,7 +5263,7 @@
case 263:
/* Line 1464 of yacc.c */
-#line 2198 "compilers/imcc/imcc.y"
+#line 2188 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
(yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'U');
@@ -5298,7 +5274,7 @@
case 264:
/* Line 1464 of yacc.c */
-#line 2204 "compilers/imcc/imcc.y"
+#line 2194 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
(yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -5309,14 +5285,14 @@
case 265:
/* Line 1464 of yacc.c */
-#line 2209 "compilers/imcc/imcc.y"
+#line 2199 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
break;
case 266:
/* Line 1464 of yacc.c */
-#line 2215 "compilers/imcc/imcc.y"
+#line 2205 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -5326,21 +5302,21 @@
case 267:
/* Line 1464 of yacc.c */
-#line 2219 "compilers/imcc/imcc.y"
+#line 2209 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (5)].i); }
break;
case 268:
/* Line 1464 of yacc.c */
-#line 2223 "compilers/imcc/imcc.y"
+#line 2213 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 269:
/* Line 1464 of yacc.c */
-#line 2225 "compilers/imcc/imcc.y"
+#line 2215 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -5355,7 +5331,7 @@
case 270:
/* Line 1464 of yacc.c */
-#line 2235 "compilers/imcc/imcc.y"
+#line 2225 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -5370,7 +5346,7 @@
case 271:
/* Line 1464 of yacc.c */
-#line 2245 "compilers/imcc/imcc.y"
+#line 2235 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
@@ -5382,7 +5358,7 @@
case 272:
/* Line 1464 of yacc.c */
-#line 2252 "compilers/imcc/imcc.y"
+#line 2242 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
@@ -5392,7 +5368,7 @@
case 273:
/* Line 1464 of yacc.c */
-#line 2257 "compilers/imcc/imcc.y"
+#line 2247 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
@@ -5404,70 +5380,70 @@
case 274:
/* Line 1464 of yacc.c */
-#line 2266 "compilers/imcc/imcc.y"
+#line 2256 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
case 275:
/* Line 1464 of yacc.c */
-#line 2270 "compilers/imcc/imcc.y"
+#line 2260 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 276:
/* Line 1464 of yacc.c */
-#line 2271 "compilers/imcc/imcc.y"
+#line 2261 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 277:
/* Line 1464 of yacc.c */
-#line 2275 "compilers/imcc/imcc.y"
+#line 2265 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 278:
/* Line 1464 of yacc.c */
-#line 2276 "compilers/imcc/imcc.y"
+#line 2266 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 279:
/* Line 1464 of yacc.c */
-#line 2277 "compilers/imcc/imcc.y"
+#line 2267 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_CALL_SIG; }
break;
case 280:
/* Line 1464 of yacc.c */
-#line 2280 "compilers/imcc/imcc.y"
+#line 2270 "compilers/imcc/imcc.y"
{ adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 281:
/* Line 1464 of yacc.c */
-#line 2281 "compilers/imcc/imcc.y"
+#line 2271 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 282:
/* Line 1464 of yacc.c */
-#line 2285 "compilers/imcc/imcc.y"
+#line 2275 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
case 283:
/* Line 1464 of yacc.c */
-#line 2290 "compilers/imcc/imcc.y"
+#line 2280 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -5482,7 +5458,7 @@
case 284:
/* Line 1464 of yacc.c */
-#line 2300 "compilers/imcc/imcc.y"
+#line 2290 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
@@ -5493,7 +5469,7 @@
case 285:
/* Line 1464 of yacc.c */
-#line 2306 "compilers/imcc/imcc.y"
+#line 2296 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -5508,7 +5484,7 @@
case 286:
/* Line 1464 of yacc.c */
-#line 2316 "compilers/imcc/imcc.y"
+#line 2306 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
mem_sys_free((yyvsp[(1) - (3)].s));
@@ -5518,28 +5494,28 @@
case 287:
/* Line 1464 of yacc.c */
-#line 2320 "compilers/imcc/imcc.y"
+#line 2310 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 288:
/* Line 1464 of yacc.c */
-#line 2324 "compilers/imcc/imcc.y"
+#line 2314 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 289:
/* Line 1464 of yacc.c */
-#line 2325 "compilers/imcc/imcc.y"
+#line 2315 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 290:
/* Line 1464 of yacc.c */
-#line 2330 "compilers/imcc/imcc.y"
+#line 2320 "compilers/imcc/imcc.y"
{
(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));
}
@@ -5548,7 +5524,7 @@
case 291:
/* Line 1464 of yacc.c */
-#line 2334 "compilers/imcc/imcc.y"
+#line 2324 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
}
@@ -5557,7 +5533,7 @@
case 292:
/* Line 1464 of yacc.c */
-#line 2338 "compilers/imcc/imcc.y"
+#line 2328 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
@@ -5566,7 +5542,7 @@
case 293:
/* Line 1464 of yacc.c */
-#line 2345 "compilers/imcc/imcc.y"
+#line 2335 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
@@ -5575,7 +5551,7 @@
case 294:
/* Line 1464 of yacc.c */
-#line 2349 "compilers/imcc/imcc.y"
+#line 2339 "compilers/imcc/imcc.y"
{
(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));
}
@@ -5584,7 +5560,7 @@
case 295:
/* Line 1464 of yacc.c */
-#line 2353 "compilers/imcc/imcc.y"
+#line 2343 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
}
@@ -5593,91 +5569,91 @@
case 296:
/* Line 1464 of yacc.c */
-#line 2359 "compilers/imcc/imcc.y"
+#line 2349 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 297:
/* Line 1464 of yacc.c */
-#line 2360 "compilers/imcc/imcc.y"
+#line 2350 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 298:
/* Line 1464 of yacc.c */
-#line 2364 "compilers/imcc/imcc.y"
+#line 2354 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"eq"; }
break;
case 299:
/* Line 1464 of yacc.c */
-#line 2365 "compilers/imcc/imcc.y"
+#line 2355 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ne"; }
break;
case 300:
/* Line 1464 of yacc.c */
-#line 2366 "compilers/imcc/imcc.y"
+#line 2356 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"gt"; }
break;
case 301:
/* Line 1464 of yacc.c */
-#line 2367 "compilers/imcc/imcc.y"
+#line 2357 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ge"; }
break;
case 302:
/* Line 1464 of yacc.c */
-#line 2368 "compilers/imcc/imcc.y"
+#line 2358 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lt"; }
break;
case 303:
/* Line 1464 of yacc.c */
-#line 2369 "compilers/imcc/imcc.y"
+#line 2359 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"le"; }
break;
case 306:
/* Line 1464 of yacc.c */
-#line 2378 "compilers/imcc/imcc.y"
+#line 2368 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
case 307:
/* Line 1464 of yacc.c */
-#line 2379 "compilers/imcc/imcc.y"
+#line 2369 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (1)].sr); }
break;
case 308:
/* Line 1464 of yacc.c */
-#line 2383 "compilers/imcc/imcc.y"
+#line 2373 "compilers/imcc/imcc.y"
{ (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
break;
case 310:
/* Line 1464 of yacc.c */
-#line 2388 "compilers/imcc/imcc.y"
+#line 2378 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
break;
case 311:
/* Line 1464 of yacc.c */
-#line 2390 "compilers/imcc/imcc.y"
+#line 2380 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
@@ -5689,7 +5665,7 @@
case 312:
/* Line 1464 of yacc.c */
-#line 2397 "compilers/imcc/imcc.y"
+#line 2387 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
(yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -5699,49 +5675,49 @@
case 314:
/* Line 1464 of yacc.c */
-#line 2404 "compilers/imcc/imcc.y"
+#line 2394 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 315:
/* Line 1464 of yacc.c */
-#line 2405 "compilers/imcc/imcc.y"
+#line 2395 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 316:
/* Line 1464 of yacc.c */
-#line 2409 "compilers/imcc/imcc.y"
+#line 2399 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 317:
/* Line 1464 of yacc.c */
-#line 2410 "compilers/imcc/imcc.y"
+#line 2400 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 318:
/* Line 1464 of yacc.c */
-#line 2414 "compilers/imcc/imcc.y"
+#line 2404 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 319:
/* Line 1464 of yacc.c */
-#line 2415 "compilers/imcc/imcc.y"
+#line 2405 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 324:
/* Line 1464 of yacc.c */
-#line 2429 "compilers/imcc/imcc.y"
+#line 2419 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
}
@@ -5750,7 +5726,7 @@
case 325:
/* Line 1464 of yacc.c */
-#line 2433 "compilers/imcc/imcc.y"
+#line 2423 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -5761,7 +5737,7 @@
case 326:
/* Line 1464 of yacc.c */
-#line 2441 "compilers/imcc/imcc.y"
+#line 2431 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
}
@@ -5770,7 +5746,7 @@
case 327:
/* Line 1464 of yacc.c */
-#line 2445 "compilers/imcc/imcc.y"
+#line 2435 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -5781,14 +5757,14 @@
case 328:
/* Line 1464 of yacc.c */
-#line 2453 "compilers/imcc/imcc.y"
+#line 2443 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
break;
case 329:
/* Line 1464 of yacc.c */
-#line 2455 "compilers/imcc/imcc.y"
+#line 2445 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
(yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -5798,7 +5774,7 @@
case 330:
/* Line 1464 of yacc.c */
-#line 2463 "compilers/imcc/imcc.y"
+#line 2453 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
}
@@ -5807,70 +5783,70 @@
case 331:
/* Line 1464 of yacc.c */
-#line 2469 "compilers/imcc/imcc.y"
+#line 2459 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
break;
case 332:
/* Line 1464 of yacc.c */
-#line 2470 "compilers/imcc/imcc.y"
+#line 2460 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
break;
case 333:
/* Line 1464 of yacc.c */
-#line 2471 "compilers/imcc/imcc.y"
+#line 2461 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
break;
case 334:
/* Line 1464 of yacc.c */
-#line 2472 "compilers/imcc/imcc.y"
+#line 2462 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
break;
case 335:
/* Line 1464 of yacc.c */
-#line 2473 "compilers/imcc/imcc.y"
+#line 2463 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 336:
/* Line 1464 of yacc.c */
-#line 2477 "compilers/imcc/imcc.y"
+#line 2467 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 337:
/* Line 1464 of yacc.c */
-#line 2478 "compilers/imcc/imcc.y"
+#line 2468 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 338:
/* Line 1464 of yacc.c */
-#line 2479 "compilers/imcc/imcc.y"
+#line 2469 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 339:
/* Line 1464 of yacc.c */
-#line 2480 "compilers/imcc/imcc.y"
+#line 2470 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
/* Line 1464 of yacc.c */
-#line 5863 "compilers/imcc/imcparser.c"
+#line 5839 "compilers/imcc/imcparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6082,7 +6058,7 @@
/* Line 1684 of yacc.c */
-#line 2486 "compilers/imcc/imcc.y"
+#line 2476 "compilers/imcc/imcc.y"
/* I need this prototype somewhere... */
Modified: trunk/compilers/imcc/parser.h
==============================================================================
--- trunk/compilers/imcc/parser.h Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/parser.h Sun May 9 04:49:19 2010 (r46427)
@@ -8,7 +8,6 @@
typedef struct _IdList {
char* id;
- int unique_reg;
struct _IdList* next;
} IdList;
Modified: trunk/compilers/imcc/reg_alloc.c
==============================================================================
--- trunk/compilers/imcc/reg_alloc.c Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/reg_alloc.c Sun May 9 04:49:19 2010 (r46427)
@@ -44,11 +44,6 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*unit);
-static void allocate_non_volatile(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*unit);
-
static void allocate_uniq(PARROT_INTERP, ARGMOD(IMC_Unit *unit), int usage)
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -112,9 +107,6 @@
#define ASSERT_ARGS_allocate_lexicals __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_allocate_non_volatile __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(unit))
#define ASSERT_ARGS_allocate_uniq __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(unit))
@@ -226,7 +218,7 @@
if (IMCC_INFO(interp)->allocator == IMCC_GRAPH_ALLOCATOR)
life_analysis(interp, unit);
- allocate_non_volatile(interp, unit);
+ allocate_uniq(interp, unit, 0);
} while (!IMCC_INFO(interp)->dont_optimize && optimize(interp, unit));
if (IMCC_INFO(interp)->debug & DEBUG_IMC)
@@ -787,22 +779,6 @@
/*
-=item C<static void allocate_non_volatile(PARROT_INTERP, IMC_Unit *unit)>
-
-=cut
-
-*/
-
-static void
-allocate_non_volatile(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
-{
- ASSERT_ARGS(allocate_non_volatile)
- IMCC_debug(interp, DEBUG_IMC, "allocate non_volatile\n");
- allocate_uniq(interp, unit, U_NON_VOLATILE);
-}
-
-/*
-
=back
=cut
Modified: trunk/compilers/imcc/symreg.c
==============================================================================
--- trunk/compilers/imcc/symreg.c Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/symreg.c Sun May 9 04:49:19 2010 (r46427)
@@ -676,29 +676,6 @@
/*
-=item C<SymReg* mk_ident_ur(PARROT_INTERP, const char *name, int t)>
-
-Creates and returns a SymReg representing a unique (non-volatile) register.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_IGNORABLE_RESULT
-SymReg*
-mk_ident_ur(PARROT_INTERP, ARGIN(const char *name), int t)
-{
- ASSERT_ARGS(mk_ident_ur)
- SymReg * const r = mk_ident(interp, name, t);
- r->usage |= U_NON_VOLATILE;
-
- return r;
-}
-
-
-/*
-
=item C<static SymReg * mk_pmc_const_2(PARROT_INTERP, IMC_Unit *unit, SymReg
*left, SymReg *rhs)>
Modified: trunk/compilers/imcc/symreg.h
==============================================================================
--- trunk/compilers/imcc/symreg.h Sun May 9 04:37:35 2010 (r46426)
+++ trunk/compilers/imcc/symreg.h Sun May 9 04:49:19 2010 (r46427)
@@ -24,8 +24,7 @@
VT_ENCODED = VARTYPE_BIT(16), /* unicode string constant */
VT_OPT_FLAG = VARTYPE_BIT(17), /* var :opt_flag */
VT_NAMED = VARTYPE_BIT(18), /* var :named(name) */
- VT_UNIQUE_REG = VARTYPE_BIT(19),
- VT_CALL_SIG = VARTYPE_BIT(20)
+ VT_CALL_SIG = VARTYPE_BIT(19)
};
#undef VARTYPE_BIT
@@ -56,8 +55,7 @@
U_GLOBAL = 1 << 3, /* symbol is global (fixup) */
U_LEXICAL = 1 << 4, /* symbol is lexical */
U_FIXUP = 1 << 5, /* maybe not global, force fixup */
- U_NON_VOLATILE = 1 << 6, /* needs preserving */
- U_SUBID_LOOKUP = 1 << 7 /* .const 'Sub' lookup is done by subid */
+ U_SUBID_LOOKUP = 1 << 6 /* .const 'Sub' lookup is done by subid */
};
typedef struct _SymReg {
More information about the parrot-commits
mailing list