Front page | perl.cvs.parrot |
Postings from January 2009
[svn:parrot] r34769 - trunk/compilers/imcc
From:
chromatic
Date:
January 1, 2009 14:58
Subject:
[svn:parrot] r34769 - trunk/compilers/imcc
Message ID:
20090101225703.2E633CB9FA@x12.develooper.com
Author: chromatic
Date: Thu Jan 1 14:57:02 2009
New Revision: 34769
Modified:
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/imcparser.c
trunk/compilers/imcc/imcparser.h
Log:
[IMCC] Removed parameter assertions which made --maintainer mode not compile.
Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y (original)
+++ trunk/compilers/imcc/imcc.y Thu Jan 1 14:57:02 2009
@@ -329,7 +329,6 @@
va_list ap;
SymReg *r[IMCC_MAX_FIX_REGS];
int i;
- ASSERT_ARGS(mk_i);
for (p = opname, q = fmt; *q && *q != ' ';)
*p++ = *q++;
@@ -500,7 +499,6 @@
{
Instruction * const ins = _mk_instruction("", "%s:", 1, &r0, 0);
- ASSERT_ARGS(ins_label);
ins->type = ITLABEL;
r0->first_ins = ins;
@@ -515,7 +513,6 @@
iLABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0))
{
Instruction * const i = INS_LABEL(interp, unit, r0, 1);
- ASSERT_ARGS(ilabel);
i->line = IMCC_INFO(interp)->line;
clear_state(interp);
@@ -527,7 +524,6 @@
iSUBROUTINE(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r))
{
Instruction * const i = iLABEL(interp, unit, r);
- ASSERT_ARGS(isubroutine);
r->type = (r->type & VT_ENCODED) ? VT_PCC_SUB|VT_ENCODED : VT_PCC_SUB;
r->pcc_sub = mem_allocate_zeroed_typed(pcc_sub_t);
@@ -547,7 +543,6 @@
iINDEXFETCH(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
ARGIN(SymReg *r2))
{
- ASSERT_ARGS(iindexfetch);
IMCC_INFO(interp) -> keyvec |= KEY_BIT(2);
return MK_I(interp, unit, "set %s, %s[%s]", 3, r0, r1, r2);
}
@@ -561,7 +556,6 @@
iINDEXSET(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
ARGIN(SymReg *r2))
{
- ASSERT_ARGS(iindexset);
if (r0->set == 'P') {
IMCC_INFO(interp)->keyvec |= KEY_BIT(1);
MK_I(interp, unit, "set %s[%s], %s", 3, r0, r1, r2);
@@ -590,7 +584,6 @@
char name[128];
SymReg *r;
Instruction *i;
- ASSERT_ARGS(imcc_create_itcall_label);
snprintf(name, sizeof (name), "%cpcc_sub_call_%d", IMCC_INTERNAL_CHAR,
IMCC_INFO(interp)->cnr++);
@@ -634,7 +627,6 @@
void
IMCC_itcall_sub(PARROT_INTERP, ARGIN(SymReg *sub))
{
- ASSERT_ARGS(imcc_itcall_sub);
IMCC_INFO(interp)->cur_call->pcc_sub->sub = sub;
if (IMCC_INFO(interp)->cur_obj) {
if (IMCC_INFO(interp)->cur_obj->set != 'P')
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c (original)
+++ trunk/compilers/imcc/imcparser.c Thu Jan 1 14:57:02 2009
@@ -470,6 +470,7 @@
ARGMOD(SymReg *r0))
__attribute__nonnull__(1)
__attribute__nonnull__(3)
+ FUNC_MODIFIES(*unit)
FUNC_MODIFIES(*r0);
PARROT_WARN_UNUSED_RESULT
@@ -483,6 +484,7 @@
ARGMOD(SymReg *r))
__attribute__nonnull__(1)
__attribute__nonnull__(3)
+ FUNC_MODIFIES(*unit)
FUNC_MODIFIES(*r);
PARROT_IGNORABLE_RESULT
@@ -545,6 +547,68 @@
__attribute__nonnull__(3)
FUNC_MODIFIES(*r);
+#define ASSERT_ARGS_add_pcc_named_arg assert(interp); \
+ assert(cur_call); \
+ assert(name); \
+ assert(value);
+#define ASSERT_ARGS_add_pcc_named_param assert(interp); \
+ assert(cur_call); \
+ assert(name); \
+ assert(value);
+#define ASSERT_ARGS_add_pcc_named_result assert(interp); \
+ assert(cur_call); \
+ assert(name); \
+ assert(value);
+#define ASSERT_ARGS_add_pcc_named_return assert(interp); \
+ assert(cur_call); \
+ assert(name); \
+ assert(value);
+#define ASSERT_ARGS_adv_named_set assert(interp); \
+ assert(name);
+#define ASSERT_ARGS_begin_return_or_yield assert(interp);
+#define ASSERT_ARGS_clear_state assert(interp);
+#define ASSERT_ARGS_do_loadlib assert(interp); \
+ assert(lib);
+#define ASSERT_ARGS_func_ins assert(interp); \
+ assert(unit); \
+ assert(lhs); \
+ assert(op); \
+ assert(r);
+#define ASSERT_ARGS_iINDEXFETCH assert(interp); \
+ assert(unit); \
+ assert(r0); \
+ assert(r1); \
+ assert(r2);
+#define ASSERT_ARGS_iINDEXSET assert(interp); \
+ assert(unit); \
+ assert(r0); \
+ assert(r1); \
+ assert(r2);
+#define ASSERT_ARGS_iLABEL assert(interp); \
+ assert(r0);
+#define ASSERT_ARGS_inv_op assert(op);
+#define ASSERT_ARGS_iSUBROUTINE assert(interp); \
+ assert(r);
+#define ASSERT_ARGS_MK_I assert(interp); \
+ assert(unit); \
+ assert(fmt);
+#define ASSERT_ARGS_mk_pmc_const assert(interp); \
+ assert(unit); \
+ assert(type); \
+ assert(left); \
+ assert(constant);
+#define ASSERT_ARGS_mk_pmc_const_named assert(interp); \
+ assert(unit); \
+ assert(name); \
+ assert(left); \
+ assert(constant);
+#define ASSERT_ARGS_mk_sub_address_fromc assert(interp); \
+ assert(name);
+#define ASSERT_ARGS_mk_sub_address_u assert(interp); \
+ assert(name);
+#define ASSERT_ARGS_set_lexical assert(interp); \
+ assert(r); \
+ assert(name);
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -621,6 +685,7 @@
SymReg *rhs;
SymReg *r[3];
char *name;
+ ASSERT_ARGS(mk_pmc_const);
if (left->type == VTADDRESS) { /* IDENTIFIER */
if (IMCC_INFO(interp)->state->pasm_file) {
@@ -676,6 +741,7 @@
const int ascii = (*constant == '\'' || *constant == '"');
char *unquoted_name = str_dup(name + 1);
size_t name_length = strlen(unquoted_name) - 1;
+ ASSERT_ARGS(mk_pmc_const_named);
unquoted_name[name_length] = '\0';
@@ -728,6 +794,7 @@
ARGMOD(SymReg **r), int n, int keyv, int emit)
{
int i;
+ ASSERT_ARGS(func_ins);
/* shift regs up by 1 */
for (i = n - 1; i >= 0; --i)
r[i+1] = r[i];
@@ -745,6 +812,7 @@
static void
clear_state(PARROT_INTERP)
{
+ ASSERT_ARGS(clear_state);
IMCC_INFO(interp) -> nargs = 0;
IMCC_INFO(interp) -> keyvec = 0;
}
@@ -829,6 +897,7 @@
inv_op(ARGIN(const char *op))
{
int n;
+ ASSERT_ARGS(inv_op);
return get_neg_op(op, &n);
}
@@ -859,6 +928,7 @@
/* name is a quoted sub name */
SymReg *r;
char *name_copy = str_dup(name + 1);
+ ASSERT_ARGS(mk_sub_address_fromc);
name_copy[strlen(name_copy) - 1] = '\0';
r = mk_sub_address(interp, name_copy);
@@ -872,6 +942,7 @@
mk_sub_address_u(PARROT_INTERP, ARGIN(const char *name))
{
SymReg * const r = mk_sub_address(interp, name);
+ ASSERT_ARGS(mk_sub_address_u);
r->type |= VT_ENCODED;
return r;
@@ -899,6 +970,7 @@
Instruction *i;
Instruction * const ins = IMCC_INFO(interp)->cur_unit->instructions;
char name[128];
+ ASSERT_ARGS(begin_return_or_yield);
if (!ins || !ins->symregs[0] || !(ins->symregs[0]->type & VT_PCC_SUB))
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -917,6 +989,7 @@
set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
{
SymReg * const n = mk_const(interp, name, 'S');
+ ASSERT_ARGS(set_lexical);
r->usage |= U_LEXICAL;
@@ -935,6 +1008,7 @@
ARGIN(SymReg *value))
{
SymReg * const r = mk_const(interp, name, 'S');
+ ASSERT_ARGS(add_pcc_named_arg);
r->type |= VT_NAMED;
@@ -947,6 +1021,7 @@
ARGIN(SymReg *value))
{
SymReg * const r = mk_const(interp, name, 'S');
+ ASSERT_ARGS(add_pcc_named_result);
r->type |= VT_NAMED;
add_pcc_result(cur_call, r);
@@ -958,6 +1033,7 @@
ARGIN(SymReg *value))
{
SymReg * const r = mk_const(interp, name, 'S');
+ ASSERT_ARGS(add_pcc_named_param);
r->type |= VT_NAMED;
add_pcc_arg(cur_call, r);
@@ -969,6 +1045,7 @@
ARGIN(SymReg *value))
{
SymReg * const r = mk_const(interp, name, 'S');
+ ASSERT_ARGS(add_pcc_named_return);
r->type |= VT_NAMED;
add_pcc_result(cur_call, r);
@@ -979,6 +1056,7 @@
static void
adv_named_set(PARROT_INTERP, ARGIN(char *name))
{
+ ASSERT_ARGS(adv_named_set);
if (IMCC_INFO(interp)->adv_named_id) {
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
"Named parameter with more than one name.\n");
@@ -991,6 +1069,7 @@
{
STRING * const s = string_unescape_cstring(interp, lib + 1, '"', NULL);
PMC *ignored = Parrot_load_lib(interp, s, NULL);
+ ASSERT_ARGS(do_loadlib);
UNUSED(ignored);
Parrot_register_HLL_lib(interp, s);
}
@@ -1019,7 +1098,7 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 678 "compilers/imcc/imcc.y"
+#line 757 "compilers/imcc/imcc.y"
{
IdList * idlist;
int t;
@@ -1027,8 +1106,8 @@
SymReg * sr;
Instruction *i;
}
-/* Line 193 of yacc.c. */
-#line 1021 "compilers/imcc/imcparser.c"
+/* Line 187 of yacc.c. */
+#line 1100 "compilers/imcc/imcparser.c"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@@ -1041,7 +1120,7 @@
/* Line 216 of yacc.c. */
-#line 1034 "compilers/imcc/imcparser.c"
+#line 1113 "compilers/imcc/imcparser.c"
#ifdef short
# undef short
@@ -1467,41 +1546,41 @@
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 772, 772, 776, 777, 781, 782, 783, 789, 795,
- 796, 797, 798, 802, 803, 812, 817, 825, 834, 852,
- 852, 861, 861, 867, 867, 874, 875, 879, 880, 884,
- 885, 886, 887, 888, 889, 890, 893, 893, 902, 901,
- 913, 917, 925, 929, 933, 933, 945, 947, 951, 966,
- 974, 979, 983, 987, 978, 999, 1000, 1001, 1014, 1014,
- 1018, 1032, 1036, 1042, 1051, 1057, 1066, 1072, 1081, 1087,
- 1096, 1104, 1109, 1120, 1123, 1128, 1136, 1137, 1138, 1139,
- 1140, 1151, 1162, 1165, 1167, 1172, 1171, 1204, 1205, 1209,
- 1210, 1214, 1215, 1219, 1220, 1224, 1225, 1226, 1227, 1228,
- 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1241,
- 1246, 1250, 1255, 1259, 1263, 1268, 1277, 1278, 1282, 1287,
- 1288, 1296, 1297, 1297, 1312, 1313, 1317, 1318, 1319, 1320,
- 1321, 1322, 1327, 1327, 1330, 1338, 1338, 1344, 1345, 1350,
- 1358, 1359, 1364, 1372, 1376, 1381, 1380, 1393, 1394, 1398,
- 1399, 1409, 1413, 1423, 1431, 1432, 1444, 1448, 1450, 1451,
- 1452, 1453, 1457, 1458, 1462, 1463, 1467, 1476, 1477, 1488,
- 1495, 1504, 1514, 1515, 1520, 1521, 1522, 1522, 1538, 1542,
- 1542, 1549, 1550, 1550, 1556, 1562, 1563, 1575, 1576, 1577,
- 1578, 1579, 1580, 1584, 1585, 1586, 1587, 1591, 1604, 1606,
- 1608, 1610, 1612, 1614, 1616, 1618, 1620, 1622, 1624, 1626,
- 1628, 1632, 1634, 1636, 1639, 1646, 1645, 1654, 1655, 1656,
- 1657, 1665, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676,
- 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686,
- 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1699, 1698, 1710,
- 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726,
- 1727, 1728, 1729, 1734, 1745, 1746, 1747, 1748, 1754, 1768,
- 1774, 1780, 1779, 1788, 1789, 1799, 1809, 1815, 1824, 1828,
- 1829, 1833, 1834, 1837, 1841, 1845, 1855, 1860, 1870, 1875,
- 1879, 1880, 1884, 1888, 1892, 1899, 1903, 1907, 1914, 1915,
- 1919, 1920, 1921, 1922, 1923, 1924, 1928, 1929, 1933, 1934,
- 1938, 1939, 1943, 1944, 1951, 1958, 1959, 1960, 1964, 1965,
- 1969, 1970, 1974, 1975, 1979, 1980, 1984, 1984, 1997, 1997,
- 2010, 2011, 2019, 2028, 2029, 2030, 2031, 2032, 2036, 2037,
- 2038, 2039
+ 0, 851, 851, 855, 856, 860, 861, 862, 868, 874,
+ 875, 876, 877, 881, 882, 891, 896, 904, 913, 931,
+ 931, 940, 940, 946, 946, 953, 954, 958, 959, 963,
+ 964, 965, 966, 967, 968, 969, 972, 972, 981, 980,
+ 992, 996, 1004, 1008, 1012, 1012, 1024, 1026, 1030, 1045,
+ 1053, 1058, 1062, 1066, 1057, 1078, 1079, 1080, 1093, 1093,
+ 1097, 1111, 1115, 1121, 1130, 1136, 1145, 1151, 1160, 1166,
+ 1175, 1183, 1188, 1199, 1202, 1207, 1215, 1216, 1217, 1218,
+ 1219, 1230, 1241, 1244, 1246, 1251, 1250, 1283, 1284, 1288,
+ 1289, 1293, 1294, 1298, 1299, 1303, 1304, 1305, 1306, 1307,
+ 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1320,
+ 1325, 1329, 1334, 1338, 1342, 1347, 1356, 1357, 1361, 1366,
+ 1367, 1375, 1376, 1376, 1391, 1392, 1396, 1397, 1398, 1399,
+ 1400, 1401, 1406, 1406, 1409, 1417, 1417, 1423, 1424, 1429,
+ 1437, 1438, 1443, 1451, 1455, 1460, 1459, 1472, 1473, 1477,
+ 1478, 1488, 1492, 1502, 1510, 1511, 1523, 1527, 1529, 1530,
+ 1531, 1532, 1536, 1537, 1541, 1542, 1546, 1555, 1556, 1567,
+ 1574, 1583, 1593, 1594, 1599, 1600, 1601, 1601, 1617, 1621,
+ 1621, 1628, 1629, 1629, 1635, 1641, 1642, 1654, 1655, 1656,
+ 1657, 1658, 1659, 1663, 1664, 1665, 1666, 1670, 1683, 1685,
+ 1687, 1689, 1691, 1693, 1695, 1697, 1699, 1701, 1703, 1705,
+ 1707, 1711, 1713, 1715, 1718, 1725, 1724, 1733, 1734, 1735,
+ 1736, 1744, 1745, 1746, 1750, 1751, 1752, 1753, 1754, 1755,
+ 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765,
+ 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1778, 1777, 1789,
+ 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805,
+ 1806, 1807, 1808, 1813, 1824, 1825, 1826, 1827, 1833, 1847,
+ 1853, 1859, 1858, 1867, 1868, 1878, 1888, 1894, 1903, 1907,
+ 1908, 1912, 1913, 1916, 1920, 1924, 1934, 1939, 1949, 1954,
+ 1958, 1959, 1963, 1967, 1971, 1978, 1982, 1986, 1993, 1994,
+ 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2012, 2013,
+ 2017, 2018, 2022, 2023, 2030, 2037, 2038, 2039, 2043, 2044,
+ 2048, 2049, 2053, 2054, 2058, 2059, 2063, 2063, 2076, 2076,
+ 2089, 2090, 2098, 2107, 2108, 2109, 2110, 2111, 2115, 2116,
+ 2117, 2118
};
#endif
@@ -2863,22 +2942,22 @@
switch (yyn)
{
case 2:
-#line 772 "compilers/imcc/imcc.y"
+#line 851 "compilers/imcc/imcc.y"
{ if (yynerrs) YYABORT; (yyval.i) = 0; }
break;
case 5:
-#line 781 "compilers/imcc/imcc.y"
+#line 860 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 6:
-#line 782 "compilers/imcc/imcc.y"
+#line 861 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 7:
-#line 784 "compilers/imcc/imcc.y"
+#line 863 "compilers/imcc/imcc.y"
{
(yyval.i) = (yyvsp[(1) - (1)].i);
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -2887,7 +2966,7 @@
break;
case 8:
-#line 790 "compilers/imcc/imcc.y"
+#line 869 "compilers/imcc/imcc.y"
{
(yyval.i) = (yyvsp[(1) - (1)].i);
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -2896,32 +2975,32 @@
break;
case 9:
-#line 795 "compilers/imcc/imcc.y"
+#line 874 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 10:
-#line 796 "compilers/imcc/imcc.y"
+#line 875 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 11:
-#line 797 "compilers/imcc/imcc.y"
+#line 876 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 12:
-#line 798 "compilers/imcc/imcc.y"
+#line 877 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 13:
-#line 802 "compilers/imcc/imcc.y"
+#line 881 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 14:
-#line 804 "compilers/imcc/imcc.y"
+#line 883 "compilers/imcc/imcc.y"
{
(yyval.i) = 0;
do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -2930,7 +3009,7 @@
break;
case 15:
-#line 813 "compilers/imcc/imcc.y"
+#line 892 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
set_filename(interp, (yyvsp[(4) - (5)].s));
@@ -2938,14 +3017,14 @@
break;
case 16:
-#line 818 "compilers/imcc/imcc.y"
+#line 897 "compilers/imcc/imcc.y"
{
set_filename(interp, (yyvsp[(2) - (3)].s));
}
break;
case 17:
-#line 826 "compilers/imcc/imcc.y"
+#line 905 "compilers/imcc/imcc.y"
{
STRING * const hll_name = string_unescape_cstring(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
CONTEXT(interp)->current_HLL =
@@ -2957,7 +3036,7 @@
break;
case 18:
-#line 835 "compilers/imcc/imcc.y"
+#line 914 "compilers/imcc/imcc.y"
{
Parrot_Context *ctx = CONTEXT(interp);
STRING * const built_in_name =
@@ -2975,12 +3054,12 @@
break;
case 19:
-#line 852 "compilers/imcc/imcc.y"
+#line 931 "compilers/imcc/imcc.y"
{ is_def = 1; }
break;
case 20:
-#line 853 "compilers/imcc/imcc.y"
+#line 932 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
mem_sys_free((yyvsp[(4) - (6)].s));
@@ -2989,12 +3068,12 @@
break;
case 21:
-#line 861 "compilers/imcc/imcc.y"
+#line 940 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 22:
-#line 862 "compilers/imcc/imcc.y"
+#line 941 "compilers/imcc/imcc.y"
{
(yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
is_def = 0;
@@ -3002,12 +3081,12 @@
break;
case 23:
-#line 867 "compilers/imcc/imcc.y"
+#line 946 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 24:
-#line 868 "compilers/imcc/imcc.y"
+#line 947 "compilers/imcc/imcc.y"
{
(yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
is_def = 0;
@@ -3015,37 +3094,37 @@
break;
case 29:
-#line 884 "compilers/imcc/imcc.y"
+#line 963 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 30:
-#line 885 "compilers/imcc/imcc.y"
+#line 964 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 31:
-#line 886 "compilers/imcc/imcc.y"
+#line 965 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 32:
-#line 887 "compilers/imcc/imcc.y"
+#line 966 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 33:
-#line 888 "compilers/imcc/imcc.y"
+#line 967 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 36:
-#line 893 "compilers/imcc/imcc.y"
+#line 972 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 37:
-#line 895 "compilers/imcc/imcc.y"
+#line 974 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
(yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3055,7 +3134,7 @@
break;
case 38:
-#line 902 "compilers/imcc/imcc.y"
+#line 981 "compilers/imcc/imcc.y"
{
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3063,7 +3142,7 @@
break;
case 39:
-#line 907 "compilers/imcc/imcc.y"
+#line 986 "compilers/imcc/imcc.y"
{
(yyval.i) = iSUBROUTINE(interp,
IMCC_INFO(interp)->cur_unit,
@@ -3073,14 +3152,14 @@
break;
case 40:
-#line 914 "compilers/imcc/imcc.y"
+#line 993 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
}
break;
case 41:
-#line 918 "compilers/imcc/imcc.y"
+#line 997 "compilers/imcc/imcc.y"
{
SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
set_lexical(interp, r, (yyvsp[(2) - (4)].s));
@@ -3091,17 +3170,17 @@
break;
case 42:
-#line 925 "compilers/imcc/imcc.y"
+#line 1004 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 44:
-#line 933 "compilers/imcc/imcc.y"
+#line 1012 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
break;
case 45:
-#line 936 "compilers/imcc/imcc.y"
+#line 1015 "compilers/imcc/imcc.y"
{
/* if (optimizer_level & OPT_PASM)
imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3112,7 +3191,7 @@
break;
case 48:
-#line 952 "compilers/imcc/imcc.y"
+#line 1031 "compilers/imcc/imcc.y"
{
int re_open = 0;
(yyval.i) = 0;
@@ -3127,7 +3206,7 @@
break;
case 49:
-#line 967 "compilers/imcc/imcc.y"
+#line 1046 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->in_slice)
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3138,26 +3217,26 @@
break;
case 50:
-#line 974 "compilers/imcc/imcc.y"
+#line 1053 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
case 51:
-#line 979 "compilers/imcc/imcc.y"
+#line 1058 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
}
break;
case 52:
-#line 983 "compilers/imcc/imcc.y"
+#line 1062 "compilers/imcc/imcc.y"
{
iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
}
break;
case 53:
-#line 987 "compilers/imcc/imcc.y"
+#line 1066 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
@@ -3168,22 +3247,22 @@
break;
case 54:
-#line 995 "compilers/imcc/imcc.y"
+#line 1074 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 55:
-#line 999 "compilers/imcc/imcc.y"
+#line 1078 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 56:
-#line 1000 "compilers/imcc/imcc.y"
+#line 1079 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 57:
-#line 1002 "compilers/imcc/imcc.y"
+#line 1081 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3196,17 +3275,17 @@
break;
case 58:
-#line 1014 "compilers/imcc/imcc.y"
+#line 1093 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 59:
-#line 1014 "compilers/imcc/imcc.y"
+#line 1093 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }
break;
case 60:
-#line 1019 "compilers/imcc/imcc.y"
+#line 1098 "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));
@@ -3218,12 +3297,12 @@
break;
case 61:
-#line 1032 "compilers/imcc/imcc.y"
+#line 1111 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 62:
-#line 1037 "compilers/imcc/imcc.y"
+#line 1116 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3232,7 +3311,7 @@
break;
case 63:
-#line 1043 "compilers/imcc/imcc.y"
+#line 1122 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3241,7 +3320,7 @@
break;
case 64:
-#line 1052 "compilers/imcc/imcc.y"
+#line 1131 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3250,7 +3329,7 @@
break;
case 65:
-#line 1058 "compilers/imcc/imcc.y"
+#line 1137 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3259,7 +3338,7 @@
break;
case 66:
-#line 1067 "compilers/imcc/imcc.y"
+#line 1146 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3268,7 +3347,7 @@
break;
case 67:
-#line 1073 "compilers/imcc/imcc.y"
+#line 1152 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3277,7 +3356,7 @@
break;
case 68:
-#line 1082 "compilers/imcc/imcc.y"
+#line 1161 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3286,7 +3365,7 @@
break;
case 69:
-#line 1088 "compilers/imcc/imcc.y"
+#line 1167 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3295,7 +3374,7 @@
break;
case 70:
-#line 1097 "compilers/imcc/imcc.y"
+#line 1176 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3303,7 +3382,7 @@
break;
case 71:
-#line 1105 "compilers/imcc/imcc.y"
+#line 1184 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3311,7 +3390,7 @@
break;
case 72:
-#line 1110 "compilers/imcc/imcc.y"
+#line 1189 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3321,14 +3400,14 @@
break;
case 73:
-#line 1120 "compilers/imcc/imcc.y"
+#line 1199 "compilers/imcc/imcc.y"
{
add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
}
break;
case 74:
-#line 1124 "compilers/imcc/imcc.y"
+#line 1203 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3336,7 +3415,7 @@
break;
case 75:
-#line 1129 "compilers/imcc/imcc.y"
+#line 1208 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3344,27 +3423,27 @@
break;
case 76:
-#line 1136 "compilers/imcc/imcc.y"
+#line 1215 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "INTVAL", 'S'); }
break;
case 77:
-#line 1137 "compilers/imcc/imcc.y"
+#line 1216 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
break;
case 78:
-#line 1138 "compilers/imcc/imcc.y"
+#line 1217 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "PMC", 'S'); }
break;
case 79:
-#line 1139 "compilers/imcc/imcc.y"
+#line 1218 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "STRING", 'S'); }
break;
case 80:
-#line 1141 "compilers/imcc/imcc.y"
+#line 1220 "compilers/imcc/imcc.y"
{
SymReg *r;
if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3378,7 +3457,7 @@
break;
case 81:
-#line 1152 "compilers/imcc/imcc.y"
+#line 1231 "compilers/imcc/imcc.y"
{
SymReg *r;
if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3392,12 +3471,12 @@
break;
case 82:
-#line 1162 "compilers/imcc/imcc.y"
+#line 1241 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); }
break;
case 85:
-#line 1172 "compilers/imcc/imcc.y"
+#line 1251 "compilers/imcc/imcc.y"
{
char name[128];
SymReg *r, *r1;
@@ -3424,82 +3503,82 @@
break;
case 86:
-#line 1200 "compilers/imcc/imcc.y"
+#line 1279 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 87:
-#line 1204 "compilers/imcc/imcc.y"
+#line 1283 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
break;
case 88:
-#line 1205 "compilers/imcc/imcc.y"
+#line 1284 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
break;
case 89:
-#line 1209 "compilers/imcc/imcc.y"
+#line 1288 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 90:
-#line 1210 "compilers/imcc/imcc.y"
+#line 1289 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
break;
case 91:
-#line 1214 "compilers/imcc/imcc.y"
+#line 1293 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 93:
-#line 1219 "compilers/imcc/imcc.y"
+#line 1298 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (1)].t); }
break;
case 94:
-#line 1220 "compilers/imcc/imcc.y"
+#line 1299 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 95:
-#line 1224 "compilers/imcc/imcc.y"
+#line 1303 "compilers/imcc/imcc.y"
{ (yyval.t) = P_LOAD; }
break;
case 96:
-#line 1225 "compilers/imcc/imcc.y"
+#line 1304 "compilers/imcc/imcc.y"
{ (yyval.t) = P_INIT; }
break;
case 97:
-#line 1226 "compilers/imcc/imcc.y"
+#line 1305 "compilers/imcc/imcc.y"
{ (yyval.t) = P_MAIN; }
break;
case 98:
-#line 1227 "compilers/imcc/imcc.y"
+#line 1306 "compilers/imcc/imcc.y"
{ (yyval.t) = P_IMMEDIATE; }
break;
case 99:
-#line 1228 "compilers/imcc/imcc.y"
+#line 1307 "compilers/imcc/imcc.y"
{ (yyval.t) = P_POSTCOMP; }
break;
case 100:
-#line 1229 "compilers/imcc/imcc.y"
+#line 1308 "compilers/imcc/imcc.y"
{ (yyval.t) = P_ANON; }
break;
case 101:
-#line 1230 "compilers/imcc/imcc.y"
+#line 1309 "compilers/imcc/imcc.y"
{ (yyval.t) = P_NEED_LEX; }
break;
case 109:
-#line 1242 "compilers/imcc/imcc.y"
+#line 1321 "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));
@@ -3507,14 +3586,14 @@
break;
case 110:
-#line 1247 "compilers/imcc/imcc.y"
+#line 1326 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
}
break;
case 111:
-#line 1251 "compilers/imcc/imcc.y"
+#line 1330 "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;
@@ -3522,21 +3601,21 @@
break;
case 112:
-#line 1256 "compilers/imcc/imcc.y"
+#line 1335 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
}
break;
case 113:
-#line 1260 "compilers/imcc/imcc.y"
+#line 1339 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
}
break;
case 114:
-#line 1264 "compilers/imcc/imcc.y"
+#line 1343 "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));
@@ -3544,7 +3623,7 @@
break;
case 115:
-#line 1269 "compilers/imcc/imcc.y"
+#line 1348 "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));
@@ -3552,27 +3631,27 @@
break;
case 116:
-#line 1277 "compilers/imcc/imcc.y"
+#line 1356 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 117:
-#line 1278 "compilers/imcc/imcc.y"
+#line 1357 "compilers/imcc/imcc.y"
{ add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
break;
case 118:
-#line 1282 "compilers/imcc/imcc.y"
+#line 1361 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (2)].sr); }
break;
case 119:
-#line 1287 "compilers/imcc/imcc.y"
+#line 1366 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 120:
-#line 1289 "compilers/imcc/imcc.y"
+#line 1368 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3580,17 +3659,17 @@
break;
case 121:
-#line 1296 "compilers/imcc/imcc.y"
+#line 1375 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 122:
-#line 1297 "compilers/imcc/imcc.y"
+#line 1376 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 123:
-#line 1298 "compilers/imcc/imcc.y"
+#line 1377 "compilers/imcc/imcc.y"
{
IdList *l = (yyvsp[(4) - (4)].idlist);
SymReg *ignored;
@@ -3605,57 +3684,57 @@
break;
case 124:
-#line 1312 "compilers/imcc/imcc.y"
+#line 1391 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 125:
-#line 1313 "compilers/imcc/imcc.y"
+#line 1392 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 126:
-#line 1317 "compilers/imcc/imcc.y"
+#line 1396 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 127:
-#line 1318 "compilers/imcc/imcc.y"
+#line 1397 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPTIONAL; }
break;
case 128:
-#line 1319 "compilers/imcc/imcc.y"
+#line 1398 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPT_FLAG; }
break;
case 129:
-#line 1320 "compilers/imcc/imcc.y"
+#line 1399 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 130:
-#line 1321 "compilers/imcc/imcc.y"
+#line 1400 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 131:
-#line 1322 "compilers/imcc/imcc.y"
+#line 1401 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_UNIQUE_REG; }
break;
case 132:
-#line 1327 "compilers/imcc/imcc.y"
+#line 1406 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 0); }
break;
case 133:
-#line 1329 "compilers/imcc/imcc.y"
+#line 1408 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 134:
-#line 1331 "compilers/imcc/imcc.y"
+#line 1410 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
(yyval.i) = 0;
@@ -3663,22 +3742,22 @@
break;
case 135:
-#line 1338 "compilers/imcc/imcc.y"
+#line 1417 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 1); }
break;
case 136:
-#line 1340 "compilers/imcc/imcc.y"
+#line 1419 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 137:
-#line 1344 "compilers/imcc/imcc.y"
+#line 1423 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 138:
-#line 1346 "compilers/imcc/imcc.y"
+#line 1425 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3686,7 +3765,7 @@
break;
case 139:
-#line 1351 "compilers/imcc/imcc.y"
+#line 1430 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3694,12 +3773,12 @@
break;
case 140:
-#line 1358 "compilers/imcc/imcc.y"
+#line 1437 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 141:
-#line 1360 "compilers/imcc/imcc.y"
+#line 1439 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3707,7 +3786,7 @@
break;
case 142:
-#line 1365 "compilers/imcc/imcc.y"
+#line 1444 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3715,17 +3794,17 @@
break;
case 143:
-#line 1372 "compilers/imcc/imcc.y"
+#line 1451 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 144:
-#line 1376 "compilers/imcc/imcc.y"
+#line 1455 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 145:
-#line 1381 "compilers/imcc/imcc.y"
+#line 1460 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->asm_state == AsmDefault)
begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -3733,7 +3812,7 @@
break;
case 146:
-#line 1386 "compilers/imcc/imcc.y"
+#line 1465 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
(yyval.t) = 0;
@@ -3741,22 +3820,22 @@
break;
case 147:
-#line 1393 "compilers/imcc/imcc.y"
+#line 1472 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 148:
-#line 1394 "compilers/imcc/imcc.y"
+#line 1473 "compilers/imcc/imcc.y"
{ (yyval.t) = 1; }
break;
case 149:
-#line 1398 "compilers/imcc/imcc.y"
+#line 1477 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 150:
-#line 1400 "compilers/imcc/imcc.y"
+#line 1479 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3769,14 +3848,14 @@
break;
case 151:
-#line 1410 "compilers/imcc/imcc.y"
+#line 1489 "compilers/imcc/imcc.y"
{
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
}
break;
case 152:
-#line 1414 "compilers/imcc/imcc.y"
+#line 1493 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3789,61 +3868,61 @@
break;
case 153:
-#line 1424 "compilers/imcc/imcc.y"
+#line 1503 "compilers/imcc/imcc.y"
{
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
}
break;
case 156:
-#line 1444 "compilers/imcc/imcc.y"
+#line 1523 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 157:
-#line 1449 "compilers/imcc/imcc.y"
+#line 1528 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (2)].i); }
break;
case 158:
-#line 1450 "compilers/imcc/imcc.y"
+#line 1529 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 159:
-#line 1451 "compilers/imcc/imcc.y"
+#line 1530 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 160:
-#line 1452 "compilers/imcc/imcc.y"
+#line 1531 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 161:
-#line 1453 "compilers/imcc/imcc.y"
+#line 1532 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 162:
-#line 1457 "compilers/imcc/imcc.y"
+#line 1536 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 166:
-#line 1468 "compilers/imcc/imcc.y"
+#line 1547 "compilers/imcc/imcc.y"
{
(yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
}
break;
case 167:
-#line 1476 "compilers/imcc/imcc.y"
+#line 1555 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (3)].i); }
break;
case 168:
-#line 1478 "compilers/imcc/imcc.y"
+#line 1557 "compilers/imcc/imcc.y"
{
if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -3854,7 +3933,7 @@
break;
case 169:
-#line 1489 "compilers/imcc/imcc.y"
+#line 1568 "compilers/imcc/imcc.y"
{
IdList* l = (yyvsp[(1) - (1)].idlist);
l->next = NULL;
@@ -3863,7 +3942,7 @@
break;
case 170:
-#line 1496 "compilers/imcc/imcc.y"
+#line 1575 "compilers/imcc/imcc.y"
{
IdList* l = (yyvsp[(3) - (3)].idlist);
l->next = (yyvsp[(1) - (3)].idlist);
@@ -3872,7 +3951,7 @@
break;
case 171:
-#line 1505 "compilers/imcc/imcc.y"
+#line 1584 "compilers/imcc/imcc.y"
{
IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
l->id = (yyvsp[(1) - (2)].s);
@@ -3882,22 +3961,22 @@
break;
case 172:
-#line 1514 "compilers/imcc/imcc.y"
+#line 1593 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 173:
-#line 1515 "compilers/imcc/imcc.y"
+#line 1594 "compilers/imcc/imcc.y"
{ (yyval.t) = 1; }
break;
case 176:
-#line 1522 "compilers/imcc/imcc.y"
+#line 1601 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 177:
-#line 1523 "compilers/imcc/imcc.y"
+#line 1602 "compilers/imcc/imcc.y"
{
IdList *l = (yyvsp[(4) - (4)].idlist);
while (l) {
@@ -3916,19 +3995,19 @@
break;
case 178:
-#line 1539 "compilers/imcc/imcc.y"
+#line 1618 "compilers/imcc/imcc.y"
{
set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
}
break;
case 179:
-#line 1542 "compilers/imcc/imcc.y"
+#line 1621 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 180:
-#line 1543 "compilers/imcc/imcc.y"
+#line 1622 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
is_def=0;
@@ -3937,12 +4016,12 @@
break;
case 182:
-#line 1550 "compilers/imcc/imcc.y"
+#line 1629 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 183:
-#line 1551 "compilers/imcc/imcc.y"
+#line 1630 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
is_def=0;
@@ -3951,7 +4030,7 @@
break;
case 184:
-#line 1557 "compilers/imcc/imcc.y"
+#line 1636 "compilers/imcc/imcc.y"
{
(yyval.i) = NULL;
IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -3960,12 +4039,12 @@
break;
case 185:
-#line 1562 "compilers/imcc/imcc.y"
+#line 1641 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
break;
case 186:
-#line 1564 "compilers/imcc/imcc.y"
+#line 1643 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp,
IMCC_INFO(interp)->cur_unit,
@@ -3980,47 +4059,47 @@
break;
case 187:
-#line 1575 "compilers/imcc/imcc.y"
+#line 1654 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
break;
case 188:
-#line 1576 "compilers/imcc/imcc.y"
+#line 1655 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 189:
-#line 1577 "compilers/imcc/imcc.y"
+#line 1656 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 192:
-#line 1580 "compilers/imcc/imcc.y"
+#line 1659 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 193:
-#line 1584 "compilers/imcc/imcc.y"
+#line 1663 "compilers/imcc/imcc.y"
{ (yyval.t) = 'I'; }
break;
case 194:
-#line 1585 "compilers/imcc/imcc.y"
+#line 1664 "compilers/imcc/imcc.y"
{ (yyval.t) = 'N'; }
break;
case 195:
-#line 1586 "compilers/imcc/imcc.y"
+#line 1665 "compilers/imcc/imcc.y"
{ (yyval.t) = 'S'; }
break;
case 196:
-#line 1587 "compilers/imcc/imcc.y"
+#line 1666 "compilers/imcc/imcc.y"
{ (yyval.t) = 'P'; }
break;
case 197:
-#line 1592 "compilers/imcc/imcc.y"
+#line 1671 "compilers/imcc/imcc.y"
{
/* there'd normally be a str_dup() here, but the lexer already
* copied the string, so it's safe to use directly */
@@ -4033,87 +4112,87 @@
break;
case 198:
-#line 1605 "compilers/imcc/imcc.y"
+#line 1684 "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 199:
-#line 1607 "compilers/imcc/imcc.y"
+#line 1686 "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 200:
-#line 1609 "compilers/imcc/imcc.y"
+#line 1688 "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 201:
-#line 1611 "compilers/imcc/imcc.y"
+#line 1690 "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 202:
-#line 1613 "compilers/imcc/imcc.y"
+#line 1692 "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 203:
-#line 1615 "compilers/imcc/imcc.y"
+#line 1694 "compilers/imcc/imcc.y"
{ (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); }
break;
case 204:
-#line 1617 "compilers/imcc/imcc.y"
+#line 1696 "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 205:
-#line 1619 "compilers/imcc/imcc.y"
+#line 1698 "compilers/imcc/imcc.y"
{ (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); }
break;
case 206:
-#line 1621 "compilers/imcc/imcc.y"
+#line 1700 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
break;
case 207:
-#line 1623 "compilers/imcc/imcc.y"
+#line 1702 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
break;
case 208:
-#line 1625 "compilers/imcc/imcc.y"
+#line 1704 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
break;
case 209:
-#line 1627 "compilers/imcc/imcc.y"
+#line 1706 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
break;
case 210:
-#line 1629 "compilers/imcc/imcc.y"
+#line 1708 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
break;
case 211:
-#line 1633 "compilers/imcc/imcc.y"
+#line 1712 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
break;
case 212:
-#line 1635 "compilers/imcc/imcc.y"
+#line 1714 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
break;
case 213:
-#line 1637 "compilers/imcc/imcc.y"
+#line 1716 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
break;
case 214:
-#line 1640 "compilers/imcc/imcc.y"
+#line 1719 "compilers/imcc/imcc.y"
{
add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
IMCC_INFO(interp)->cur_call = NULL;
@@ -4122,14 +4201,14 @@
break;
case 215:
-#line 1646 "compilers/imcc/imcc.y"
+#line 1725 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
}
break;
case 216:
-#line 1650 "compilers/imcc/imcc.y"
+#line 1729 "compilers/imcc/imcc.y"
{
IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
IMCC_INFO(interp)->cur_call = NULL;
@@ -4137,144 +4216,144 @@
break;
case 220:
-#line 1658 "compilers/imcc/imcc.y"
+#line 1737 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
}
break;
case 221:
-#line 1665 "compilers/imcc/imcc.y"
+#line 1744 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"not"; }
break;
case 222:
-#line 1666 "compilers/imcc/imcc.y"
+#line 1745 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bnot"; }
break;
case 223:
-#line 1667 "compilers/imcc/imcc.y"
+#line 1746 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"neg"; }
break;
case 224:
-#line 1671 "compilers/imcc/imcc.y"
+#line 1750 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 225:
-#line 1672 "compilers/imcc/imcc.y"
+#line 1751 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 226:
-#line 1673 "compilers/imcc/imcc.y"
+#line 1752 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 227:
-#line 1674 "compilers/imcc/imcc.y"
+#line 1753 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 228:
-#line 1675 "compilers/imcc/imcc.y"
+#line 1754 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 229:
-#line 1676 "compilers/imcc/imcc.y"
+#line 1755 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 230:
-#line 1677 "compilers/imcc/imcc.y"
+#line 1756 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"pow"; }
break;
case 231:
-#line 1678 "compilers/imcc/imcc.y"
+#line 1757 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 232:
-#line 1679 "compilers/imcc/imcc.y"
+#line 1758 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"iseq"; }
break;
case 233:
-#line 1680 "compilers/imcc/imcc.y"
+#line 1759 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isne"; }
break;
case 234:
-#line 1681 "compilers/imcc/imcc.y"
+#line 1760 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isgt"; }
break;
case 235:
-#line 1682 "compilers/imcc/imcc.y"
+#line 1761 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isge"; }
break;
case 236:
-#line 1683 "compilers/imcc/imcc.y"
+#line 1762 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"islt"; }
break;
case 237:
-#line 1684 "compilers/imcc/imcc.y"
+#line 1763 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isle"; }
break;
case 238:
-#line 1685 "compilers/imcc/imcc.y"
+#line 1764 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 239:
-#line 1686 "compilers/imcc/imcc.y"
+#line 1765 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 240:
-#line 1687 "compilers/imcc/imcc.y"
+#line 1766 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 241:
-#line 1688 "compilers/imcc/imcc.y"
+#line 1767 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"and"; }
break;
case 242:
-#line 1689 "compilers/imcc/imcc.y"
+#line 1768 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"or"; }
break;
case 243:
-#line 1690 "compilers/imcc/imcc.y"
+#line 1769 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"xor"; }
break;
case 244:
-#line 1691 "compilers/imcc/imcc.y"
+#line 1770 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 245:
-#line 1692 "compilers/imcc/imcc.y"
+#line 1771 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 246:
-#line 1693 "compilers/imcc/imcc.y"
+#line 1772 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 247:
-#line 1699 "compilers/imcc/imcc.y"
+#line 1778 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
(yyval.i)->type &= ~ITCALL;
@@ -4283,84 +4362,84 @@
break;
case 248:
-#line 1704 "compilers/imcc/imcc.y"
+#line 1783 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 249:
-#line 1711 "compilers/imcc/imcc.y"
+#line 1790 "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 250:
-#line 1717 "compilers/imcc/imcc.y"
+#line 1796 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 251:
-#line 1718 "compilers/imcc/imcc.y"
+#line 1797 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 252:
-#line 1719 "compilers/imcc/imcc.y"
+#line 1798 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 253:
-#line 1720 "compilers/imcc/imcc.y"
+#line 1799 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 254:
-#line 1721 "compilers/imcc/imcc.y"
+#line 1800 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 255:
-#line 1722 "compilers/imcc/imcc.y"
+#line 1801 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 256:
-#line 1723 "compilers/imcc/imcc.y"
+#line 1802 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 257:
-#line 1724 "compilers/imcc/imcc.y"
+#line 1803 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 258:
-#line 1725 "compilers/imcc/imcc.y"
+#line 1804 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 259:
-#line 1726 "compilers/imcc/imcc.y"
+#line 1805 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 260:
-#line 1727 "compilers/imcc/imcc.y"
+#line 1806 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 261:
-#line 1728 "compilers/imcc/imcc.y"
+#line 1807 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 262:
-#line 1729 "compilers/imcc/imcc.y"
+#line 1808 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 263:
-#line 1735 "compilers/imcc/imcc.y"
+#line 1814 "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,
@@ -4371,22 +4450,22 @@
break;
case 264:
-#line 1745 "compilers/imcc/imcc.y"
+#line 1824 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 265:
-#line 1746 "compilers/imcc/imcc.y"
+#line 1825 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 266:
-#line 1747 "compilers/imcc/imcc.y"
+#line 1826 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 267:
-#line 1749 "compilers/imcc/imcc.y"
+#line 1828 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4395,7 +4474,7 @@
break;
case 268:
-#line 1755 "compilers/imcc/imcc.y"
+#line 1834 "compilers/imcc/imcc.y"
{
/* disallow bareword method names; SREG name constants are fine */
char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4412,7 +4491,7 @@
break;
case 269:
-#line 1769 "compilers/imcc/imcc.y"
+#line 1848 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
(yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4421,12 +4500,12 @@
break;
case 270:
-#line 1774 "compilers/imcc/imcc.y"
+#line 1853 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
break;
case 271:
-#line 1780 "compilers/imcc/imcc.y"
+#line 1859 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -4434,17 +4513,17 @@
break;
case 272:
-#line 1784 "compilers/imcc/imcc.y"
+#line 1863 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (5)].i); }
break;
case 273:
-#line 1788 "compilers/imcc/imcc.y"
+#line 1867 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 274:
-#line 1790 "compilers/imcc/imcc.y"
+#line 1869 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4457,7 +4536,7 @@
break;
case 275:
-#line 1800 "compilers/imcc/imcc.y"
+#line 1879 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4470,7 +4549,7 @@
break;
case 276:
-#line 1810 "compilers/imcc/imcc.y"
+#line 1889 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
@@ -4479,7 +4558,7 @@
break;
case 277:
-#line 1816 "compilers/imcc/imcc.y"
+#line 1895 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
@@ -4488,42 +4567,42 @@
break;
case 278:
-#line 1824 "compilers/imcc/imcc.y"
+#line 1903 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
case 279:
-#line 1828 "compilers/imcc/imcc.y"
+#line 1907 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 280:
-#line 1829 "compilers/imcc/imcc.y"
+#line 1908 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 281:
-#line 1833 "compilers/imcc/imcc.y"
+#line 1912 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 282:
-#line 1834 "compilers/imcc/imcc.y"
+#line 1913 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 283:
-#line 1837 "compilers/imcc/imcc.y"
+#line 1916 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 284:
-#line 1841 "compilers/imcc/imcc.y"
+#line 1920 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
case 285:
-#line 1846 "compilers/imcc/imcc.y"
+#line 1925 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4536,7 +4615,7 @@
break;
case 286:
-#line 1856 "compilers/imcc/imcc.y"
+#line 1935 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
mem_sys_free((yyvsp[(3) - (5)].s));
@@ -4544,7 +4623,7 @@
break;
case 287:
-#line 1861 "compilers/imcc/imcc.y"
+#line 1940 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4557,7 +4636,7 @@
break;
case 288:
-#line 1871 "compilers/imcc/imcc.y"
+#line 1950 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
mem_sys_free((yyvsp[(1) - (3)].s));
@@ -4565,124 +4644,124 @@
break;
case 289:
-#line 1875 "compilers/imcc/imcc.y"
+#line 1954 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 290:
-#line 1879 "compilers/imcc/imcc.y"
+#line 1958 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 291:
-#line 1880 "compilers/imcc/imcc.y"
+#line 1959 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 292:
-#line 1885 "compilers/imcc/imcc.y"
+#line 1964 "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));
}
break;
case 293:
-#line 1889 "compilers/imcc/imcc.y"
+#line 1968 "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));
}
break;
case 294:
-#line 1893 "compilers/imcc/imcc.y"
+#line 1972 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
break;
case 295:
-#line 1900 "compilers/imcc/imcc.y"
+#line 1979 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
break;
case 296:
-#line 1904 "compilers/imcc/imcc.y"
+#line 1983 "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));
}
break;
case 297:
-#line 1908 "compilers/imcc/imcc.y"
+#line 1987 "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));
}
break;
case 298:
-#line 1914 "compilers/imcc/imcc.y"
+#line 1993 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 299:
-#line 1915 "compilers/imcc/imcc.y"
+#line 1994 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 300:
-#line 1919 "compilers/imcc/imcc.y"
+#line 1998 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"eq"; }
break;
case 301:
-#line 1920 "compilers/imcc/imcc.y"
+#line 1999 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ne"; }
break;
case 302:
-#line 1921 "compilers/imcc/imcc.y"
+#line 2000 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"gt"; }
break;
case 303:
-#line 1922 "compilers/imcc/imcc.y"
+#line 2001 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ge"; }
break;
case 304:
-#line 1923 "compilers/imcc/imcc.y"
+#line 2002 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lt"; }
break;
case 305:
-#line 1924 "compilers/imcc/imcc.y"
+#line 2003 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"le"; }
break;
case 308:
-#line 1933 "compilers/imcc/imcc.y"
+#line 2012 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
case 309:
-#line 1934 "compilers/imcc/imcc.y"
+#line 2013 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (1)].sr); }
break;
case 310:
-#line 1938 "compilers/imcc/imcc.y"
+#line 2017 "compilers/imcc/imcc.y"
{ (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
break;
case 312:
-#line 1943 "compilers/imcc/imcc.y"
+#line 2022 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
break;
case 313:
-#line 1945 "compilers/imcc/imcc.y"
+#line 2024 "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);
@@ -4692,7 +4771,7 @@
break;
case 314:
-#line 1952 "compilers/imcc/imcc.y"
+#line 2031 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
(yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -4700,37 +4779,37 @@
break;
case 316:
-#line 1959 "compilers/imcc/imcc.y"
+#line 2038 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 317:
-#line 1960 "compilers/imcc/imcc.y"
+#line 2039 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 318:
-#line 1964 "compilers/imcc/imcc.y"
+#line 2043 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 319:
-#line 1965 "compilers/imcc/imcc.y"
+#line 2044 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 320:
-#line 1969 "compilers/imcc/imcc.y"
+#line 2048 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 321:
-#line 1970 "compilers/imcc/imcc.y"
+#line 2049 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 326:
-#line 1984 "compilers/imcc/imcc.y"
+#line 2063 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
IMCC_INFO(interp)->in_slice = 0;
@@ -4738,7 +4817,7 @@
break;
case 327:
-#line 1989 "compilers/imcc/imcc.y"
+#line 2068 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -4747,7 +4826,7 @@
break;
case 328:
-#line 1997 "compilers/imcc/imcc.y"
+#line 2076 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
IMCC_INFO(interp)->in_slice = 0;
@@ -4755,7 +4834,7 @@
break;
case 329:
-#line 2002 "compilers/imcc/imcc.y"
+#line 2081 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -4764,12 +4843,12 @@
break;
case 330:
-#line 2010 "compilers/imcc/imcc.y"
+#line 2089 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
break;
case 331:
-#line 2012 "compilers/imcc/imcc.y"
+#line 2091 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
(yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -4777,7 +4856,7 @@
break;
case 332:
-#line 2020 "compilers/imcc/imcc.y"
+#line 2099 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->in_slice)
(yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -4786,53 +4865,53 @@
break;
case 333:
-#line 2028 "compilers/imcc/imcc.y"
+#line 2107 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
break;
case 334:
-#line 2029 "compilers/imcc/imcc.y"
+#line 2108 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
break;
case 335:
-#line 2030 "compilers/imcc/imcc.y"
+#line 2109 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
break;
case 336:
-#line 2031 "compilers/imcc/imcc.y"
+#line 2110 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
break;
case 337:
-#line 2032 "compilers/imcc/imcc.y"
+#line 2111 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 338:
-#line 2036 "compilers/imcc/imcc.y"
+#line 2115 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 339:
-#line 2037 "compilers/imcc/imcc.y"
+#line 2116 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 340:
-#line 2038 "compilers/imcc/imcc.y"
+#line 2117 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 341:
-#line 2039 "compilers/imcc/imcc.y"
+#line 2118 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
/* Line 1267 of yacc.c. */
-#line 4825 "compilers/imcc/imcparser.c"
+#line 4904 "compilers/imcc/imcparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5046,7 +5125,7 @@
}
-#line 2045 "compilers/imcc/imcc.y"
+#line 2124 "compilers/imcc/imcc.y"
/* I need this prototype somewhere... */
Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h (original)
+++ trunk/compilers/imcc/imcparser.h Thu Jan 1 14:57:02 2009
@@ -295,7 +295,7 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 678 "compilers/imcc/imcc.y"
+#line 757 "compilers/imcc/imcc.y"
{
IdList * idlist;
int t;
@@ -303,7 +303,7 @@
SymReg * sr;
Instruction *i;
}
-/* Line 1529 of yacc.c. */
+/* Line 1489 of yacc.c. */
#line 297 "compilers/imcc/imcparser.h"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-
[svn:parrot] r34769 - trunk/compilers/imcc
by chromatic