develooper Front page | perl.cvs.parrot | Postings from January 2009

[svn:parrot] r34902 - in trunk: compilers/imcc tools/build

From:
chromatic
Date:
January 3, 2009 13:47
Subject:
[svn:parrot] r34902 - in trunk: compilers/imcc tools/build
Message ID:
20090103214728.BDFC2CB9FA@x12.develooper.com
Author: chromatic
Date: Sat Jan  3 13:47:27 2009
New Revision: 34902

Modified:
   trunk/compilers/imcc/imc.h
   trunk/compilers/imcc/imcparser.c
   trunk/compilers/imcc/imcparser.h
   trunk/tools/build/headerizer.pl

Log:
[IMCC] Fixed headerizer for IMCC in maintainer mode, and reran it.

Modified: trunk/compilers/imcc/imc.h
==============================================================================
--- trunk/compilers/imcc/imc.h	(original)
+++ trunk/compilers/imcc/imc.h	Sat Jan  3 13:47:27 2009
@@ -69,6 +69,38 @@
 
 #define N_ELEMENTS(x) (sizeof (x)/sizeof ((x)[0]))
 
+/* HEADERIZER BEGIN: compilers/imcc/imcc.y */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_CANNOT_RETURN_NULL
+Instruction * IMCC_create_itcall_label(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+void IMCC_itcall_sub(PARROT_INTERP, ARGIN(SymReg *sub))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+Instruction * INS_LABEL(PARROT_INTERP,
+    ARGMOD_NULLOK(IMC_Unit *unit),
+    ARGMOD(SymReg *r0),
+    int emit)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*unit)
+        FUNC_MODIFIES(*r0);
+
+#define ASSERT_ARGS_IMCC_create_itcall_label __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp)
+#define ASSERT_ARGS_IMCC_itcall_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(sub)
+#define ASSERT_ARGS_INS_LABEL __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(r0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/imcc/imcc.y */
+
 
 /*
  * imc.c

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	(original)
+++ trunk/compilers/imcc/imcparser.c	Sat Jan  3 13:47:27 2009
@@ -547,68 +547,88 @@
         __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);
+#define ASSERT_ARGS_add_pcc_named_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(cur_call) \
+    || PARROT_ASSERT_ARG(name) \
+    || PARROT_ASSERT_ARG(value)
+#define ASSERT_ARGS_add_pcc_named_param __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(cur_call) \
+    || PARROT_ASSERT_ARG(name) \
+    || PARROT_ASSERT_ARG(value)
+#define ASSERT_ARGS_add_pcc_named_result __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(cur_call) \
+    || PARROT_ASSERT_ARG(name) \
+    || PARROT_ASSERT_ARG(value)
+#define ASSERT_ARGS_add_pcc_named_return __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(cur_call) \
+    || PARROT_ASSERT_ARG(name) \
+    || PARROT_ASSERT_ARG(value)
+#define ASSERT_ARGS_adv_named_set __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(name)
+#define ASSERT_ARGS_begin_return_or_yield __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp)
+#define ASSERT_ARGS_clear_state __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp)
+#define ASSERT_ARGS_do_loadlib __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(lib)
+#define ASSERT_ARGS_func_ins __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(unit) \
+    || PARROT_ASSERT_ARG(lhs) \
+    || PARROT_ASSERT_ARG(op) \
+    || PARROT_ASSERT_ARG(r)
+#define ASSERT_ARGS_iINDEXFETCH __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(unit) \
+    || PARROT_ASSERT_ARG(r0) \
+    || PARROT_ASSERT_ARG(r1) \
+    || PARROT_ASSERT_ARG(r2)
+#define ASSERT_ARGS_iINDEXSET __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(unit) \
+    || PARROT_ASSERT_ARG(r0) \
+    || PARROT_ASSERT_ARG(r1) \
+    || PARROT_ASSERT_ARG(r2)
+#define ASSERT_ARGS_iLABEL __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(r0)
+#define ASSERT_ARGS_inv_op __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(op)
+#define ASSERT_ARGS_iSUBROUTINE __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(r)
+#define ASSERT_ARGS_MK_I __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(unit) \
+    || PARROT_ASSERT_ARG(fmt)
+#define ASSERT_ARGS_mk_pmc_const __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(unit) \
+    || PARROT_ASSERT_ARG(type) \
+    || PARROT_ASSERT_ARG(left) \
+    || PARROT_ASSERT_ARG(constant)
+#define ASSERT_ARGS_mk_pmc_const_named __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(unit) \
+    || PARROT_ASSERT_ARG(name) \
+    || PARROT_ASSERT_ARG(left) \
+    || PARROT_ASSERT_ARG(constant)
+#define ASSERT_ARGS_mk_sub_address_fromc __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(name)
+#define ASSERT_ARGS_mk_sub_address_u __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(name)
+#define ASSERT_ARGS_set_lexical __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(r) \
+    || PARROT_ASSERT_ARG(name)
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -647,6 +667,7 @@
 static Instruction *
 MK_I(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *fmt), int n, ...)
 {
+    ASSERT_ARGS(MK_I);
     char opname[64];
     char *p;
     const char *q;
@@ -680,12 +701,12 @@
 mk_pmc_const(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *type),
         ARGMOD(SymReg *left), ARGIN(const char *constant))
 {
+    ASSERT_ARGS(mk_pmc_const);
     const int type_enum = atoi(type);
     const int ascii = (*constant == '\'' || *constant == '"');
     SymReg *rhs;
     SymReg *r[3];
     char   *name;
-    ASSERT_ARGS(mk_pmc_const);
 
     if (left->type == VTADDRESS) {      /* IDENTIFIER */
         if (IMCC_INFO(interp)->state->pasm_file) {
@@ -735,13 +756,13 @@
 mk_pmc_const_named(PARROT_INTERP, ARGMOD(IMC_Unit *unit),
     ARGIN(const char *name), ARGMOD(SymReg *left), ARGIN(const char *constant))
 {
+    ASSERT_ARGS(mk_pmc_const_named);
     SymReg *rhs;
     SymReg *r[3];
     char   *const_name;
     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';
 
@@ -793,8 +814,8 @@
 func_ins(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *lhs), ARGIN(const char *op),
          ARGMOD(SymReg **r), int n, int keyv, int emit)
 {
-    int i;
     ASSERT_ARGS(func_ins);
+    int i;
     /* shift regs up by 1 */
     for (i = n - 1; i >= 0; --i)
         r[i+1] = r[i];
@@ -821,6 +842,7 @@
 Instruction *
 INS_LABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0), int emit)
 {
+    ASSERT_ARGS(INS_LABEL);
 
     Instruction * const ins = _mk_instruction("", "%s:", 1, &r0, 0);
     ins->type               = ITLABEL;
@@ -836,6 +858,7 @@
 static Instruction *
 iLABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0))
 {
+    ASSERT_ARGS(iLABEL);
     Instruction * const i = INS_LABEL(interp, unit, r0, 1);
     i->line               = IMCC_INFO(interp)->line;
 
@@ -847,6 +870,7 @@
 static Instruction *
 iSUBROUTINE(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r))
 {
+    ASSERT_ARGS(iSUBROUTINE);
     Instruction * const i = iLABEL(interp, unit, r);
 
     r->type    = (r->type & VT_ENCODED) ? VT_PCC_SUB|VT_ENCODED : VT_PCC_SUB;
@@ -867,6 +891,7 @@
 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);
 }
@@ -880,6 +905,7 @@
 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);
@@ -896,8 +922,8 @@
 static const char *
 inv_op(ARGIN(const char *op))
 {
-    int n;
     ASSERT_ARGS(inv_op);
+    int n;
     return get_neg_op(op, &n);
 }
 
@@ -905,6 +931,7 @@
 Instruction *
 IMCC_create_itcall_label(PARROT_INTERP)
 {
+    ASSERT_ARGS(IMCC_create_itcall_label);
     char         name[128];
     SymReg      *r;
     Instruction *i;
@@ -925,10 +952,10 @@
 static SymReg *
 mk_sub_address_fromc(PARROT_INTERP, ARGIN(const char *name))
 {
+    ASSERT_ARGS(mk_sub_address_fromc);
     /* 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);
@@ -941,8 +968,8 @@
 static SymReg *
 mk_sub_address_u(PARROT_INTERP, ARGIN(const char *name))
 {
-    SymReg * const r = mk_sub_address(interp, name);
     ASSERT_ARGS(mk_sub_address_u);
+    SymReg * const r = mk_sub_address(interp, name);
     r->type         |= VT_ENCODED;
 
     return r;
@@ -967,10 +994,10 @@
 static void
 begin_return_or_yield(PARROT_INTERP, int yield)
 {
+    ASSERT_ARGS(begin_return_or_yield);
     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,
@@ -988,8 +1015,8 @@
 static void
 set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
 {
-    SymReg * const n = mk_const(interp, name, 'S');
     ASSERT_ARGS(set_lexical);
+    SymReg * const n = mk_const(interp, name, 'S');
 
     r->usage |= U_LEXICAL;
 
@@ -1007,8 +1034,8 @@
 add_pcc_named_arg(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
 {
-    SymReg * const r = mk_const(interp, name, 'S');
     ASSERT_ARGS(add_pcc_named_arg);
+    SymReg * const r = mk_const(interp, name, 'S');
 
     r->type  |= VT_NAMED;
 
@@ -1020,8 +1047,8 @@
 add_pcc_named_result(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
 {
-    SymReg * const r = mk_const(interp, name, 'S');
     ASSERT_ARGS(add_pcc_named_result);
+    SymReg * const r = mk_const(interp, name, 'S');
     r->type         |= VT_NAMED;
 
     add_pcc_result(cur_call, r);
@@ -1032,8 +1059,8 @@
 add_pcc_named_param(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
 {
-    SymReg * const r = mk_const(interp, name, 'S');
     ASSERT_ARGS(add_pcc_named_param);
+    SymReg * const r = mk_const(interp, name, 'S');
     r->type         |= VT_NAMED;
 
     add_pcc_arg(cur_call, r);
@@ -1044,8 +1071,8 @@
 add_pcc_named_return(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
 {
-    SymReg * const r = mk_const(interp, name, 'S');
     ASSERT_ARGS(add_pcc_named_return);
+    SymReg * const r = mk_const(interp, name, 'S');
     r->type         |= VT_NAMED;
 
     add_pcc_result(cur_call, r);
@@ -1067,9 +1094,9 @@
 static void
 do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
 {
+    ASSERT_ARGS(do_loadlib);
     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);
 }
@@ -1098,7 +1125,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 757 "compilers/imcc/imcc.y"
+#line 784 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;
@@ -1107,7 +1134,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1100 "compilers/imcc/imcparser.c"
+#line 1127 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1120,7 +1147,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1113 "compilers/imcc/imcparser.c"
+#line 1140 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1546,41 +1573,41 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       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
+       0,   878,   878,   882,   883,   887,   888,   889,   895,   901,
+     902,   903,   904,   908,   909,   918,   923,   931,   940,   958,
+     958,   967,   967,   973,   973,   980,   981,   985,   986,   990,
+     991,   992,   993,   994,   995,   996,   999,   999,  1008,  1007,
+    1019,  1023,  1031,  1035,  1039,  1039,  1051,  1053,  1057,  1072,
+    1080,  1085,  1089,  1093,  1084,  1105,  1106,  1107,  1120,  1120,
+    1124,  1138,  1142,  1148,  1157,  1163,  1172,  1178,  1187,  1193,
+    1202,  1210,  1215,  1226,  1229,  1234,  1242,  1243,  1244,  1245,
+    1246,  1257,  1268,  1271,  1273,  1278,  1277,  1310,  1311,  1315,
+    1316,  1320,  1321,  1325,  1326,  1330,  1331,  1332,  1333,  1334,
+    1335,  1336,  1337,  1338,  1339,  1340,  1341,  1342,  1343,  1347,
+    1352,  1356,  1361,  1365,  1369,  1374,  1383,  1384,  1388,  1393,
+    1394,  1402,  1403,  1403,  1418,  1419,  1423,  1424,  1425,  1426,
+    1427,  1428,  1433,  1433,  1436,  1444,  1444,  1450,  1451,  1456,
+    1464,  1465,  1470,  1478,  1482,  1487,  1486,  1499,  1500,  1504,
+    1505,  1515,  1519,  1529,  1537,  1538,  1550,  1554,  1556,  1557,
+    1558,  1559,  1563,  1564,  1568,  1569,  1573,  1582,  1583,  1594,
+    1601,  1610,  1620,  1621,  1626,  1627,  1628,  1628,  1644,  1648,
+    1648,  1655,  1656,  1656,  1662,  1668,  1669,  1681,  1682,  1683,
+    1684,  1685,  1686,  1690,  1691,  1692,  1693,  1697,  1710,  1712,
+    1714,  1716,  1718,  1720,  1722,  1724,  1726,  1728,  1730,  1732,
+    1734,  1738,  1740,  1742,  1745,  1752,  1751,  1760,  1761,  1762,
+    1763,  1771,  1772,  1773,  1777,  1778,  1779,  1780,  1781,  1782,
+    1783,  1784,  1785,  1786,  1787,  1788,  1789,  1790,  1791,  1792,
+    1793,  1794,  1795,  1796,  1797,  1798,  1799,  1805,  1804,  1816,
+    1823,  1824,  1825,  1826,  1827,  1828,  1829,  1830,  1831,  1832,
+    1833,  1834,  1835,  1840,  1851,  1852,  1853,  1854,  1860,  1874,
+    1880,  1886,  1885,  1894,  1895,  1905,  1915,  1921,  1930,  1934,
+    1935,  1939,  1940,  1943,  1947,  1951,  1961,  1966,  1976,  1981,
+    1985,  1986,  1990,  1994,  1998,  2005,  2009,  2013,  2020,  2021,
+    2025,  2026,  2027,  2028,  2029,  2030,  2034,  2035,  2039,  2040,
+    2044,  2045,  2049,  2050,  2057,  2064,  2065,  2066,  2070,  2071,
+    2075,  2076,  2080,  2081,  2085,  2086,  2090,  2090,  2103,  2103,
+    2116,  2117,  2125,  2134,  2135,  2136,  2137,  2138,  2142,  2143,
+    2144,  2145
 };
 #endif
 
@@ -2942,22 +2969,22 @@
   switch (yyn)
     {
         case 2:
-#line 851 "compilers/imcc/imcc.y"
+#line 878 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
-#line 860 "compilers/imcc/imcc.y"
+#line 887 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
-#line 861 "compilers/imcc/imcc.y"
+#line 888 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
-#line 863 "compilers/imcc/imcc.y"
+#line 890 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -2966,7 +2993,7 @@
     break;
 
   case 8:
-#line 869 "compilers/imcc/imcc.y"
+#line 896 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -2975,32 +3002,32 @@
     break;
 
   case 9:
-#line 874 "compilers/imcc/imcc.y"
+#line 901 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
-#line 875 "compilers/imcc/imcc.y"
+#line 902 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
-#line 876 "compilers/imcc/imcc.y"
+#line 903 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
-#line 877 "compilers/imcc/imcc.y"
+#line 904 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
-#line 881 "compilers/imcc/imcc.y"
+#line 908 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
-#line 883 "compilers/imcc/imcc.y"
+#line 910 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3009,7 +3036,7 @@
     break;
 
   case 15:
-#line 892 "compilers/imcc/imcc.y"
+#line 919 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            set_filename(interp, (yyvsp[(4) - (5)].s));
@@ -3017,14 +3044,14 @@
     break;
 
   case 16:
-#line 897 "compilers/imcc/imcc.y"
+#line 924 "compilers/imcc/imcc.y"
     {
            set_filename(interp, (yyvsp[(2) - (3)].s));
          }
     break;
 
   case 17:
-#line 905 "compilers/imcc/imcc.y"
+#line 932 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = string_unescape_cstring(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             CONTEXT(interp)->current_HLL =
@@ -3036,7 +3063,7 @@
     break;
 
   case 18:
-#line 914 "compilers/imcc/imcc.y"
+#line 941 "compilers/imcc/imcc.y"
     {
             Parrot_Context *ctx           = CONTEXT(interp);
             STRING * const  built_in_name =
@@ -3054,12 +3081,12 @@
     break;
 
   case 19:
-#line 931 "compilers/imcc/imcc.y"
+#line 958 "compilers/imcc/imcc.y"
     { is_def = 1; }
     break;
 
   case 20:
-#line 932 "compilers/imcc/imcc.y"
+#line 959 "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));
@@ -3068,12 +3095,12 @@
     break;
 
   case 21:
-#line 940 "compilers/imcc/imcc.y"
+#line 967 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 22:
-#line 941 "compilers/imcc/imcc.y"
+#line 968 "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;
@@ -3081,12 +3108,12 @@
     break;
 
   case 23:
-#line 946 "compilers/imcc/imcc.y"
+#line 973 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 24:
-#line 947 "compilers/imcc/imcc.y"
+#line 974 "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;
@@ -3094,37 +3121,37 @@
     break;
 
   case 29:
-#line 963 "compilers/imcc/imcc.y"
+#line 990 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
-#line 964 "compilers/imcc/imcc.y"
+#line 991 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
-#line 965 "compilers/imcc/imcc.y"
+#line 992 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
-#line 966 "compilers/imcc/imcc.y"
+#line 993 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
-#line 967 "compilers/imcc/imcc.y"
+#line 994 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
-#line 972 "compilers/imcc/imcc.y"
+#line 999 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
-#line 974 "compilers/imcc/imcc.y"
+#line 1001 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3134,7 +3161,7 @@
     break;
 
   case 38:
-#line 981 "compilers/imcc/imcc.y"
+#line 1008 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3142,7 +3169,7 @@
     break;
 
   case 39:
-#line 986 "compilers/imcc/imcc.y"
+#line 1013 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3152,14 +3179,14 @@
     break;
 
   case 40:
-#line 993 "compilers/imcc/imcc.y"
+#line 1020 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
   case 41:
-#line 997 "compilers/imcc/imcc.y"
+#line 1024 "compilers/imcc/imcc.y"
     {
            SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
            set_lexical(interp, r, (yyvsp[(2) - (4)].s));
@@ -3170,17 +3197,17 @@
     break;
 
   case 42:
-#line 1004 "compilers/imcc/imcc.y"
+#line 1031 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
-#line 1012 "compilers/imcc/imcc.y"
+#line 1039 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
-#line 1015 "compilers/imcc/imcc.y"
+#line 1042 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3191,7 +3218,7 @@
     break;
 
   case 48:
-#line 1031 "compilers/imcc/imcc.y"
+#line 1058 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3206,7 +3233,7 @@
     break;
 
   case 49:
-#line 1046 "compilers/imcc/imcc.y"
+#line 1073 "compilers/imcc/imcc.y"
     {
             if (IMCC_INFO(interp)->in_slice)
                 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3217,26 +3244,26 @@
     break;
 
   case 50:
-#line 1053 "compilers/imcc/imcc.y"
+#line 1080 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
-#line 1058 "compilers/imcc/imcc.y"
+#line 1085 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          }
     break;
 
   case 52:
-#line 1062 "compilers/imcc/imcc.y"
+#line 1089 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 53:
-#line 1066 "compilers/imcc/imcc.y"
+#line 1093 "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) {
@@ -3247,22 +3274,22 @@
     break;
 
   case 54:
-#line 1074 "compilers/imcc/imcc.y"
+#line 1101 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
-#line 1078 "compilers/imcc/imcc.y"
+#line 1105 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
-#line 1079 "compilers/imcc/imcc.y"
+#line 1106 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
-#line 1081 "compilers/imcc/imcc.y"
+#line 1108 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3275,17 +3302,17 @@
     break;
 
   case 58:
-#line 1093 "compilers/imcc/imcc.y"
+#line 1120 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 59:
-#line 1093 "compilers/imcc/imcc.y"
+#line 1120 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }
     break;
 
   case 60:
-#line 1098 "compilers/imcc/imcc.y"
+#line 1125 "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));
@@ -3297,12 +3324,12 @@
     break;
 
   case 61:
-#line 1111 "compilers/imcc/imcc.y"
+#line 1138 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
-#line 1116 "compilers/imcc/imcc.y"
+#line 1143 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3311,7 +3338,7 @@
     break;
 
   case 63:
-#line 1122 "compilers/imcc/imcc.y"
+#line 1149 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3320,7 +3347,7 @@
     break;
 
   case 64:
-#line 1131 "compilers/imcc/imcc.y"
+#line 1158 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3329,7 +3356,7 @@
     break;
 
   case 65:
-#line 1137 "compilers/imcc/imcc.y"
+#line 1164 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3338,7 +3365,7 @@
     break;
 
   case 66:
-#line 1146 "compilers/imcc/imcc.y"
+#line 1173 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3347,7 +3374,7 @@
     break;
 
   case 67:
-#line 1152 "compilers/imcc/imcc.y"
+#line 1179 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3356,7 +3383,7 @@
     break;
 
   case 68:
-#line 1161 "compilers/imcc/imcc.y"
+#line 1188 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3365,7 +3392,7 @@
     break;
 
   case 69:
-#line 1167 "compilers/imcc/imcc.y"
+#line 1194 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3374,7 +3401,7 @@
     break;
 
   case 70:
-#line 1176 "compilers/imcc/imcc.y"
+#line 1203 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3382,7 +3409,7 @@
     break;
 
   case 71:
-#line 1184 "compilers/imcc/imcc.y"
+#line 1211 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3390,7 +3417,7 @@
     break;
 
   case 72:
-#line 1189 "compilers/imcc/imcc.y"
+#line 1216 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3400,14 +3427,14 @@
     break;
 
   case 73:
-#line 1199 "compilers/imcc/imcc.y"
+#line 1226 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
   case 74:
-#line 1203 "compilers/imcc/imcc.y"
+#line 1230 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3415,7 +3442,7 @@
     break;
 
   case 75:
-#line 1208 "compilers/imcc/imcc.y"
+#line 1235 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3423,27 +3450,27 @@
     break;
 
   case 76:
-#line 1215 "compilers/imcc/imcc.y"
+#line 1242 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
-#line 1216 "compilers/imcc/imcc.y"
+#line 1243 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
-#line 1217 "compilers/imcc/imcc.y"
+#line 1244 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
-#line 1218 "compilers/imcc/imcc.y"
+#line 1245 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
-#line 1220 "compilers/imcc/imcc.y"
+#line 1247 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3457,7 +3484,7 @@
     break;
 
   case 81:
-#line 1231 "compilers/imcc/imcc.y"
+#line 1258 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3471,12 +3498,12 @@
     break;
 
   case 82:
-#line 1241 "compilers/imcc/imcc.y"
+#line 1268 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
-#line 1251 "compilers/imcc/imcc.y"
+#line 1278 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3503,82 +3530,82 @@
     break;
 
   case 86:
-#line 1279 "compilers/imcc/imcc.y"
+#line 1306 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
-#line 1283 "compilers/imcc/imcc.y"
+#line 1310 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
-#line 1284 "compilers/imcc/imcc.y"
+#line 1311 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
-#line 1288 "compilers/imcc/imcc.y"
+#line 1315 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
-#line 1289 "compilers/imcc/imcc.y"
+#line 1316 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
-#line 1293 "compilers/imcc/imcc.y"
+#line 1320 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
-#line 1298 "compilers/imcc/imcc.y"
+#line 1325 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
-#line 1299 "compilers/imcc/imcc.y"
+#line 1326 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
-#line 1303 "compilers/imcc/imcc.y"
+#line 1330 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
-#line 1304 "compilers/imcc/imcc.y"
+#line 1331 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
-#line 1305 "compilers/imcc/imcc.y"
+#line 1332 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
-#line 1306 "compilers/imcc/imcc.y"
+#line 1333 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
-#line 1307 "compilers/imcc/imcc.y"
+#line 1334 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
-#line 1308 "compilers/imcc/imcc.y"
+#line 1335 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
-#line 1309 "compilers/imcc/imcc.y"
+#line 1336 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
-#line 1321 "compilers/imcc/imcc.y"
+#line 1348 "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));
@@ -3586,14 +3613,14 @@
     break;
 
   case 110:
-#line 1326 "compilers/imcc/imcc.y"
+#line 1353 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 111:
-#line 1330 "compilers/imcc/imcc.y"
+#line 1357 "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;
@@ -3601,21 +3628,21 @@
     break;
 
   case 112:
-#line 1335 "compilers/imcc/imcc.y"
+#line 1362 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 113:
-#line 1339 "compilers/imcc/imcc.y"
+#line 1366 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
     break;
 
   case 114:
-#line 1343 "compilers/imcc/imcc.y"
+#line 1370 "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));
@@ -3623,7 +3650,7 @@
     break;
 
   case 115:
-#line 1348 "compilers/imcc/imcc.y"
+#line 1375 "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));
@@ -3631,27 +3658,27 @@
     break;
 
   case 116:
-#line 1356 "compilers/imcc/imcc.y"
+#line 1383 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
-#line 1357 "compilers/imcc/imcc.y"
+#line 1384 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
-#line 1361 "compilers/imcc/imcc.y"
+#line 1388 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
-#line 1366 "compilers/imcc/imcc.y"
+#line 1393 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
-#line 1368 "compilers/imcc/imcc.y"
+#line 1395 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3659,17 +3686,17 @@
     break;
 
   case 121:
-#line 1375 "compilers/imcc/imcc.y"
+#line 1402 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
-#line 1376 "compilers/imcc/imcc.y"
+#line 1403 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 123:
-#line 1377 "compilers/imcc/imcc.y"
+#line 1404 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3684,57 +3711,57 @@
     break;
 
   case 124:
-#line 1391 "compilers/imcc/imcc.y"
+#line 1418 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
-#line 1392 "compilers/imcc/imcc.y"
+#line 1419 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
-#line 1396 "compilers/imcc/imcc.y"
+#line 1423 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
-#line 1397 "compilers/imcc/imcc.y"
+#line 1424 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
-#line 1398 "compilers/imcc/imcc.y"
+#line 1425 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
-#line 1399 "compilers/imcc/imcc.y"
+#line 1426 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
-#line 1400 "compilers/imcc/imcc.y"
+#line 1427 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 131:
-#line 1401 "compilers/imcc/imcc.y"
+#line 1428 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 132:
-#line 1406 "compilers/imcc/imcc.y"
+#line 1433 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 133:
-#line 1408 "compilers/imcc/imcc.y"
+#line 1435 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 134:
-#line 1410 "compilers/imcc/imcc.y"
+#line 1437 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
@@ -3742,22 +3769,22 @@
     break;
 
   case 135:
-#line 1417 "compilers/imcc/imcc.y"
+#line 1444 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 136:
-#line 1419 "compilers/imcc/imcc.y"
+#line 1446 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 137:
-#line 1423 "compilers/imcc/imcc.y"
+#line 1450 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 138:
-#line 1425 "compilers/imcc/imcc.y"
+#line 1452 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3765,7 +3792,7 @@
     break;
 
   case 139:
-#line 1430 "compilers/imcc/imcc.y"
+#line 1457 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3773,12 +3800,12 @@
     break;
 
   case 140:
-#line 1437 "compilers/imcc/imcc.y"
+#line 1464 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 141:
-#line 1439 "compilers/imcc/imcc.y"
+#line 1466 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3786,7 +3813,7 @@
     break;
 
   case 142:
-#line 1444 "compilers/imcc/imcc.y"
+#line 1471 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3794,17 +3821,17 @@
     break;
 
   case 143:
-#line 1451 "compilers/imcc/imcc.y"
+#line 1478 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 144:
-#line 1455 "compilers/imcc/imcc.y"
+#line 1482 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 145:
-#line 1460 "compilers/imcc/imcc.y"
+#line 1487 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -3812,7 +3839,7 @@
     break;
 
   case 146:
-#line 1465 "compilers/imcc/imcc.y"
+#line 1492 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
@@ -3820,22 +3847,22 @@
     break;
 
   case 147:
-#line 1472 "compilers/imcc/imcc.y"
+#line 1499 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 148:
-#line 1473 "compilers/imcc/imcc.y"
+#line 1500 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 149:
-#line 1477 "compilers/imcc/imcc.y"
+#line 1504 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 150:
-#line 1479 "compilers/imcc/imcc.y"
+#line 1506 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3848,14 +3875,14 @@
     break;
 
   case 151:
-#line 1489 "compilers/imcc/imcc.y"
+#line 1516 "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 1493 "compilers/imcc/imcc.y"
+#line 1520 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3868,61 +3895,61 @@
     break;
 
   case 153:
-#line 1503 "compilers/imcc/imcc.y"
+#line 1530 "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 1523 "compilers/imcc/imcc.y"
+#line 1550 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 157:
-#line 1528 "compilers/imcc/imcc.y"
+#line 1555 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 158:
-#line 1529 "compilers/imcc/imcc.y"
+#line 1556 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 159:
-#line 1530 "compilers/imcc/imcc.y"
+#line 1557 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 160:
-#line 1531 "compilers/imcc/imcc.y"
+#line 1558 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
-#line 1532 "compilers/imcc/imcc.y"
+#line 1559 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
-#line 1536 "compilers/imcc/imcc.y"
+#line 1563 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 166:
-#line 1547 "compilers/imcc/imcc.y"
+#line 1574 "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 1555 "compilers/imcc/imcc.y"
+#line 1582 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 168:
-#line 1557 "compilers/imcc/imcc.y"
+#line 1584 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -3933,7 +3960,7 @@
     break;
 
   case 169:
-#line 1568 "compilers/imcc/imcc.y"
+#line 1595 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -3942,7 +3969,7 @@
     break;
 
   case 170:
-#line 1575 "compilers/imcc/imcc.y"
+#line 1602 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -3951,7 +3978,7 @@
     break;
 
   case 171:
-#line 1584 "compilers/imcc/imcc.y"
+#line 1611 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -3961,22 +3988,22 @@
     break;
 
   case 172:
-#line 1593 "compilers/imcc/imcc.y"
+#line 1620 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 173:
-#line 1594 "compilers/imcc/imcc.y"
+#line 1621 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 176:
-#line 1601 "compilers/imcc/imcc.y"
+#line 1628 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 177:
-#line 1602 "compilers/imcc/imcc.y"
+#line 1629 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -3995,19 +4022,19 @@
     break;
 
   case 178:
-#line 1618 "compilers/imcc/imcc.y"
+#line 1645 "compilers/imcc/imcc.y"
     {
            set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
          }
     break;
 
   case 179:
-#line 1621 "compilers/imcc/imcc.y"
+#line 1648 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 180:
-#line 1622 "compilers/imcc/imcc.y"
+#line 1649 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            is_def=0;
@@ -4016,12 +4043,12 @@
     break;
 
   case 182:
-#line 1629 "compilers/imcc/imcc.y"
+#line 1656 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
   case 183:
-#line 1630 "compilers/imcc/imcc.y"
+#line 1657 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            is_def=0;
@@ -4030,7 +4057,7 @@
     break;
 
   case 184:
-#line 1636 "compilers/imcc/imcc.y"
+#line 1663 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4039,12 +4066,12 @@
     break;
 
   case 185:
-#line 1641 "compilers/imcc/imcc.y"
+#line 1668 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 186:
-#line 1643 "compilers/imcc/imcc.y"
+#line 1670 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4059,47 +4086,47 @@
     break;
 
   case 187:
-#line 1654 "compilers/imcc/imcc.y"
+#line 1681 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 188:
-#line 1655 "compilers/imcc/imcc.y"
+#line 1682 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 189:
-#line 1656 "compilers/imcc/imcc.y"
+#line 1683 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 192:
-#line 1659 "compilers/imcc/imcc.y"
+#line 1686 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 193:
-#line 1663 "compilers/imcc/imcc.y"
+#line 1690 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 194:
-#line 1664 "compilers/imcc/imcc.y"
+#line 1691 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 195:
-#line 1665 "compilers/imcc/imcc.y"
+#line 1692 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 196:
-#line 1666 "compilers/imcc/imcc.y"
+#line 1693 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 197:
-#line 1671 "compilers/imcc/imcc.y"
+#line 1698 "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 */
@@ -4112,87 +4139,87 @@
     break;
 
   case 198:
-#line 1684 "compilers/imcc/imcc.y"
+#line 1711 "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 1686 "compilers/imcc/imcc.y"
+#line 1713 "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 1688 "compilers/imcc/imcc.y"
+#line 1715 "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 1690 "compilers/imcc/imcc.y"
+#line 1717 "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 1692 "compilers/imcc/imcc.y"
+#line 1719 "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 1694 "compilers/imcc/imcc.y"
+#line 1721 "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 1696 "compilers/imcc/imcc.y"
+#line 1723 "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 1698 "compilers/imcc/imcc.y"
+#line 1725 "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 1700 "compilers/imcc/imcc.y"
+#line 1727 "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 1702 "compilers/imcc/imcc.y"
+#line 1729 "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 1704 "compilers/imcc/imcc.y"
+#line 1731 "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 1706 "compilers/imcc/imcc.y"
+#line 1733 "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 1708 "compilers/imcc/imcc.y"
+#line 1735 "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 1712 "compilers/imcc/imcc.y"
+#line 1739 "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 1714 "compilers/imcc/imcc.y"
+#line 1741 "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 1716 "compilers/imcc/imcc.y"
+#line 1743 "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 1719 "compilers/imcc/imcc.y"
+#line 1746 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4201,14 +4228,14 @@
     break;
 
   case 215:
-#line 1725 "compilers/imcc/imcc.y"
+#line 1752 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
   case 216:
-#line 1729 "compilers/imcc/imcc.y"
+#line 1756 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4216,144 +4243,144 @@
     break;
 
   case 220:
-#line 1737 "compilers/imcc/imcc.y"
+#line 1764 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
   case 221:
-#line 1744 "compilers/imcc/imcc.y"
+#line 1771 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 222:
-#line 1745 "compilers/imcc/imcc.y"
+#line 1772 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 223:
-#line 1746 "compilers/imcc/imcc.y"
+#line 1773 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 224:
-#line 1750 "compilers/imcc/imcc.y"
+#line 1777 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 225:
-#line 1751 "compilers/imcc/imcc.y"
+#line 1778 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 226:
-#line 1752 "compilers/imcc/imcc.y"
+#line 1779 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 227:
-#line 1753 "compilers/imcc/imcc.y"
+#line 1780 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 228:
-#line 1754 "compilers/imcc/imcc.y"
+#line 1781 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 229:
-#line 1755 "compilers/imcc/imcc.y"
+#line 1782 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 230:
-#line 1756 "compilers/imcc/imcc.y"
+#line 1783 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 231:
-#line 1757 "compilers/imcc/imcc.y"
+#line 1784 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 232:
-#line 1758 "compilers/imcc/imcc.y"
+#line 1785 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 233:
-#line 1759 "compilers/imcc/imcc.y"
+#line 1786 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 234:
-#line 1760 "compilers/imcc/imcc.y"
+#line 1787 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 235:
-#line 1761 "compilers/imcc/imcc.y"
+#line 1788 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 236:
-#line 1762 "compilers/imcc/imcc.y"
+#line 1789 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 237:
-#line 1763 "compilers/imcc/imcc.y"
+#line 1790 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 238:
-#line 1764 "compilers/imcc/imcc.y"
+#line 1791 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 239:
-#line 1765 "compilers/imcc/imcc.y"
+#line 1792 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 240:
-#line 1766 "compilers/imcc/imcc.y"
+#line 1793 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 241:
-#line 1767 "compilers/imcc/imcc.y"
+#line 1794 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 242:
-#line 1768 "compilers/imcc/imcc.y"
+#line 1795 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 243:
-#line 1769 "compilers/imcc/imcc.y"
+#line 1796 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 244:
-#line 1770 "compilers/imcc/imcc.y"
+#line 1797 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 245:
-#line 1771 "compilers/imcc/imcc.y"
+#line 1798 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 246:
-#line 1772 "compilers/imcc/imcc.y"
+#line 1799 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 247:
-#line 1778 "compilers/imcc/imcc.y"
+#line 1805 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4362,84 +4389,84 @@
     break;
 
   case 248:
-#line 1783 "compilers/imcc/imcc.y"
+#line 1810 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 249:
-#line 1790 "compilers/imcc/imcc.y"
+#line 1817 "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 1796 "compilers/imcc/imcc.y"
+#line 1823 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 251:
-#line 1797 "compilers/imcc/imcc.y"
+#line 1824 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 252:
-#line 1798 "compilers/imcc/imcc.y"
+#line 1825 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 253:
-#line 1799 "compilers/imcc/imcc.y"
+#line 1826 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 254:
-#line 1800 "compilers/imcc/imcc.y"
+#line 1827 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 255:
-#line 1801 "compilers/imcc/imcc.y"
+#line 1828 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 256:
-#line 1802 "compilers/imcc/imcc.y"
+#line 1829 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 257:
-#line 1803 "compilers/imcc/imcc.y"
+#line 1830 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 258:
-#line 1804 "compilers/imcc/imcc.y"
+#line 1831 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 259:
-#line 1805 "compilers/imcc/imcc.y"
+#line 1832 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 260:
-#line 1806 "compilers/imcc/imcc.y"
+#line 1833 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 261:
-#line 1807 "compilers/imcc/imcc.y"
+#line 1834 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 262:
-#line 1808 "compilers/imcc/imcc.y"
+#line 1835 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 263:
-#line 1814 "compilers/imcc/imcc.y"
+#line 1841 "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,
@@ -4450,22 +4477,22 @@
     break;
 
   case 264:
-#line 1824 "compilers/imcc/imcc.y"
+#line 1851 "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 1825 "compilers/imcc/imcc.y"
+#line 1852 "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 1826 "compilers/imcc/imcc.y"
+#line 1853 "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 1828 "compilers/imcc/imcc.y"
+#line 1855 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4474,7 +4501,7 @@
     break;
 
   case 268:
-#line 1834 "compilers/imcc/imcc.y"
+#line 1861 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4491,7 +4518,7 @@
     break;
 
   case 269:
-#line 1848 "compilers/imcc/imcc.y"
+#line 1875 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4500,12 +4527,12 @@
     break;
 
   case 270:
-#line 1853 "compilers/imcc/imcc.y"
+#line 1880 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 271:
-#line 1859 "compilers/imcc/imcc.y"
+#line 1886 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -4513,17 +4540,17 @@
     break;
 
   case 272:
-#line 1863 "compilers/imcc/imcc.y"
+#line 1890 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 273:
-#line 1867 "compilers/imcc/imcc.y"
+#line 1894 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 274:
-#line 1869 "compilers/imcc/imcc.y"
+#line 1896 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4536,7 +4563,7 @@
     break;
 
   case 275:
-#line 1879 "compilers/imcc/imcc.y"
+#line 1906 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4549,7 +4576,7 @@
     break;
 
   case 276:
-#line 1889 "compilers/imcc/imcc.y"
+#line 1916 "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));
@@ -4558,7 +4585,7 @@
     break;
 
   case 277:
-#line 1895 "compilers/imcc/imcc.y"
+#line 1922 "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));
@@ -4567,42 +4594,42 @@
     break;
 
   case 278:
-#line 1903 "compilers/imcc/imcc.y"
+#line 1930 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 279:
-#line 1907 "compilers/imcc/imcc.y"
+#line 1934 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 280:
-#line 1908 "compilers/imcc/imcc.y"
+#line 1935 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 281:
-#line 1912 "compilers/imcc/imcc.y"
+#line 1939 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; }
     break;
 
   case 282:
-#line 1913 "compilers/imcc/imcc.y"
+#line 1940 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 283:
-#line 1916 "compilers/imcc/imcc.y"
+#line 1943 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 284:
-#line 1920 "compilers/imcc/imcc.y"
+#line 1947 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 285:
-#line 1925 "compilers/imcc/imcc.y"
+#line 1952 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4615,7 +4642,7 @@
     break;
 
   case 286:
-#line 1935 "compilers/imcc/imcc.y"
+#line 1962 "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));
@@ -4623,7 +4650,7 @@
     break;
 
   case 287:
-#line 1940 "compilers/imcc/imcc.y"
+#line 1967 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4636,7 +4663,7 @@
     break;
 
   case 288:
-#line 1950 "compilers/imcc/imcc.y"
+#line 1977 "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));
@@ -4644,124 +4671,124 @@
     break;
 
   case 289:
-#line 1954 "compilers/imcc/imcc.y"
+#line 1981 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 290:
-#line 1958 "compilers/imcc/imcc.y"
+#line 1985 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 291:
-#line 1959 "compilers/imcc/imcc.y"
+#line 1986 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 292:
-#line 1964 "compilers/imcc/imcc.y"
+#line 1991 "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 1968 "compilers/imcc/imcc.y"
+#line 1995 "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 1972 "compilers/imcc/imcc.y"
+#line 1999 "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 1979 "compilers/imcc/imcc.y"
+#line 2006 "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 1983 "compilers/imcc/imcc.y"
+#line 2010 "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 1987 "compilers/imcc/imcc.y"
+#line 2014 "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 1993 "compilers/imcc/imcc.y"
+#line 2020 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 299:
-#line 1994 "compilers/imcc/imcc.y"
+#line 2021 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 300:
-#line 1998 "compilers/imcc/imcc.y"
+#line 2025 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 301:
-#line 1999 "compilers/imcc/imcc.y"
+#line 2026 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 302:
-#line 2000 "compilers/imcc/imcc.y"
+#line 2027 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 303:
-#line 2001 "compilers/imcc/imcc.y"
+#line 2028 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 304:
-#line 2002 "compilers/imcc/imcc.y"
+#line 2029 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 305:
-#line 2003 "compilers/imcc/imcc.y"
+#line 2030 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 308:
-#line 2012 "compilers/imcc/imcc.y"
+#line 2039 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 309:
-#line 2013 "compilers/imcc/imcc.y"
+#line 2040 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 310:
-#line 2017 "compilers/imcc/imcc.y"
+#line 2044 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 312:
-#line 2022 "compilers/imcc/imcc.y"
+#line 2049 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 313:
-#line 2024 "compilers/imcc/imcc.y"
+#line 2051 "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);
@@ -4771,7 +4798,7 @@
     break;
 
   case 314:
-#line 2031 "compilers/imcc/imcc.y"
+#line 2058 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -4779,37 +4806,37 @@
     break;
 
   case 316:
-#line 2038 "compilers/imcc/imcc.y"
+#line 2065 "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 2039 "compilers/imcc/imcc.y"
+#line 2066 "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 2043 "compilers/imcc/imcc.y"
+#line 2070 "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 2044 "compilers/imcc/imcc.y"
+#line 2071 "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 2048 "compilers/imcc/imcc.y"
+#line 2075 "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 2049 "compilers/imcc/imcc.y"
+#line 2076 "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 2063 "compilers/imcc/imcc.y"
+#line 2090 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
@@ -4817,7 +4844,7 @@
     break;
 
   case 327:
-#line 2068 "compilers/imcc/imcc.y"
+#line 2095 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -4826,7 +4853,7 @@
     break;
 
   case 328:
-#line 2076 "compilers/imcc/imcc.y"
+#line 2103 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
@@ -4834,7 +4861,7 @@
     break;
 
   case 329:
-#line 2081 "compilers/imcc/imcc.y"
+#line 2108 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -4843,12 +4870,12 @@
     break;
 
   case 330:
-#line 2089 "compilers/imcc/imcc.y"
+#line 2116 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 331:
-#line 2091 "compilers/imcc/imcc.y"
+#line 2118 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -4856,7 +4883,7 @@
     break;
 
   case 332:
-#line 2099 "compilers/imcc/imcc.y"
+#line 2126 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
                (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -4865,53 +4892,53 @@
     break;
 
   case 333:
-#line 2107 "compilers/imcc/imcc.y"
+#line 2134 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 334:
-#line 2108 "compilers/imcc/imcc.y"
+#line 2135 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 335:
-#line 2109 "compilers/imcc/imcc.y"
+#line 2136 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 336:
-#line 2110 "compilers/imcc/imcc.y"
+#line 2137 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 337:
-#line 2111 "compilers/imcc/imcc.y"
+#line 2138 "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 2115 "compilers/imcc/imcc.y"
+#line 2142 "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 2116 "compilers/imcc/imcc.y"
+#line 2143 "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 2117 "compilers/imcc/imcc.y"
+#line 2144 "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 2118 "compilers/imcc/imcc.y"
+#line 2145 "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 4904 "compilers/imcc/imcparser.c"
+#line 4931 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5125,7 +5152,7 @@
 }
 
 
-#line 2124 "compilers/imcc/imcc.y"
+#line 2151 "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	Sat Jan  3 13:47:27 2009
@@ -295,7 +295,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 757 "compilers/imcc/imcc.y"
+#line 784 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;

Modified: trunk/tools/build/headerizer.pl
==============================================================================
--- trunk/tools/build/headerizer.pl	(original)
+++ trunk/tools/build/headerizer.pl	Sat Jan  3 13:47:27 2009
@@ -548,8 +548,8 @@
             for my $cfile ( sort keys %{$cfiles} ) {
                 my @funcs = @{ $cfiles->{$cfile} };
                 @funcs = grep { not $_->{is_static} } @funcs;    # skip statics
-                $header = replace_headerized_declarations( $header, $cfile, $hfile, @funcs )
-                    unless $cfile =~ /\.y$/;
+
+                $header = replace_headerized_declarations( $header, $cfile, $hfile, @funcs );
             }
 
             write_file( $hfile, $header );



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About