[svn:parrot] r37890 - trunk/compilers/imcc

coke at svn.parrot.org coke at svn.parrot.org
Fri Apr 3 14:05:21 UTC 2009


Author: coke
Date: Fri Apr  3 14:05:19 2009
New Revision: 37890
URL: https://trac.parrot.org/parrot/changeset/37890

Log:
[t/docs] Add some more stub docs

Let headerizer do the heavy lifting on this one. 'make headizer' no longer
warns of missing pod, though the c function doc test will warn these
are merely boilerplate entries.

Modified:
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imcparser.c
   trunk/compilers/imcc/imcparser.h

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	Fri Apr  3 13:36:30 2009	(r37889)
+++ trunk/compilers/imcc/imcc.y	Fri Apr  3 14:05:19 2009	(r37890)
@@ -339,18 +339,25 @@
 
 
 /*
- * MK_I: build and emitb instruction by INS
- *
- * fmt may contain:
- *   op %s, %s # comment
- * or just
- *   op
- *
- *
- *  NOTE: Most usage of this function is with
- *        IMCC_INFO(interp)->cur_unit, but there are some
- *        exceptions. Thus, we can't easily factorize that piece of
- *        code.
+
+=item C<static Instruction * MK_I(PARROT_INTERP, IMC_Unit *unit, const char
+*fmt, int n, ...)>
+
+build and emitb instruction by INS. fmt may contain:
+
+  op %s, %s # comment
+
+or just
+
+  op
+
+NOTE: Most usage of this function is with
+IMCC_INFO(interp)->cur_unit, but there are some
+exceptions. Thus, we can't easily factorize that piece of
+code.
+
+=cut
+
  */
 
 PARROT_IGNORABLE_RESULT
@@ -386,6 +393,15 @@
                IMCC_INFO(interp)->keyvec, 1);
 }
 
+/*
+
+=item C<static Instruction* mk_pmc_const(PARROT_INTERP, IMC_Unit *unit, const
+char *type, SymReg *left, const char *constant)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static Instruction*
@@ -441,6 +457,15 @@
     return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
 }
 
+/*
+
+=item C<static Instruction* mk_pmc_const_named(PARROT_INTERP, IMC_Unit *unit,
+const char *name, SymReg *left, const char *constant)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static Instruction*
@@ -499,6 +524,15 @@
     return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
 }
 
+/*
+
+=item C<static Instruction* func_ins(PARROT_INTERP, IMC_Unit *unit, SymReg *lhs,
+const char *op, SymReg **r, int n, int keyv, int emit)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static Instruction*
@@ -515,11 +549,14 @@
     keyv <<= 1;
     return INS(interp, unit, op, "", r, n+1, keyv, emit);
 }
+
 /*
- * special instructions
- *
- * labels and such
- */
+
+=item C<static void clear_state(PARROT_INTERP)>
+
+=cut
+
+*/
 
 static void
 clear_state(PARROT_INTERP)
@@ -529,6 +566,15 @@
     IMCC_INFO(interp) -> keyvec = 0;
 }
 
+/*
+
+=item C<Instruction * INS_LABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0, int
+emit)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 Instruction *
 INS_LABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0), int emit)
@@ -545,6 +591,14 @@
     return ins;
 }
 
+/*
+
+=item C<static Instruction * iLABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 static Instruction *
 iLABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0))
@@ -557,6 +611,16 @@
     return i;
 }
 
+/*
+
+=item C<static Instruction * iSUBROUTINE(PARROT_INTERP, IMC_Unit *unit, SymReg
+*r)>
+
+=cut
+
+*/
+
+
 PARROT_CANNOT_RETURN_NULL
 static Instruction *
 iSUBROUTINE(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r))
@@ -575,8 +639,16 @@
 }
 
 /*
- * substr or X = P[key]
- */
+
+=item C<static Instruction * iINDEXFETCH(PARROT_INTERP, IMC_Unit *unit, SymReg
+*r0, SymReg *r1, SymReg *r2)>
+
+substr or X = P[key]
+
+=cut
+
+*/
+
 PARROT_CAN_RETURN_NULL
 static Instruction *
 iINDEXFETCH(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
@@ -588,8 +660,15 @@
 }
 
 /*
- * substr or P[key] = X
- */
+
+=item C<static Instruction * iINDEXSET(PARROT_INTERP, IMC_Unit *unit, SymReg
+*r0, SymReg *r1, SymReg *r2)>
+
+substr or P[key] = X
+
+=cut
+
+*/
 
 PARROT_CAN_RETURN_NULL
 static Instruction *
@@ -608,6 +687,14 @@
     return NULL;
 }
 
+/*
+
+=item C<static const char * inv_op(const char *op)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static const char *
@@ -618,6 +705,14 @@
     return get_neg_op(op, &n);
 }
 
+/*
+
+=item C<Instruction * IMCC_create_itcall_label(PARROT_INTERP)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 Instruction *
 IMCC_create_itcall_label(PARROT_INTERP)
@@ -639,6 +734,14 @@
     return i;
 }
 
+/*
+
+=item C<static SymReg * mk_sub_address_fromc(PARROT_INTERP, const char *name)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 static SymReg *
 mk_sub_address_fromc(PARROT_INTERP, ARGIN(const char *name))
@@ -655,6 +758,14 @@
     return r;
 }
 
+/*
+
+=item C<static SymReg * mk_sub_address_u(PARROT_INTERP, const char *name)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 static SymReg *
 mk_sub_address_u(PARROT_INTERP, ARGIN(const char *name))
@@ -666,6 +777,14 @@
     return r;
 }
 
+/*
+
+=item C<void IMCC_itcall_sub(PARROT_INTERP, SymReg *sub)>
+
+=cut
+
+*/
+
 void
 IMCC_itcall_sub(PARROT_INTERP, ARGIN(SymReg *sub))
 {
@@ -683,6 +802,15 @@
         IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->pcc_sub->calls_a_sub |= 1;
 }
 
+
+/*
+
+=item C<static void begin_return_or_yield(PARROT_INTERP, int yield)>
+
+=cut
+
+*/
+
 static void
 begin_return_or_yield(PARROT_INTERP, int yield)
 {
@@ -704,6 +832,14 @@
     interp->imc_info->asm_state = yield ? AsmInYield : AsmInReturn;
 }
 
+/*
+
+=item C<static void set_lexical(PARROT_INTERP, SymReg *r, const char *name)>
+
+=cut
+
+*/
+
 static void
 set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
 {
@@ -722,6 +858,15 @@
     r->use_count++;
 }
 
+/*
+
+=item C<static void add_pcc_named_arg(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_arg(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -735,6 +880,15 @@
     add_pcc_arg(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_arg_var(PARROT_INTERP, SymReg *cur_call,
+SymReg *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_arg_var(PARROT_INTERP, ARGMOD(SymReg *cur_call),
     ARGIN(SymReg *name), ARGIN(SymReg *value))
@@ -745,6 +899,15 @@
     add_pcc_arg(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_result(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_result(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -757,6 +920,15 @@
     add_pcc_result(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_param(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_param(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -769,6 +941,15 @@
     add_pcc_arg(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_return(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_return(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -781,6 +962,14 @@
     add_pcc_result(cur_call, value);
 }
 
+/*
+
+=item C<static void adv_named_set(PARROT_INTERP, char *name)>
+
+=cut
+
+*/
+
 /* XXX Can name be consted? */
 static void
 adv_named_set(PARROT_INTERP, ARGIN(char *name))
@@ -793,6 +982,14 @@
     IMCC_INFO(interp)->adv_named_id = name;
 }
 
+/*
+
+=item C<static void do_loadlib(PARROT_INTERP, const char *lib)>
+
+=cut
+
+*/
+
 static void
 do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
 {

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	Fri Apr  3 13:36:30 2009	(r37889)
+++ trunk/compilers/imcc/imcparser.c	Fri Apr  3 14:05:19 2009	(r37890)
@@ -663,18 +663,25 @@
 
 
 /*
- * MK_I: build and emitb instruction by INS
- *
- * fmt may contain:
- *   op %s, %s # comment
- * or just
- *   op
- *
- *
- *  NOTE: Most usage of this function is with
- *        IMCC_INFO(interp)->cur_unit, but there are some
- *        exceptions. Thus, we can't easily factorize that piece of
- *        code.
+
+=item C<static Instruction * MK_I(PARROT_INTERP, IMC_Unit *unit, const char
+*fmt, int n, ...)>
+
+build and emitb instruction by INS. fmt may contain:
+
+  op %s, %s # comment
+
+or just
+
+  op
+
+NOTE: Most usage of this function is with
+IMCC_INFO(interp)->cur_unit, but there are some
+exceptions. Thus, we can't easily factorize that piece of
+code.
+
+=cut
+
  */
 
 PARROT_IGNORABLE_RESULT
@@ -710,6 +717,15 @@
                IMCC_INFO(interp)->keyvec, 1);
 }
 
+/*
+
+=item C<static Instruction* mk_pmc_const(PARROT_INTERP, IMC_Unit *unit, const
+char *type, SymReg *left, const char *constant)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static Instruction*
@@ -765,6 +781,15 @@
     return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
 }
 
+/*
+
+=item C<static Instruction* mk_pmc_const_named(PARROT_INTERP, IMC_Unit *unit,
+const char *name, SymReg *left, const char *constant)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static Instruction*
@@ -823,6 +848,15 @@
     return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
 }
 
+/*
+
+=item C<static Instruction* func_ins(PARROT_INTERP, IMC_Unit *unit, SymReg *lhs,
+const char *op, SymReg **r, int n, int keyv, int emit)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static Instruction*
@@ -839,11 +873,14 @@
     keyv <<= 1;
     return INS(interp, unit, op, "", r, n+1, keyv, emit);
 }
+
 /*
- * special instructions
- *
- * labels and such
- */
+
+=item C<static void clear_state(PARROT_INTERP)>
+
+=cut
+
+*/
 
 static void
 clear_state(PARROT_INTERP)
@@ -853,6 +890,15 @@
     IMCC_INFO(interp) -> keyvec = 0;
 }
 
+/*
+
+=item C<Instruction * INS_LABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0, int
+emit)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 Instruction *
 INS_LABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0), int emit)
@@ -869,6 +915,14 @@
     return ins;
 }
 
+/*
+
+=item C<static Instruction * iLABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 static Instruction *
 iLABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r0))
@@ -881,6 +935,16 @@
     return i;
 }
 
+/*
+
+=item C<static Instruction * iSUBROUTINE(PARROT_INTERP, IMC_Unit *unit, SymReg
+*r)>
+
+=cut
+
+*/
+
+
 PARROT_CANNOT_RETURN_NULL
 static Instruction *
 iSUBROUTINE(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r))
@@ -899,8 +963,16 @@
 }
 
 /*
- * substr or X = P[key]
- */
+
+=item C<static Instruction * iINDEXFETCH(PARROT_INTERP, IMC_Unit *unit, SymReg
+*r0, SymReg *r1, SymReg *r2)>
+
+substr or X = P[key]
+
+=cut
+
+*/
+
 PARROT_CAN_RETURN_NULL
 static Instruction *
 iINDEXFETCH(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
@@ -912,8 +984,15 @@
 }
 
 /*
- * substr or P[key] = X
- */
+
+=item C<static Instruction * iINDEXSET(PARROT_INTERP, IMC_Unit *unit, SymReg
+*r0, SymReg *r1, SymReg *r2)>
+
+substr or P[key] = X
+
+=cut
+
+*/
 
 PARROT_CAN_RETURN_NULL
 static Instruction *
@@ -932,6 +1011,14 @@
     return NULL;
 }
 
+/*
+
+=item C<static const char * inv_op(const char *op)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static const char *
@@ -942,6 +1029,14 @@
     return get_neg_op(op, &n);
 }
 
+/*
+
+=item C<Instruction * IMCC_create_itcall_label(PARROT_INTERP)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 Instruction *
 IMCC_create_itcall_label(PARROT_INTERP)
@@ -963,6 +1058,14 @@
     return i;
 }
 
+/*
+
+=item C<static SymReg * mk_sub_address_fromc(PARROT_INTERP, const char *name)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 static SymReg *
 mk_sub_address_fromc(PARROT_INTERP, ARGIN(const char *name))
@@ -979,6 +1082,14 @@
     return r;
 }
 
+/*
+
+=item C<static SymReg * mk_sub_address_u(PARROT_INTERP, const char *name)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 static SymReg *
 mk_sub_address_u(PARROT_INTERP, ARGIN(const char *name))
@@ -990,6 +1101,14 @@
     return r;
 }
 
+/*
+
+=item C<void IMCC_itcall_sub(PARROT_INTERP, SymReg *sub)>
+
+=cut
+
+*/
+
 void
 IMCC_itcall_sub(PARROT_INTERP, ARGIN(SymReg *sub))
 {
@@ -1007,6 +1126,15 @@
         IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->pcc_sub->calls_a_sub |= 1;
 }
 
+
+/*
+
+=item C<static void begin_return_or_yield(PARROT_INTERP, int yield)>
+
+=cut
+
+*/
+
 static void
 begin_return_or_yield(PARROT_INTERP, int yield)
 {
@@ -1028,6 +1156,14 @@
     interp->imc_info->asm_state = yield ? AsmInYield : AsmInReturn;
 }
 
+/*
+
+=item C<static void set_lexical(PARROT_INTERP, SymReg *r, const char *name)>
+
+=cut
+
+*/
+
 static void
 set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
 {
@@ -1046,6 +1182,15 @@
     r->use_count++;
 }
 
+/*
+
+=item C<static void add_pcc_named_arg(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_arg(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -1059,6 +1204,15 @@
     add_pcc_arg(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_arg_var(PARROT_INTERP, SymReg *cur_call,
+SymReg *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_arg_var(PARROT_INTERP, ARGMOD(SymReg *cur_call),
     ARGIN(SymReg *name), ARGIN(SymReg *value))
@@ -1069,6 +1223,15 @@
     add_pcc_arg(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_result(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_result(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -1081,6 +1244,15 @@
     add_pcc_result(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_param(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_param(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -1093,6 +1265,15 @@
     add_pcc_arg(cur_call, value);
 }
 
+/*
+
+=item C<static void add_pcc_named_return(PARROT_INTERP, SymReg *cur_call, const
+char *name, SymReg *value)>
+
+=cut
+
+*/
+
 static void
 add_pcc_named_return(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
         ARGIN(SymReg *value))
@@ -1105,6 +1286,14 @@
     add_pcc_result(cur_call, value);
 }
 
+/*
+
+=item C<static void adv_named_set(PARROT_INTERP, char *name)>
+
+=cut
+
+*/
+
 /* XXX Can name be consted? */
 static void
 adv_named_set(PARROT_INTERP, ARGIN(char *name))
@@ -1117,6 +1306,14 @@
     IMCC_INFO(interp)->adv_named_id = name;
 }
 
+/*
+
+=item C<static void do_loadlib(PARROT_INTERP, const char *lib)>
+
+=cut
+
+*/
+
 static void
 do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
 {
@@ -1151,7 +1348,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 810 "compilers/imcc/imcc.y"
+#line 1007 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;
@@ -1160,7 +1357,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1153 "compilers/imcc/imcparser.c"
+#line 1350 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1173,7 +1370,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1166 "compilers/imcc/imcparser.c"
+#line 1363 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1592,40 +1789,40 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   905,   905,   909,   910,   914,   915,   916,   922,   928,
-     929,   930,   931,   935,   936,   945,   950,   957,   969,   981,
-     981,   990,   990,   996,   996,  1003,  1004,  1008,  1009,  1013,
-    1014,  1015,  1016,  1017,  1018,  1019,  1022,  1022,  1031,  1030,
-    1042,  1046,  1054,  1058,  1062,  1062,  1074,  1076,  1080,  1095,
-    1103,  1108,  1112,  1116,  1107,  1128,  1129,  1130,  1143,  1143,
-    1147,  1161,  1165,  1171,  1180,  1186,  1195,  1201,  1210,  1216,
-    1225,  1233,  1238,  1249,  1252,  1257,  1265,  1266,  1267,  1268,
-    1269,  1280,  1291,  1294,  1296,  1301,  1300,  1333,  1334,  1338,
-    1339,  1343,  1344,  1348,  1349,  1353,  1354,  1355,  1356,  1357,
-    1358,  1359,  1360,  1361,  1362,  1363,  1364,  1365,  1366,  1370,
-    1375,  1379,  1384,  1388,  1392,  1397,  1406,  1407,  1411,  1416,
-    1417,  1425,  1426,  1426,  1441,  1442,  1446,  1447,  1448,  1449,
-    1450,  1451,  1456,  1456,  1459,  1467,  1467,  1473,  1474,  1479,
-    1487,  1488,  1493,  1501,  1505,  1510,  1509,  1522,  1523,  1527,
-    1528,  1538,  1542,  1552,  1560,  1561,  1573,  1577,  1579,  1580,
-    1581,  1582,  1583,  1587,  1588,  1592,  1593,  1597,  1606,  1607,
-    1618,  1625,  1634,  1644,  1645,  1650,  1651,  1652,  1652,  1668,
-    1672,  1672,  1679,  1680,  1680,  1686,  1692,  1696,  1708,  1709,
-    1710,  1711,  1712,  1713,  1717,  1718,  1719,  1720,  1724,  1737,
-    1739,  1741,  1743,  1745,  1750,  1753,  1760,  1759,  1768,  1769,
-    1770,  1771,  1779,  1780,  1781,  1785,  1786,  1787,  1788,  1789,
-    1790,  1791,  1792,  1793,  1794,  1795,  1796,  1797,  1798,  1799,
-    1800,  1801,  1802,  1803,  1804,  1805,  1806,  1807,  1813,  1812,
-    1824,  1831,  1832,  1833,  1834,  1835,  1836,  1837,  1838,  1839,
-    1840,  1841,  1842,  1843,  1848,  1859,  1860,  1861,  1862,  1868,
-    1882,  1888,  1894,  1893,  1902,  1903,  1913,  1923,  1929,  1934,
-    1943,  1947,  1948,  1952,  1953,  1956,  1960,  1964,  1974,  1979,
-    1989,  1994,  1998,  1999,  2003,  2007,  2011,  2018,  2022,  2026,
-    2033,  2034,  2038,  2039,  2040,  2041,  2042,  2043,  2047,  2048,
-    2052,  2053,  2057,  2058,  2062,  2063,  2070,  2077,  2078,  2079,
-    2083,  2084,  2088,  2089,  2093,  2094,  2098,  2099,  2103,  2103,
-    2116,  2116,  2129,  2130,  2138,  2147,  2148,  2149,  2150,  2151,
-    2155,  2156,  2157,  2158
+       0,  1102,  1102,  1106,  1107,  1111,  1112,  1113,  1119,  1125,
+    1126,  1127,  1128,  1132,  1133,  1142,  1147,  1154,  1166,  1178,
+    1178,  1187,  1187,  1193,  1193,  1200,  1201,  1205,  1206,  1210,
+    1211,  1212,  1213,  1214,  1215,  1216,  1219,  1219,  1228,  1227,
+    1239,  1243,  1251,  1255,  1259,  1259,  1271,  1273,  1277,  1292,
+    1300,  1305,  1309,  1313,  1304,  1325,  1326,  1327,  1340,  1340,
+    1344,  1358,  1362,  1368,  1377,  1383,  1392,  1398,  1407,  1413,
+    1422,  1430,  1435,  1446,  1449,  1454,  1462,  1463,  1464,  1465,
+    1466,  1477,  1488,  1491,  1493,  1498,  1497,  1530,  1531,  1535,
+    1536,  1540,  1541,  1545,  1546,  1550,  1551,  1552,  1553,  1554,
+    1555,  1556,  1557,  1558,  1559,  1560,  1561,  1562,  1563,  1567,
+    1572,  1576,  1581,  1585,  1589,  1594,  1603,  1604,  1608,  1613,
+    1614,  1622,  1623,  1623,  1638,  1639,  1643,  1644,  1645,  1646,
+    1647,  1648,  1653,  1653,  1656,  1664,  1664,  1670,  1671,  1676,
+    1684,  1685,  1690,  1698,  1702,  1707,  1706,  1719,  1720,  1724,
+    1725,  1735,  1739,  1749,  1757,  1758,  1770,  1774,  1776,  1777,
+    1778,  1779,  1780,  1784,  1785,  1789,  1790,  1794,  1803,  1804,
+    1815,  1822,  1831,  1841,  1842,  1847,  1848,  1849,  1849,  1865,
+    1869,  1869,  1876,  1877,  1877,  1883,  1889,  1893,  1905,  1906,
+    1907,  1908,  1909,  1910,  1914,  1915,  1916,  1917,  1921,  1934,
+    1936,  1938,  1940,  1942,  1947,  1950,  1957,  1956,  1965,  1966,
+    1967,  1968,  1976,  1977,  1978,  1982,  1983,  1984,  1985,  1986,
+    1987,  1988,  1989,  1990,  1991,  1992,  1993,  1994,  1995,  1996,
+    1997,  1998,  1999,  2000,  2001,  2002,  2003,  2004,  2010,  2009,
+    2021,  2028,  2029,  2030,  2031,  2032,  2033,  2034,  2035,  2036,
+    2037,  2038,  2039,  2040,  2045,  2056,  2057,  2058,  2059,  2065,
+    2079,  2085,  2091,  2090,  2099,  2100,  2110,  2120,  2126,  2131,
+    2140,  2144,  2145,  2149,  2150,  2153,  2157,  2161,  2171,  2176,
+    2186,  2191,  2195,  2196,  2200,  2204,  2208,  2215,  2219,  2223,
+    2230,  2231,  2235,  2236,  2237,  2238,  2239,  2240,  2244,  2245,
+    2249,  2250,  2254,  2255,  2259,  2260,  2267,  2274,  2275,  2276,
+    2280,  2281,  2285,  2286,  2290,  2291,  2295,  2296,  2300,  2300,
+    2313,  2313,  2326,  2327,  2335,  2344,  2345,  2346,  2347,  2348,
+    2352,  2353,  2354,  2355
 };
 #endif
 
@@ -2976,22 +3173,22 @@
   switch (yyn)
     {
         case 2:
-#line 905 "compilers/imcc/imcc.y"
+#line 1102 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
-#line 914 "compilers/imcc/imcc.y"
+#line 1111 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
-#line 915 "compilers/imcc/imcc.y"
+#line 1112 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
-#line 917 "compilers/imcc/imcc.y"
+#line 1114 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3000,7 +3197,7 @@
     break;
 
   case 8:
-#line 923 "compilers/imcc/imcc.y"
+#line 1120 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3009,32 +3206,32 @@
     break;
 
   case 9:
-#line 928 "compilers/imcc/imcc.y"
+#line 1125 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
-#line 929 "compilers/imcc/imcc.y"
+#line 1126 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
-#line 930 "compilers/imcc/imcc.y"
+#line 1127 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
-#line 931 "compilers/imcc/imcc.y"
+#line 1128 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
-#line 935 "compilers/imcc/imcc.y"
+#line 1132 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
-#line 937 "compilers/imcc/imcc.y"
+#line 1134 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3043,7 +3240,7 @@
     break;
 
   case 15:
-#line 946 "compilers/imcc/imcc.y"
+#line 1143 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            set_filename(interp, (yyvsp[(4) - (5)].s));
@@ -3051,14 +3248,14 @@
     break;
 
   case 16:
-#line 951 "compilers/imcc/imcc.y"
+#line 1148 "compilers/imcc/imcc.y"
     {
            set_filename(interp, (yyvsp[(2) - (3)].s));
          }
     break;
 
   case 17:
-#line 958 "compilers/imcc/imcc.y"
+#line 1155 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
            * store annotation like it's an instruction. */
@@ -3069,7 +3266,7 @@
     break;
 
   case 18:
-#line 970 "compilers/imcc/imcc.y"
+#line 1167 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             CONTEXT(interp)->current_HLL =
@@ -3081,12 +3278,12 @@
     break;
 
   case 19:
-#line 981 "compilers/imcc/imcc.y"
+#line 1178 "compilers/imcc/imcc.y"
     { pesky_global__is_def = 1; }
     break;
 
   case 20:
-#line 982 "compilers/imcc/imcc.y"
+#line 1179 "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));
@@ -3095,12 +3292,12 @@
     break;
 
   case 21:
-#line 990 "compilers/imcc/imcc.y"
+#line 1187 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 22:
-#line 991 "compilers/imcc/imcc.y"
+#line 1188 "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));
            pesky_global__is_def = 0;
@@ -3108,12 +3305,12 @@
     break;
 
   case 23:
-#line 996 "compilers/imcc/imcc.y"
+#line 1193 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 24:
-#line 997 "compilers/imcc/imcc.y"
+#line 1194 "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));
            pesky_global__is_def = 0;
@@ -3121,37 +3318,37 @@
     break;
 
   case 29:
-#line 1013 "compilers/imcc/imcc.y"
+#line 1210 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
-#line 1014 "compilers/imcc/imcc.y"
+#line 1211 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
-#line 1015 "compilers/imcc/imcc.y"
+#line 1212 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
-#line 1016 "compilers/imcc/imcc.y"
+#line 1213 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
-#line 1017 "compilers/imcc/imcc.y"
+#line 1214 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
-#line 1022 "compilers/imcc/imcc.y"
+#line 1219 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
-#line 1024 "compilers/imcc/imcc.y"
+#line 1221 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3161,7 +3358,7 @@
     break;
 
   case 38:
-#line 1031 "compilers/imcc/imcc.y"
+#line 1228 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3169,7 +3366,7 @@
     break;
 
   case 39:
-#line 1036 "compilers/imcc/imcc.y"
+#line 1233 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3179,14 +3376,14 @@
     break;
 
   case 40:
-#line 1043 "compilers/imcc/imcc.y"
+#line 1240 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
   case 41:
-#line 1047 "compilers/imcc/imcc.y"
+#line 1244 "compilers/imcc/imcc.y"
     {
            SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
            set_lexical(interp, r, (yyvsp[(2) - (4)].s));
@@ -3197,17 +3394,17 @@
     break;
 
   case 42:
-#line 1054 "compilers/imcc/imcc.y"
+#line 1251 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
-#line 1062 "compilers/imcc/imcc.y"
+#line 1259 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
-#line 1065 "compilers/imcc/imcc.y"
+#line 1262 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3218,7 +3415,7 @@
     break;
 
   case 48:
-#line 1081 "compilers/imcc/imcc.y"
+#line 1278 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3233,7 +3430,7 @@
     break;
 
   case 49:
-#line 1096 "compilers/imcc/imcc.y"
+#line 1293 "compilers/imcc/imcc.y"
     {
             if (IMCC_INFO(interp)->in_slice)
                 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3244,26 +3441,26 @@
     break;
 
   case 50:
-#line 1103 "compilers/imcc/imcc.y"
+#line 1300 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
-#line 1108 "compilers/imcc/imcc.y"
+#line 1305 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          }
     break;
 
   case 52:
-#line 1112 "compilers/imcc/imcc.y"
+#line 1309 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 53:
-#line 1116 "compilers/imcc/imcc.y"
+#line 1313 "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) {
@@ -3274,22 +3471,22 @@
     break;
 
   case 54:
-#line 1124 "compilers/imcc/imcc.y"
+#line 1321 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
-#line 1128 "compilers/imcc/imcc.y"
+#line 1325 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
-#line 1129 "compilers/imcc/imcc.y"
+#line 1326 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
-#line 1131 "compilers/imcc/imcc.y"
+#line 1328 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3302,17 +3499,17 @@
     break;
 
   case 58:
-#line 1143 "compilers/imcc/imcc.y"
+#line 1340 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 59:
-#line 1143 "compilers/imcc/imcc.y"
+#line 1340 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); pesky_global__is_def=0; }
     break;
 
   case 60:
-#line 1148 "compilers/imcc/imcc.y"
+#line 1345 "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));
@@ -3324,12 +3521,12 @@
     break;
 
   case 61:
-#line 1161 "compilers/imcc/imcc.y"
+#line 1358 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
-#line 1166 "compilers/imcc/imcc.y"
+#line 1363 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3338,7 +3535,7 @@
     break;
 
   case 63:
-#line 1172 "compilers/imcc/imcc.y"
+#line 1369 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3347,7 +3544,7 @@
     break;
 
   case 64:
-#line 1181 "compilers/imcc/imcc.y"
+#line 1378 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3356,7 +3553,7 @@
     break;
 
   case 65:
-#line 1187 "compilers/imcc/imcc.y"
+#line 1384 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3365,7 +3562,7 @@
     break;
 
   case 66:
-#line 1196 "compilers/imcc/imcc.y"
+#line 1393 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3374,7 +3571,7 @@
     break;
 
   case 67:
-#line 1202 "compilers/imcc/imcc.y"
+#line 1399 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3383,7 +3580,7 @@
     break;
 
   case 68:
-#line 1211 "compilers/imcc/imcc.y"
+#line 1408 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3392,7 +3589,7 @@
     break;
 
   case 69:
-#line 1217 "compilers/imcc/imcc.y"
+#line 1414 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3401,7 +3598,7 @@
     break;
 
   case 70:
-#line 1226 "compilers/imcc/imcc.y"
+#line 1423 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3409,7 +3606,7 @@
     break;
 
   case 71:
-#line 1234 "compilers/imcc/imcc.y"
+#line 1431 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3417,7 +3614,7 @@
     break;
 
   case 72:
-#line 1239 "compilers/imcc/imcc.y"
+#line 1436 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3427,14 +3624,14 @@
     break;
 
   case 73:
-#line 1249 "compilers/imcc/imcc.y"
+#line 1446 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
   case 74:
-#line 1253 "compilers/imcc/imcc.y"
+#line 1450 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3442,7 +3639,7 @@
     break;
 
   case 75:
-#line 1258 "compilers/imcc/imcc.y"
+#line 1455 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3450,27 +3647,27 @@
     break;
 
   case 76:
-#line 1265 "compilers/imcc/imcc.y"
+#line 1462 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
-#line 1266 "compilers/imcc/imcc.y"
+#line 1463 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
-#line 1267 "compilers/imcc/imcc.y"
+#line 1464 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
-#line 1268 "compilers/imcc/imcc.y"
+#line 1465 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
-#line 1270 "compilers/imcc/imcc.y"
+#line 1467 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3484,7 +3681,7 @@
     break;
 
   case 81:
-#line 1281 "compilers/imcc/imcc.y"
+#line 1478 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3498,12 +3695,12 @@
     break;
 
   case 82:
-#line 1291 "compilers/imcc/imcc.y"
+#line 1488 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
-#line 1301 "compilers/imcc/imcc.y"
+#line 1498 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3530,82 +3727,82 @@
     break;
 
   case 86:
-#line 1329 "compilers/imcc/imcc.y"
+#line 1526 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
-#line 1333 "compilers/imcc/imcc.y"
+#line 1530 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
-#line 1334 "compilers/imcc/imcc.y"
+#line 1531 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
-#line 1338 "compilers/imcc/imcc.y"
+#line 1535 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
-#line 1339 "compilers/imcc/imcc.y"
+#line 1536 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
-#line 1343 "compilers/imcc/imcc.y"
+#line 1540 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
-#line 1348 "compilers/imcc/imcc.y"
+#line 1545 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
-#line 1349 "compilers/imcc/imcc.y"
+#line 1546 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
-#line 1353 "compilers/imcc/imcc.y"
+#line 1550 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
-#line 1354 "compilers/imcc/imcc.y"
+#line 1551 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
-#line 1355 "compilers/imcc/imcc.y"
+#line 1552 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
-#line 1356 "compilers/imcc/imcc.y"
+#line 1553 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
-#line 1357 "compilers/imcc/imcc.y"
+#line 1554 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
-#line 1358 "compilers/imcc/imcc.y"
+#line 1555 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
-#line 1359 "compilers/imcc/imcc.y"
+#line 1556 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
-#line 1371 "compilers/imcc/imcc.y"
+#line 1568 "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));
@@ -3613,14 +3810,14 @@
     break;
 
   case 110:
-#line 1376 "compilers/imcc/imcc.y"
+#line 1573 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 111:
-#line 1380 "compilers/imcc/imcc.y"
+#line 1577 "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;
@@ -3628,21 +3825,21 @@
     break;
 
   case 112:
-#line 1385 "compilers/imcc/imcc.y"
+#line 1582 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 113:
-#line 1389 "compilers/imcc/imcc.y"
+#line 1586 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
     break;
 
   case 114:
-#line 1393 "compilers/imcc/imcc.y"
+#line 1590 "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));
@@ -3650,7 +3847,7 @@
     break;
 
   case 115:
-#line 1398 "compilers/imcc/imcc.y"
+#line 1595 "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));
@@ -3658,27 +3855,27 @@
     break;
 
   case 116:
-#line 1406 "compilers/imcc/imcc.y"
+#line 1603 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
-#line 1407 "compilers/imcc/imcc.y"
+#line 1604 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
-#line 1411 "compilers/imcc/imcc.y"
+#line 1608 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
-#line 1416 "compilers/imcc/imcc.y"
+#line 1613 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
-#line 1418 "compilers/imcc/imcc.y"
+#line 1615 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3686,17 +3883,17 @@
     break;
 
   case 121:
-#line 1425 "compilers/imcc/imcc.y"
+#line 1622 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
-#line 1426 "compilers/imcc/imcc.y"
+#line 1623 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 123:
-#line 1427 "compilers/imcc/imcc.y"
+#line 1624 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3711,57 +3908,57 @@
     break;
 
   case 124:
-#line 1441 "compilers/imcc/imcc.y"
+#line 1638 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
-#line 1442 "compilers/imcc/imcc.y"
+#line 1639 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
-#line 1446 "compilers/imcc/imcc.y"
+#line 1643 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
-#line 1447 "compilers/imcc/imcc.y"
+#line 1644 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
-#line 1448 "compilers/imcc/imcc.y"
+#line 1645 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
-#line 1449 "compilers/imcc/imcc.y"
+#line 1646 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
-#line 1450 "compilers/imcc/imcc.y"
+#line 1647 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 131:
-#line 1451 "compilers/imcc/imcc.y"
+#line 1648 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 132:
-#line 1456 "compilers/imcc/imcc.y"
+#line 1653 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 133:
-#line 1458 "compilers/imcc/imcc.y"
+#line 1655 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 134:
-#line 1460 "compilers/imcc/imcc.y"
+#line 1657 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
@@ -3769,22 +3966,22 @@
     break;
 
   case 135:
-#line 1467 "compilers/imcc/imcc.y"
+#line 1664 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 136:
-#line 1469 "compilers/imcc/imcc.y"
+#line 1666 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 137:
-#line 1473 "compilers/imcc/imcc.y"
+#line 1670 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 138:
-#line 1475 "compilers/imcc/imcc.y"
+#line 1672 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3792,7 +3989,7 @@
     break;
 
   case 139:
-#line 1480 "compilers/imcc/imcc.y"
+#line 1677 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3800,12 +3997,12 @@
     break;
 
   case 140:
-#line 1487 "compilers/imcc/imcc.y"
+#line 1684 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 141:
-#line 1489 "compilers/imcc/imcc.y"
+#line 1686 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3813,7 +4010,7 @@
     break;
 
   case 142:
-#line 1494 "compilers/imcc/imcc.y"
+#line 1691 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3821,17 +4018,17 @@
     break;
 
   case 143:
-#line 1501 "compilers/imcc/imcc.y"
+#line 1698 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 144:
-#line 1505 "compilers/imcc/imcc.y"
+#line 1702 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 145:
-#line 1510 "compilers/imcc/imcc.y"
+#line 1707 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -3839,7 +4036,7 @@
     break;
 
   case 146:
-#line 1515 "compilers/imcc/imcc.y"
+#line 1712 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
@@ -3847,22 +4044,22 @@
     break;
 
   case 147:
-#line 1522 "compilers/imcc/imcc.y"
+#line 1719 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 148:
-#line 1523 "compilers/imcc/imcc.y"
+#line 1720 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 149:
-#line 1527 "compilers/imcc/imcc.y"
+#line 1724 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 150:
-#line 1529 "compilers/imcc/imcc.y"
+#line 1726 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3875,14 +4072,14 @@
     break;
 
   case 151:
-#line 1539 "compilers/imcc/imcc.y"
+#line 1736 "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 1543 "compilers/imcc/imcc.y"
+#line 1740 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3895,66 +4092,66 @@
     break;
 
   case 153:
-#line 1553 "compilers/imcc/imcc.y"
+#line 1750 "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 1573 "compilers/imcc/imcc.y"
+#line 1770 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 157:
-#line 1578 "compilers/imcc/imcc.y"
+#line 1775 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 158:
-#line 1579 "compilers/imcc/imcc.y"
+#line 1776 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 159:
-#line 1580 "compilers/imcc/imcc.y"
+#line 1777 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 160:
-#line 1581 "compilers/imcc/imcc.y"
+#line 1778 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
-#line 1582 "compilers/imcc/imcc.y"
+#line 1779 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
-#line 1583 "compilers/imcc/imcc.y"
+#line 1780 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 163:
-#line 1587 "compilers/imcc/imcc.y"
+#line 1784 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 167:
-#line 1598 "compilers/imcc/imcc.y"
+#line 1795 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
          }
     break;
 
   case 168:
-#line 1606 "compilers/imcc/imcc.y"
+#line 1803 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 169:
-#line 1608 "compilers/imcc/imcc.y"
+#line 1805 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -3965,7 +4162,7 @@
     break;
 
   case 170:
-#line 1619 "compilers/imcc/imcc.y"
+#line 1816 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -3974,7 +4171,7 @@
     break;
 
   case 171:
-#line 1626 "compilers/imcc/imcc.y"
+#line 1823 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -3983,7 +4180,7 @@
     break;
 
   case 172:
-#line 1635 "compilers/imcc/imcc.y"
+#line 1832 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -3993,22 +4190,22 @@
     break;
 
   case 173:
-#line 1644 "compilers/imcc/imcc.y"
+#line 1841 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 174:
-#line 1645 "compilers/imcc/imcc.y"
+#line 1842 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 177:
-#line 1652 "compilers/imcc/imcc.y"
+#line 1849 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 178:
-#line 1653 "compilers/imcc/imcc.y"
+#line 1850 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4027,19 +4224,19 @@
     break;
 
   case 179:
-#line 1669 "compilers/imcc/imcc.y"
+#line 1866 "compilers/imcc/imcc.y"
     {
            set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
          }
     break;
 
   case 180:
-#line 1672 "compilers/imcc/imcc.y"
+#line 1869 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 181:
-#line 1673 "compilers/imcc/imcc.y"
+#line 1870 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            pesky_global__is_def=0;
@@ -4048,12 +4245,12 @@
     break;
 
   case 183:
-#line 1680 "compilers/imcc/imcc.y"
+#line 1877 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 184:
-#line 1681 "compilers/imcc/imcc.y"
+#line 1878 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            pesky_global__is_def=0;
@@ -4062,7 +4259,7 @@
     break;
 
   case 185:
-#line 1687 "compilers/imcc/imcc.y"
+#line 1884 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4071,14 +4268,14 @@
     break;
 
   case 186:
-#line 1693 "compilers/imcc/imcc.y"
+#line 1890 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
   case 187:
-#line 1697 "compilers/imcc/imcc.y"
+#line 1894 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4093,47 +4290,47 @@
     break;
 
   case 188:
-#line 1708 "compilers/imcc/imcc.y"
+#line 1905 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 189:
-#line 1709 "compilers/imcc/imcc.y"
+#line 1906 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 190:
-#line 1710 "compilers/imcc/imcc.y"
+#line 1907 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 193:
-#line 1713 "compilers/imcc/imcc.y"
+#line 1910 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 194:
-#line 1717 "compilers/imcc/imcc.y"
+#line 1914 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 195:
-#line 1718 "compilers/imcc/imcc.y"
+#line 1915 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 196:
-#line 1719 "compilers/imcc/imcc.y"
+#line 1916 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 197:
-#line 1720 "compilers/imcc/imcc.y"
+#line 1917 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 198:
-#line 1725 "compilers/imcc/imcc.y"
+#line 1922 "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 */
@@ -4146,37 +4343,37 @@
     break;
 
   case 199:
-#line 1738 "compilers/imcc/imcc.y"
+#line 1935 "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 200:
-#line 1740 "compilers/imcc/imcc.y"
+#line 1937 "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 201:
-#line 1742 "compilers/imcc/imcc.y"
+#line 1939 "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 202:
-#line 1744 "compilers/imcc/imcc.y"
+#line 1941 "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 203:
-#line 1746 "compilers/imcc/imcc.y"
+#line 1943 "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 204:
-#line 1751 "compilers/imcc/imcc.y"
+#line 1948 "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 1754 "compilers/imcc/imcc.y"
+#line 1951 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4185,14 +4382,14 @@
     break;
 
   case 206:
-#line 1760 "compilers/imcc/imcc.y"
+#line 1957 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
   case 207:
-#line 1764 "compilers/imcc/imcc.y"
+#line 1961 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4200,144 +4397,144 @@
     break;
 
   case 211:
-#line 1772 "compilers/imcc/imcc.y"
+#line 1969 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
   case 212:
-#line 1779 "compilers/imcc/imcc.y"
+#line 1976 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 213:
-#line 1780 "compilers/imcc/imcc.y"
+#line 1977 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 214:
-#line 1781 "compilers/imcc/imcc.y"
+#line 1978 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 215:
-#line 1785 "compilers/imcc/imcc.y"
+#line 1982 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 216:
-#line 1786 "compilers/imcc/imcc.y"
+#line 1983 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 217:
-#line 1787 "compilers/imcc/imcc.y"
+#line 1984 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 218:
-#line 1788 "compilers/imcc/imcc.y"
+#line 1985 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 219:
-#line 1789 "compilers/imcc/imcc.y"
+#line 1986 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 220:
-#line 1790 "compilers/imcc/imcc.y"
+#line 1987 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 221:
-#line 1791 "compilers/imcc/imcc.y"
+#line 1988 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 222:
-#line 1792 "compilers/imcc/imcc.y"
+#line 1989 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 223:
-#line 1793 "compilers/imcc/imcc.y"
+#line 1990 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 224:
-#line 1794 "compilers/imcc/imcc.y"
+#line 1991 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 225:
-#line 1795 "compilers/imcc/imcc.y"
+#line 1992 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 226:
-#line 1796 "compilers/imcc/imcc.y"
+#line 1993 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 227:
-#line 1797 "compilers/imcc/imcc.y"
+#line 1994 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 228:
-#line 1798 "compilers/imcc/imcc.y"
+#line 1995 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 229:
-#line 1799 "compilers/imcc/imcc.y"
+#line 1996 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 230:
-#line 1800 "compilers/imcc/imcc.y"
+#line 1997 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 231:
-#line 1801 "compilers/imcc/imcc.y"
+#line 1998 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 232:
-#line 1802 "compilers/imcc/imcc.y"
+#line 1999 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 233:
-#line 1803 "compilers/imcc/imcc.y"
+#line 2000 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 234:
-#line 1804 "compilers/imcc/imcc.y"
+#line 2001 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 235:
-#line 1805 "compilers/imcc/imcc.y"
+#line 2002 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 236:
-#line 1806 "compilers/imcc/imcc.y"
+#line 2003 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 237:
-#line 1807 "compilers/imcc/imcc.y"
+#line 2004 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 238:
-#line 1813 "compilers/imcc/imcc.y"
+#line 2010 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4346,84 +4543,84 @@
     break;
 
   case 239:
-#line 1818 "compilers/imcc/imcc.y"
+#line 2015 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 240:
-#line 1825 "compilers/imcc/imcc.y"
+#line 2022 "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 241:
-#line 1831 "compilers/imcc/imcc.y"
+#line 2028 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 242:
-#line 1832 "compilers/imcc/imcc.y"
+#line 2029 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 243:
-#line 1833 "compilers/imcc/imcc.y"
+#line 2030 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 244:
-#line 1834 "compilers/imcc/imcc.y"
+#line 2031 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 245:
-#line 1835 "compilers/imcc/imcc.y"
+#line 2032 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 246:
-#line 1836 "compilers/imcc/imcc.y"
+#line 2033 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 247:
-#line 1837 "compilers/imcc/imcc.y"
+#line 2034 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 248:
-#line 1838 "compilers/imcc/imcc.y"
+#line 2035 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 249:
-#line 1839 "compilers/imcc/imcc.y"
+#line 2036 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 250:
-#line 1840 "compilers/imcc/imcc.y"
+#line 2037 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 251:
-#line 1841 "compilers/imcc/imcc.y"
+#line 2038 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 252:
-#line 1842 "compilers/imcc/imcc.y"
+#line 2039 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 253:
-#line 1843 "compilers/imcc/imcc.y"
+#line 2040 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 254:
-#line 1849 "compilers/imcc/imcc.y"
+#line 2046 "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,
@@ -4434,22 +4631,22 @@
     break;
 
   case 255:
-#line 1859 "compilers/imcc/imcc.y"
+#line 2056 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 256:
-#line 1860 "compilers/imcc/imcc.y"
+#line 2057 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 257:
-#line 1861 "compilers/imcc/imcc.y"
+#line 2058 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 258:
-#line 1863 "compilers/imcc/imcc.y"
+#line 2060 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4458,7 +4655,7 @@
     break;
 
   case 259:
-#line 1869 "compilers/imcc/imcc.y"
+#line 2066 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4475,7 +4672,7 @@
     break;
 
   case 260:
-#line 1883 "compilers/imcc/imcc.y"
+#line 2080 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4484,12 +4681,12 @@
     break;
 
   case 261:
-#line 1888 "compilers/imcc/imcc.y"
+#line 2085 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 262:
-#line 1894 "compilers/imcc/imcc.y"
+#line 2091 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -4497,17 +4694,17 @@
     break;
 
   case 263:
-#line 1898 "compilers/imcc/imcc.y"
+#line 2095 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 264:
-#line 1902 "compilers/imcc/imcc.y"
+#line 2099 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 265:
-#line 1904 "compilers/imcc/imcc.y"
+#line 2101 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4520,7 +4717,7 @@
     break;
 
   case 266:
-#line 1914 "compilers/imcc/imcc.y"
+#line 2111 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4533,7 +4730,7 @@
     break;
 
   case 267:
-#line 1924 "compilers/imcc/imcc.y"
+#line 2121 "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));
@@ -4542,7 +4739,7 @@
     break;
 
   case 268:
-#line 1930 "compilers/imcc/imcc.y"
+#line 2127 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
@@ -4550,7 +4747,7 @@
     break;
 
   case 269:
-#line 1935 "compilers/imcc/imcc.y"
+#line 2132 "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));
@@ -4559,42 +4756,42 @@
     break;
 
   case 270:
-#line 1943 "compilers/imcc/imcc.y"
+#line 2140 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 271:
-#line 1947 "compilers/imcc/imcc.y"
+#line 2144 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 272:
-#line 1948 "compilers/imcc/imcc.y"
+#line 2145 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 273:
-#line 1952 "compilers/imcc/imcc.y"
+#line 2149 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; }
     break;
 
   case 274:
-#line 1953 "compilers/imcc/imcc.y"
+#line 2150 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 275:
-#line 1956 "compilers/imcc/imcc.y"
+#line 2153 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 276:
-#line 1960 "compilers/imcc/imcc.y"
+#line 2157 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
-#line 1965 "compilers/imcc/imcc.y"
+#line 2162 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4607,7 +4804,7 @@
     break;
 
   case 278:
-#line 1975 "compilers/imcc/imcc.y"
+#line 2172 "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));
@@ -4615,7 +4812,7 @@
     break;
 
   case 279:
-#line 1980 "compilers/imcc/imcc.y"
+#line 2177 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4628,7 +4825,7 @@
     break;
 
   case 280:
-#line 1990 "compilers/imcc/imcc.y"
+#line 2187 "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));
@@ -4636,124 +4833,124 @@
     break;
 
   case 281:
-#line 1994 "compilers/imcc/imcc.y"
+#line 2191 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 282:
-#line 1998 "compilers/imcc/imcc.y"
+#line 2195 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 283:
-#line 1999 "compilers/imcc/imcc.y"
+#line 2196 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 284:
-#line 2004 "compilers/imcc/imcc.y"
+#line 2201 "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 285:
-#line 2008 "compilers/imcc/imcc.y"
+#line 2205 "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 286:
-#line 2012 "compilers/imcc/imcc.y"
+#line 2209 "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 287:
-#line 2019 "compilers/imcc/imcc.y"
+#line 2216 "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 288:
-#line 2023 "compilers/imcc/imcc.y"
+#line 2220 "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 289:
-#line 2027 "compilers/imcc/imcc.y"
+#line 2224 "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 290:
-#line 2033 "compilers/imcc/imcc.y"
+#line 2230 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 291:
-#line 2034 "compilers/imcc/imcc.y"
+#line 2231 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 292:
-#line 2038 "compilers/imcc/imcc.y"
+#line 2235 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 293:
-#line 2039 "compilers/imcc/imcc.y"
+#line 2236 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 294:
-#line 2040 "compilers/imcc/imcc.y"
+#line 2237 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 295:
-#line 2041 "compilers/imcc/imcc.y"
+#line 2238 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 296:
-#line 2042 "compilers/imcc/imcc.y"
+#line 2239 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 297:
-#line 2043 "compilers/imcc/imcc.y"
+#line 2240 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 300:
-#line 2052 "compilers/imcc/imcc.y"
+#line 2249 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 301:
-#line 2053 "compilers/imcc/imcc.y"
+#line 2250 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 302:
-#line 2057 "compilers/imcc/imcc.y"
+#line 2254 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 304:
-#line 2062 "compilers/imcc/imcc.y"
+#line 2259 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 305:
-#line 2064 "compilers/imcc/imcc.y"
+#line 2261 "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);
@@ -4763,7 +4960,7 @@
     break;
 
   case 306:
-#line 2071 "compilers/imcc/imcc.y"
+#line 2268 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -4771,37 +4968,37 @@
     break;
 
   case 308:
-#line 2078 "compilers/imcc/imcc.y"
+#line 2275 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 309:
-#line 2079 "compilers/imcc/imcc.y"
+#line 2276 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 310:
-#line 2083 "compilers/imcc/imcc.y"
+#line 2280 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 311:
-#line 2084 "compilers/imcc/imcc.y"
+#line 2281 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 312:
-#line 2088 "compilers/imcc/imcc.y"
+#line 2285 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 313:
-#line 2089 "compilers/imcc/imcc.y"
+#line 2286 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 318:
-#line 2103 "compilers/imcc/imcc.y"
+#line 2300 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
@@ -4809,7 +5006,7 @@
     break;
 
   case 319:
-#line 2108 "compilers/imcc/imcc.y"
+#line 2305 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -4818,7 +5015,7 @@
     break;
 
   case 320:
-#line 2116 "compilers/imcc/imcc.y"
+#line 2313 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
@@ -4826,7 +5023,7 @@
     break;
 
   case 321:
-#line 2121 "compilers/imcc/imcc.y"
+#line 2318 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -4835,12 +5032,12 @@
     break;
 
   case 322:
-#line 2129 "compilers/imcc/imcc.y"
+#line 2326 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 323:
-#line 2131 "compilers/imcc/imcc.y"
+#line 2328 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -4848,7 +5045,7 @@
     break;
 
   case 324:
-#line 2139 "compilers/imcc/imcc.y"
+#line 2336 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
                (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -4857,53 +5054,53 @@
     break;
 
   case 325:
-#line 2147 "compilers/imcc/imcc.y"
+#line 2344 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 326:
-#line 2148 "compilers/imcc/imcc.y"
+#line 2345 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 327:
-#line 2149 "compilers/imcc/imcc.y"
+#line 2346 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 328:
-#line 2150 "compilers/imcc/imcc.y"
+#line 2347 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 329:
-#line 2151 "compilers/imcc/imcc.y"
+#line 2348 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 330:
-#line 2155 "compilers/imcc/imcc.y"
+#line 2352 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 331:
-#line 2156 "compilers/imcc/imcc.y"
+#line 2353 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 332:
-#line 2157 "compilers/imcc/imcc.y"
+#line 2354 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 333:
-#line 2158 "compilers/imcc/imcc.y"
+#line 2355 "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 4896 "compilers/imcc/imcparser.c"
+#line 5093 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5117,7 +5314,7 @@
 }
 
 
-#line 2164 "compilers/imcc/imcc.y"
+#line 2361 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h	Fri Apr  3 13:36:30 2009	(r37889)
+++ trunk/compilers/imcc/imcparser.h	Fri Apr  3 14:05:19 2009	(r37890)
@@ -295,7 +295,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 810 "compilers/imcc/imcc.y"
+#line 1007 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;


More information about the parrot-commits mailing list