perl.cvs.parrot
[Top] [All Lists]

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

Subject: [svn:parrot] r25510 - trunk/compilers/imcc
From:
Date: Mon, 4 Feb 2008 12:01:39 -0800 PST
Newsgroups: perl.cvs.parrot

Author: chromatic
Date: Mon Feb  4 12:01:38 2008
New Revision: 25510

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

Log:
[IMCC] Duplicate some strings in the parser so as not to free passed-in strings.

This adds a few leaks temporarily, but they're pluggable.

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y (original)
+++ trunk/compilers/imcc/imcc.y Mon Feb  4 12:01:38 2008
@@ -223,12 +223,8 @@
     ascii = (*constant == '\'' || *constant == '"');
     if (ascii) {
         /* strip delimiters */
-        const size_t len  = strlen(constant);
-        name              = (char *)mem_sys_allocate(len);
-        constant[len - 1] = '\0';
-
-        strcpy(name, constant + 1);
-        free(constant);
+        name                   = str_dup(constant + 1);
+        name[strlen(name) - 1] = '\0';
     }
     else {
         name = constant;
@@ -252,6 +248,9 @@
     r[1]          = rhs;
     rhs->pmc_type = type_enum;
 
+    if (ascii)
+        mem_sys_free(name);
+
     return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
 }
 
@@ -383,10 +382,12 @@
 {
     /* name is a quoted sub name */
     SymReg *r;
+    char *name_copy                  = str_dup(name + 1);
+    name_copy[strlen(name_copy) - 1] = '\0';
+
+    r = mk_sub_address(interp, name_copy);
+    mem_sys_free(name_copy);
 
-    name[strlen(name) - 1] = '\0';
-    r = mk_sub_address(interp, str_dup(name + 1));
-    mem_sys_free(name);
     return r;
 }
 
@@ -507,9 +508,8 @@
 static void
 do_loadlib(PARROT_INTERP, NOTNULL(const char *lib))
 {
-    PMC *ignored;
     STRING * const s = string_unescape_cstring(interp, lib + 1, '"', NULL);
-    ignored = Parrot_load_lib(interp, s, NULL);
+    PMC    *ignored  = Parrot_load_lib(interp, s, NULL);
     UNUSED(ignored);
     Parrot_register_HLL_lib(interp, s);
 }
@@ -647,8 +647,10 @@
 
 hll_def: HLL STRINGC COMMA STRINGC
          {
-            STRING *hll_name = string_unescape_cstring(interp, $2 + 1, '"', 
NULL);
-            STRING *hll_lib  = string_unescape_cstring(interp, $4 + 1, '"', 
NULL);
+            STRING *hll_name = string_unescape_cstring(interp, str_dup($2 + 1),
+                '"', NULL);
+            STRING *hll_lib  = string_unescape_cstring(interp, str_dup($4 + 1),
+                '"', NULL);
             PMC    *ignored;
             CONTEXT(((Interp*)interp)->ctx)->current_HLL =
                 Parrot_register_HLL(interp, hll_name);
@@ -663,8 +665,10 @@
             int built_in_type = 0;
             int language_type = 0;
 
-            STRING *built_in_name = string_unescape_cstring(interp, $2 + 1, 
'"', NULL);
-            STRING *language_name = string_unescape_cstring(interp, $4 + 1, 
'"', NULL);
+            STRING *built_in_name = string_unescape_cstring(interp,
+                str_dup($2 + 1), '"', NULL);
+            STRING *language_name = string_unescape_cstring(interp,
+                str_dup($4 + 1), '"', NULL);
             built_in_type = pmc_type(interp, built_in_name);
             language_type = pmc_type(interp, language_name);
 
@@ -843,7 +847,7 @@
                        IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; }
     |   VTABLE_METHOD '(' STRINGC ')'
                      { $$ = 0;
-                       IMCC_INFO(interp)->cur_unit->vtable_name = strdup($3);
+                       IMCC_INFO(interp)->cur_unit->vtable_name = str_dup($3);
                        IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; }
     ;
 
@@ -874,7 +878,7 @@
                               r = mk_const(interp, $1, 'S');
                           else {
                               free($1),
-                              r = mk_const(interp, str_dup("PMC"), 'S');
+                              r = mk_const(interp, "PMC", 'S');
                            }
                            $$ = r;
                       }

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c    (original)
+++ trunk/compilers/imcc/imcparser.c    Mon Feb  4 12:01:38 2008
@@ -1,3 +1,14 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically from 'compilers/imcc/imcc.y'
+ * by tools/build/fixup_gen_file.pl.
+ *
+ * Any changes made here will be lost!
+ *
+ */
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
 /* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
@@ -342,74 +353,34 @@
 #  define YYLTYPE_IS_TRIVIAL 0
 #endif
 
-/*
-Copyright (C) 2001-2008, The Perl Foundation.
-$Id$
-
-=head1 NAME
-
-compilers/mcc/imcparser.c - XXX What does this do?
-src/string.c - Parrot Strings
-
-=head1 DESCRIPTION
-
-XXX Fill this in
-
-=head1 FUNCTIONS
-
-=over 4
-
-=cut
-
-*/
-
 /* HEADERIZER HFILE: compilers/imcc/imc.h */
 
 /* HEADERIZER BEGIN: static */
 
 static void add_pcc_named_arg(PARROT_INTERP,
-    ARGMOD(SymReg *cur_call),
-    ARGIN(const char *name),
-    ARGMOD(SymReg *value))
+    NOTNULL(SymReg *cur_call),
+    const char     *name,
+    SymReg         *value)
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*cur_call)
-        FUNC_MODIFIES(*value);
+        __attribute__nonnull__(2);
 
 static void add_pcc_named_param(PARROT_INTERP,
-    ARGMOD(SymReg *cur_call),
-    ARGIN(const char *name),
-    ARGMOD(SymReg *value))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*cur_call)
-        FUNC_MODIFIES(*value);
+    SymReg     *cur_call,
+    const char *name,
+    SymReg     *value)
+        __attribute__nonnull__(1);
 
 static void add_pcc_named_result(PARROT_INTERP,
-    ARGMOD(SymReg *cur_call),
-    ARGIN(const char *name),
-    ARGMOD(SymReg *value))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*cur_call)
-        FUNC_MODIFIES(*value);
+    SymReg     *cur_call,
+    const char *name,
+    SymReg     *value)
+        __attribute__nonnull__(1);
 
 static void add_pcc_named_return(PARROT_INTERP,
-    ARGMOD(SymReg *cur_call),
-    ARGIN(const char *name),
-    ARGMOD(SymReg *value))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*cur_call)
-        FUNC_MODIFIES(*value);
+    SymReg     *cur_call,
+    const char *name,
+    SymReg     *value)
+        __attribute__nonnull__(1);
 
 static void begin_return_or_yield(PARROT_INTERP, int yield)
         __attribute__nonnull__(1);
@@ -417,119 +388,74 @@
 static void clear_state(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-static void do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
+static void do_loadlib(PARROT_INTERP, NOTNULL(const char *lib))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static Instruction* func_ins(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(SymReg *lhs),
-    ARGIN(const char *op),
-    ARGMOD(SymReg **r),
+static Instruction* func_ins(
+    PARROT_INTERP,
+    IMC_Unit   *unit,
+    SymReg     *lhs,
+    const char *op,
+    NOTNULL(SymReg **r),
     int n,
     int keyv,
     int emit)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*unit)
-        FUNC_MODIFIES(*r);
+        __attribute__nonnull__(5);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction * iINDEXFETCH(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(const SymReg *r0),
-    ARGIN(const SymReg *r1),
-    ARGIN(const SymReg *r2))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*unit);
+    IMC_Unit *unit,
+    SymReg *r0,
+    SymReg *r1,
+    SymReg *r2)
+        __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction * iINDEXSET(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(const SymReg *r0),
-    ARGIN(const SymReg *r1),
-    ARGIN(const SymReg *r2))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*unit);
+    IMC_Unit *unit,
+    SymReg *r0,
+    SymReg *r1,
+    SymReg *r2)
+        __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static const char * inv_op(ARGIN(const char *op))
+static Instruction * iLABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0)
         __attribute__nonnull__(1);
 
-PARROT_IGNORABLE_RESULT
-PARROT_CANNOT_RETURN_NULL
+static const char * inv_op(const char *op);
 static Instruction * iSUBROUTINE(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGMOD(SymReg *r))
+    IMC_Unit *unit,
+    NOTNULL(SymReg *r))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*unit)
-        FUNC_MODIFIES(*r);
+        __attribute__nonnull__(3);
 
-PARROT_IGNORABLE_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction * MK_I(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(const char *fmt),
+    IMC_Unit *unit,
+    NOTNULL(const char *fmt),
     int n,
     ...)
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*unit);
+        __attribute__nonnull__(3);
 
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction* mk_pmc_const(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(const char *type),
-    ARGMOD(SymReg *left),
-    ARGMOD(char *constant))
+    IMC_Unit *unit,
+    NOTNULL(const char *type),
+    NOTNULL(SymReg *left),
+    NOTNULL(char *constant))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
         __attribute__nonnull__(3)
         __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*unit)
-        FUNC_MODIFIES(*left)
-        FUNC_MODIFIES(*constant);
+        __attribute__nonnull__(5);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static SymReg * mk_sub_address_fromc(PARROT_INTERP, ARGIN(const char *name))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+static SymReg * mk_sub_address_fromc(PARROT_INTERP, char *name)
+        __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static SymReg * mk_sub_address_u(PARROT_INTERP, ARGIN(const char *name))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+static SymReg * mk_sub_address_u(PARROT_INTERP, char *name)
+        __attribute__nonnull__(1);
 
-static void set_lexical(PARROT_INTERP,
-    ARGMOD(SymReg *r),
-    ARGIN(const char *name))
+static void set_lexical(PARROT_INTERP, NOTNULL(SymReg *r), char *name)
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*r);
+        __attribute__nonnull__(2);
 
 /* HEADERIZER END: static */
 
@@ -550,32 +476,21 @@
 
 
 /*
-
-=item C<static Instruction * 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 C<< IMCC_INFO(interp)->cur_unit >>,
-but there are some exceptions. Thus, we can't easily factorize that
-piece of code.
-
-=cut
-
+ * 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.
  */
-
-PARROT_IGNORABLE_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction *
-MK_I(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *fmt), int n, ...)
+MK_I(PARROT_INTERP, IMC_Unit *unit, NOTNULL(const char *fmt), int n, ...)
 {
     char opname[64];
     char *p;
@@ -600,24 +515,14 @@
         r[i] = va_arg(ap, SymReg *);
     }
     va_end(ap);
-    return INS(interp, unit, opname, fmt, r, n, IMCC_INFO(interp)->keyvec, 1);
+    return INS(interp, unit, opname, fmt, r, n,
+               IMCC_INFO(interp)->keyvec, 1);
 }
 
-/*
-
-=item C<static Instruction* mk_pmc_const>
-
-XXX document me
-
-=cut
-
-*/
-
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction*
-mk_pmc_const(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *type),
-        ARGMOD(SymReg *left), ARGMOD(char *constant))
+mk_pmc_const(PARROT_INTERP, IMC_Unit *unit, NOTNULL(const char *type),
+             NOTNULL(SymReg *left), NOTNULL(char *constant))
 {
     const   int type_enum = atoi(type);
     SymReg *rhs;
@@ -638,12 +543,8 @@
     ascii = (*constant == '\'' || *constant == '"');
     if (ascii) {
         /* strip delimiters */
-        const size_t len  = strlen(constant);
-        name              = (char *)mem_sys_allocate(len);
-        constant[len - 1] = '\0';
-
-        strcpy(name, constant + 1);
-        free(constant);
+        name                   = str_dup(constant + 1);
+        name[strlen(name) - 1] = '\0';
     }
     else {
         name = constant;
@@ -667,22 +568,16 @@
     r[1]          = rhs;
     rhs->pmc_type = type_enum;
 
+    if (ascii)
+        mem_sys_free(name);
+
     return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
 }
 
-/*
-
-=item C<static Instruction* func_ins>
-
-=cut
-
-*/
-
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction*
-func_ins(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *lhs), 
ARGIN(const char *op),
-        ARGMOD(SymReg **r), int n, int keyv, int emit)
+func_ins(PARROT_INTERP, IMC_Unit *unit, SymReg *lhs, const char *op,
+         SymReg ** r, int n, int keyv, int emit)
 {
     int i;
     /* shift regs up by 1 */
@@ -693,14 +588,11 @@
     keyv <<= 1;
     return INS(interp, unit, op, "", r, n+1, keyv, emit);
 }
-
 /*
-
-=item C<static void clear_state>
-
-=cut
-
-*/
+ * special instructions
+ *
+ * labels and such
+ */
 
 static void
 clear_state(PARROT_INTERP)
@@ -709,20 +601,8 @@
     IMCC_INFO(interp) -> keyvec = 0;
 }
 
-/*
-
-=item C<Instruction * INS_LABEL>
-
-XXX Document me.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
 Instruction *
-INS_LABEL(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGIN(SymReg *r0), int 
emit)
+INS_LABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0, int emit)
 {
 
     Instruction * const ins = _mk_instruction("", "%s:", 1, &r0, 0);
@@ -735,16 +615,6 @@
     return ins;
 }
 
-/*
-
-=item C<>
-
-XXX Document me.
-
-=cut
-
-*/
-
 static Instruction * iLABEL(PARROT_INTERP, IMC_Unit *unit, SymReg *r0) {
     Instruction * const i = INS_LABEL(interp, unit, r0, 1);
     i->line               = IMCC_INFO(interp)->line;
@@ -753,22 +623,8 @@
     return i;
 }
 
-
-/*
-
-=item C<static Instruction * iSUBROUTINE>
-
-XXX Document me.
-
-=cut
-
-*/
-
-PARROT_IGNORABLE_RESULT
-PARROT_CANNOT_RETURN_NULL
 static Instruction *
-iSUBROUTINE(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGMOD(SymReg *r))
-{
+iSUBROUTINE(PARROT_INTERP, IMC_Unit *unit, NOTNULL(SymReg *r)) {
     Instruction * const i =iLABEL(interp, unit, r);
 
     r->type    = (r->type & VT_ENCODED) ? VT_PCC_SUB|VT_ENCODED : VT_PCC_SUB;
@@ -782,26 +638,13 @@
 }
 
 /*
-
-=item C<static Instruction * iINDEXFETCH>
-
-XXX Document me.
-
-substr or X = P[key]
-
-=cut
-
-*/
-
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+ * substr or X = P[key]
+ */
 static Instruction *
-iINDEXFETCH(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const SymReg *r0),
-        ARGIN(const SymReg *r1), ARGIN(const SymReg *r2))
+iINDEXFETCH(PARROT_INTERP, IMC_Unit *unit, SymReg *r0, SymReg *r1, SymReg *r2)
 {
     if (r0->set == 'S' && r1->set == 'S' && r2->set == 'I') {
-        SymReg * const r3 = mk_const(interp, "1", 'I');
+        SymReg * const r3 = mk_const(interp, str_dup("1"), 'I');
         return MK_I(interp, unit, "substr %s, %s, %s, 1", 4, r0, r1, r2, r3);
     }
 
@@ -810,25 +653,15 @@
 }
 
 /*
+ * substr or P[key] = X
+ */
 
-=item C<static Instruction * iINDEXSET>
-
-XXX Document me.
-
-substr or P[key] = X
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction *
-iINDEXSET(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const SymReg *r0),
-            ARGIN(const SymReg *r1), ARGIN(const SymReg *r2))
+iINDEXSET(PARROT_INTERP, IMC_Unit * unit,
+          SymReg * r0, SymReg * r1, SymReg * r2)
 {
     if (r0->set == 'S' && r1->set == 'I' && r2->set == 'S') {
-        SymReg * const r3 = mk_const(interp, "1", 'I');
+        SymReg * r3 = mk_const(interp, str_dup("1"), 'I');
         MK_I(interp, unit, "substr %s, %s, %s, %s", 4, r0, r1, r3, r2);
     }
     else if (r0->set == 'P') {
@@ -839,42 +672,15 @@
         IMCC_fataly(interp, E_SyntaxError,
             "unsupported indexed set op\n");
     }
-    return NULL;
+    return 0;
 }
 
-
-/*
-
-=item C<static const char * inv_op>
-
-XXX Document me.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static const char *
-inv_op(ARGIN(const char *op)) {
+inv_op(const char *op) {
     int n;
     return get_neg_op(op, &n);
 }
 
-
-
-/*
-
-=item C<Instruction * IMCC_create_itcall_label>
-
-XXX Document me.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 Instruction *
 IMCC_create_itcall_label(PARROT_INTERP)
 {
@@ -883,7 +689,7 @@
     Instruction *i;
 
     sprintf(name, "%cpcc_sub_call_%d", IMCC_INTERNAL_CHAR, 
IMCC_INFO(interp)->cnr++);
-    r = mk_pcc_sub(interp, name, 0);
+    r = mk_pcc_sub(interp, str_dup(name), 0);
     i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, r);
     IMCC_INFO(interp)->cur_call = r;
     i->type = ITCALL | ITPCCSUB;
@@ -891,48 +697,22 @@
 }
 
 
-
-/*
-
-=item C<static SymReg * mk_sub_address_fromc>
-
-XXX Document me.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
 static SymReg *
-mk_sub_address_fromc(PARROT_INTERP, ARGIN(const char *name))
+mk_sub_address_fromc(PARROT_INTERP, char * name)
 {
     /* name is a quoted sub name */
     SymReg *r;
+    char *name_copy                  = str_dup(name + 1);
+    name_copy[strlen(name_copy) - 1] = '\0';
 
-    char *unquoted = str_dup(name+1);
-    unquoted[strlen(unquoted) - 1] = '\0';
+    r = mk_sub_address(interp, name_copy);
+    mem_sys_free(name_copy);
 
-    r = mk_sub_address(interp, unquoted);
-    mem_sys_free(unquoted);
     return r;
 }
 
-
-/*
-
-=item C<static SymReg * mk_sub_address_u>
-
-XXX Document me.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
 static SymReg *
-mk_sub_address_u(PARROT_INTERP, ARGIN(const char *name))
+mk_sub_address_u(PARROT_INTERP, char * name)
 {
     SymReg * const r = mk_sub_address(interp, name);
     r->type         |= VT_ENCODED;
@@ -940,18 +720,8 @@
     return r;
 }
 
-
-/*
-
-=item C<void IMCC_itcall_sub>
-
-XXX Document me.
-
-=cut
-
-*/
 void
-IMCC_itcall_sub(PARROT_INTERP, ARGIN(SymReg *sub))
+IMCC_itcall_sub(PARROT_INTERP, SymReg *sub)
 {
     IMCC_INFO(interp)->cur_call->pcc_sub->sub = sub;
     if (IMCC_INFO(interp)->cur_obj) {
@@ -966,17 +736,6 @@
         IMCC_INFO(interp)->cur_unit->instructions->r[0]->pcc_sub->calls_a_sub 
|= 1;
 }
 
-
-/*
-
-=item C<static void begin_return_or_yield>
-
-XXX Document me.
-
-=cut
-
-*/
-
 static void
 begin_return_or_yield(PARROT_INTERP, int yield)
 {
@@ -991,26 +750,16 @@
        ins->r[0]->pcc_sub->calls_a_sub = 1 | ITPCCYIELD;
     sprintf(name, yield ? "%cpcc_sub_yield_%d" : "%cpcc_sub_ret_%d",
             IMCC_INTERNAL_CHAR, IMCC_INFO(interp)->cnr++);
-    interp->imc_info->sr_return = mk_pcc_sub(interp, name, 0);
+    interp->imc_info->sr_return = mk_pcc_sub(interp, str_dup(name), 0);
     i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, 
interp->imc_info->sr_return);
     i->type = yield ? ITPCCSUB | ITLABEL | ITPCCYIELD : ITPCCSUB | ITLABEL ;
     interp->imc_info->asm_state = yield ? AsmInYield : AsmInReturn;
 }
 
-/*
-
-=item C<static void set_lexical>
-
-XXX Document me.
-
-=cut
-
-*/
-
 static void
-set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
+set_lexical(PARROT_INTERP, NOTNULL(SymReg *r), char *name)
 {
-    SymReg * const n = mk_const(interp, name, 'S');
+    SymReg *n = mk_const(interp, name, 'S');
 
     r->usage |= U_LEXICAL;
 
@@ -1023,41 +772,20 @@
     r->reg = n;
 }
 
-
-/*
-
-=item C<static void add_pcc_named_arg>
-
-XXX Document me.
-
-=cut
-
-*/
-
 static void
-add_pcc_named_arg(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char 
*name),
-        ARGMOD(SymReg *value))
+add_pcc_named_arg(PARROT_INTERP, NOTNULL(SymReg *cur_call), const char *name,
+                  SymReg *value)
 {
-    SymReg * const r = mk_const(interp, name, 'S');
+    SymReg *r = mk_const(interp, name, 'S');
     r->type  |= VT_NAMED;
 
     add_pcc_arg(cur_call, r);
     add_pcc_arg(cur_call, value);
 }
 
-/*
-
-=item C<static void add_pcc_named_result>
-
-XXX Document me.
-
-=cut
-
-*/
-
 static void
-add_pcc_named_result(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char 
*name),
-        ARGMOD(SymReg *value))
+add_pcc_named_result(PARROT_INTERP, SymReg *cur_call, const char *name,
+                     SymReg *value)
 {
     SymReg * const r = mk_const(interp, name, 'S');
     r->type         |= VT_NAMED;
@@ -1066,19 +794,9 @@
     add_pcc_result(cur_call, value);
 }
 
-/*
-
-=item C<static void add_pcc_named_param>
-
-XXX Document me.
-
-=cut
-
-*/
-
 static void
-add_pcc_named_param(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char 
*name),
-        ARGMOD(SymReg *value))
+add_pcc_named_param(PARROT_INTERP, SymReg *cur_call, const char *name,
+                    SymReg *value)
 {
     SymReg * const r = mk_const(interp, name, 'S');
     r->type         |= VT_NAMED;
@@ -1087,19 +805,9 @@
     add_pcc_param(cur_call, value);
 }
 
-/*
-
-=item C<static void add_pcc_named_return>
-
-XXX document me
-
-=cut
-
-*/
-
 static void
-add_pcc_named_return(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char 
*name),
-        ARGMOD(SymReg *value))
+add_pcc_named_return(PARROT_INTERP, SymReg *cur_call, const char *name,
+                     SymReg *value)
 {
     SymReg * const r = mk_const(interp, name, 'S');
     r->type         |= VT_NAMED;
@@ -1108,18 +816,8 @@
     add_pcc_return(cur_call, value);
 }
 
-/*
-
-=item c<do_loadlib>
-
-xxx document me
-
-=cut
-
-*/
-
 static void
-adv_named_set(PARROT_INTERP, ARGIN(char *name)) {
+adv_named_set(PARROT_INTERP, char *name) {
     if (IMCC_INFO(interp)->adv_named_id) {
         IMCC_fataly(interp, E_SyntaxError,
                     "Named parameter with more than one name.\n");
@@ -1127,22 +825,11 @@
     IMCC_INFO(interp)->adv_named_id = name;
 }
 
-/*
-
-=item C<static void do_loadlib>
-
-XXX document me
-
-=cut
-
-*/
-
 static void
-do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
+do_loadlib(PARROT_INTERP, NOTNULL(const char *lib))
 {
-    PMC *ignored;
     STRING * const s = string_unescape_cstring(interp, lib + 1, '"', NULL);
-    ignored = Parrot_load_lib(interp, s, NULL);
+    PMC    *ignored  = Parrot_load_lib(interp, s, NULL);
     UNUSED(ignored);
     Parrot_register_HLL_lib(interp, s);
 }
@@ -1617,39 +1304,39 @@
 static const yytype_uint16 yyrline[] =
 {
        0,   613,   613,   617,   618,   622,   623,   624,   627,   630,
-     631,   632,   635,   636,   637,   640,   648,   661,   681,   681,
-     691,   691,   695,   696,   700,   701,   705,   706,   707,   708,
-     709,   710,   711,   714,   714,   721,   720,   731,   733,   738,
-     742,   746,   746,   756,   758,   762,   777,   778,   783,   787,
-     790,   782,   796,   797,   798,   809,   809,   813,   818,   829,
-     832,   835,   840,   844,   851,   852,   853,   857,   858,   859,
-     860,   861,   871,   881,   884,   886,   891,   890,   923,   924,
-     928,   929,   934,   935,   939,   940,   944,   945,   946,   947,
-     948,   949,   950,   951,   952,   953,   954,   958,   963,   965,
-     970,   972,   974,   978,   986,   987,   991,   996,   997,  1001,
-    1002,  1002,  1017,  1018,  1022,  1023,  1024,  1025,  1026,  1027,
-    1033,  1032,  1037,  1043,  1042,  1050,  1051,  1054,  1060,  1065,
-    1064,  1074,  1075,  1079,  1080,  1087,  1089,  1096,  1102,  1103,
-    1115,  1119,  1121,  1122,  1123,  1127,  1128,  1132,  1133,  1137,
-    1145,  1147,  1156,  1163,  1172,  1182,  1183,  1188,  1189,  1190,
-    1191,  1192,  1192,  1209,  1213,  1213,  1221,  1222,  1222,  1229,
-    1233,  1234,  1240,  1242,  1243,  1244,  1245,  1246,  1250,  1251,
-    1252,  1253,  1254,  1258,  1269,  1271,  1273,  1275,  1277,  1279,
-    1281,  1283,  1285,  1287,  1289,  1291,  1293,  1296,  1298,  1302,
-    1304,  1306,  1309,  1316,  1315,  1324,  1325,  1326,  1327,  1332,
-    1333,  1334,  1338,  1339,  1340,  1341,  1342,  1343,  1344,  1345,
-    1346,  1347,  1348,  1349,  1350,  1351,  1352,  1353,  1354,  1355,
-    1356,  1357,  1358,  1359,  1360,  1364,  1364,  1372,  1377,  1378,
-    1379,  1380,  1381,  1382,  1383,  1384,  1385,  1386,  1387,  1388,
-    1389,  1394,  1403,  1404,  1405,  1406,  1411,  1412,  1413,  1419,
-    1418,  1428,  1429,  1436,  1443,  1445,  1449,  1453,  1454,  1458,
-    1459,  1460,  1463,  1467,  1474,  1476,  1483,  1484,  1488,  1489,
-    1493,  1495,  1497,  1502,  1504,  1506,  1511,  1512,  1516,  1517,
-    1518,  1519,  1520,  1521,  1525,  1526,  1530,  1531,  1535,  1536,
-    1540,  1541,  1548,  1555,  1556,  1557,  1561,  1562,  1566,  1567,
-    1571,  1572,  1576,  1577,  1580,  1580,  1587,  1587,  1595,  1596,
-    1599,  1599,  1605,  1610,  1615,  1616,  1620,  1621,  1622,  1623,
-    1624,  1628,  1629,  1630,  1631,  1635,  1636
+     631,   632,   635,   636,   637,   640,   648,   663,   685,   685,
+     695,   695,   699,   700,   704,   705,   709,   710,   711,   712,
+     713,   714,   715,   718,   718,   725,   724,   735,   737,   742,
+     746,   750,   750,   760,   762,   766,   781,   782,   787,   791,
+     794,   786,   800,   801,   802,   813,   813,   817,   822,   833,
+     836,   839,   844,   848,   855,   856,   857,   861,   862,   863,
+     864,   865,   875,   885,   888,   890,   895,   894,   927,   928,
+     932,   933,   938,   939,   943,   944,   948,   949,   950,   951,
+     952,   953,   954,   955,   956,   957,   958,   962,   967,   969,
+     974,   976,   978,   982,   990,   991,   995,  1000,  1001,  1005,
+    1006,  1006,  1021,  1022,  1026,  1027,  1028,  1029,  1030,  1031,
+    1037,  1036,  1041,  1047,  1046,  1054,  1055,  1058,  1064,  1069,
+    1068,  1078,  1079,  1083,  1084,  1091,  1093,  1100,  1106,  1107,
+    1119,  1123,  1125,  1126,  1127,  1131,  1132,  1136,  1137,  1141,
+    1149,  1151,  1160,  1167,  1176,  1186,  1187,  1192,  1193,  1194,
+    1195,  1196,  1196,  1213,  1217,  1217,  1225,  1226,  1226,  1233,
+    1237,  1238,  1244,  1246,  1247,  1248,  1249,  1250,  1254,  1255,
+    1256,  1257,  1258,  1262,  1273,  1275,  1277,  1279,  1281,  1283,
+    1285,  1287,  1289,  1291,  1293,  1295,  1297,  1300,  1302,  1306,
+    1308,  1310,  1313,  1320,  1319,  1328,  1329,  1330,  1331,  1336,
+    1337,  1338,  1342,  1343,  1344,  1345,  1346,  1347,  1348,  1349,
+    1350,  1351,  1352,  1353,  1354,  1355,  1356,  1357,  1358,  1359,
+    1360,  1361,  1362,  1363,  1364,  1368,  1368,  1376,  1381,  1382,
+    1383,  1384,  1385,  1386,  1387,  1388,  1389,  1390,  1391,  1392,
+    1393,  1398,  1407,  1408,  1409,  1410,  1415,  1416,  1417,  1423,
+    1422,  1432,  1433,  1440,  1447,  1449,  1453,  1457,  1458,  1462,
+    1463,  1464,  1467,  1471,  1478,  1480,  1487,  1488,  1492,  1493,
+    1497,  1499,  1501,  1506,  1508,  1510,  1515,  1516,  1520,  1521,
+    1522,  1523,  1524,  1525,  1529,  1530,  1534,  1535,  1539,  1540,
+    1544,  1545,  1552,  1559,  1560,  1561,  1565,  1566,  1570,  1571,
+    1575,  1576,  1580,  1581,  1584,  1584,  1591,  1591,  1599,  1600,
+    1603,  1603,  1609,  1614,  1619,  1620,  1624,  1625,  1626,  1627,
+    1628,  1632,  1633,  1634,  1635,  1639,  1640
 };
 #endif
 
@@ -3000,61 +2687,61 @@
     {
         case 2:
 #line 613 "compilers/imcc/imcc.y"
-    { if (yynerrs) YYABORT; (yyval.i) = 0; ;}
+    { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
 #line 622 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
 #line 623 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
 #line 624 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i);
                      imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
-                     IMCC_INFO(interp)->cur_unit = 0; ;}
+                     IMCC_INFO(interp)->cur_unit = 0; }
     break;
 
   case 8:
 #line 627 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i);
                      imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
-                     IMCC_INFO(interp)->cur_unit = 0; ;}
+                     IMCC_INFO(interp)->cur_unit = 0; }
     break;
 
   case 9:
 #line 630 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 10:
 #line 631 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 11:
 #line 632 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 12:
 #line 635 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 13:
 #line 636 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 14:
 #line 637 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; do_loadlib(interp, (yyvsp[(2) - (3)].s)); ;}
+    { (yyval.i) = 0; do_loadlib(interp, (yyvsp[(2) - (3)].s)); }
     break;
 
   case 15:
@@ -3063,14 +2750,16 @@
                           IMCC_INFO(interp)->state->pragmas |= PR_N_OPERATORS;
                       else
                           IMCC_INFO(interp)->state->pragmas &= ~PR_N_OPERATORS;
-                    ;}
+                    }
     break;
 
   case 16:
 #line 649 "compilers/imcc/imcc.y"
     {
-            STRING *hll_name = string_unescape_cstring(interp, (yyvsp[(2) - 
(4)].s) + 1, '"', NULL);
-            STRING *hll_lib  = string_unescape_cstring(interp, (yyvsp[(4) - 
(4)].s) + 1, '"', NULL);
+            STRING *hll_name = string_unescape_cstring(interp, 
str_dup((yyvsp[(2) - (4)].s) + 1),
+                '"', NULL);
+            STRING *hll_lib  = string_unescape_cstring(interp, 
str_dup((yyvsp[(4) - (4)].s) + 1),
+                '"', NULL);
             PMC    *ignored;
             CONTEXT(((Interp*)interp)->ctx)->current_HLL =
                 Parrot_register_HLL(interp, hll_name);
@@ -3079,17 +2768,19 @@
             Parrot_register_HLL_lib(interp, hll_lib);
             IMCC_INFO(interp)->cur_namespace = NULL;
             (yyval.t) = 0;
-         ;}
+         }
     break;
 
   case 17:
-#line 662 "compilers/imcc/imcc.y"
+#line 664 "compilers/imcc/imcc.y"
     {
             int built_in_type = 0;
             int language_type = 0;
 
-            STRING *built_in_name = string_unescape_cstring(interp, (yyvsp[(2) 
- (4)].s) + 1, '"', NULL);
-            STRING *language_name = string_unescape_cstring(interp, (yyvsp[(4) 
- (4)].s) + 1, '"', NULL);
+            STRING *built_in_name = string_unescape_cstring(interp,
+                str_dup((yyvsp[(2) - (4)].s) + 1), '"', NULL);
+            STRING *language_name = string_unescape_cstring(interp,
+                str_dup((yyvsp[(4) - (4)].s) + 1), '"', NULL);
             built_in_type = pmc_type(interp, built_in_name);
             language_type = pmc_type(interp, language_name);
 
@@ -3099,124 +2790,124 @@
             Parrot_register_HLL_type(interp,
                  CONTEXT(((Interp *)interp)->ctx)->current_HLL, built_in_type, 
language_type);
             (yyval.t) = 0;
-         ;}
+         }
     break;
 
   case 18:
-#line 681 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 685 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 19:
-#line 682 "compilers/imcc/imcc.y"
+#line 686 "compilers/imcc/imcc.y"
     {
                     SymReg *ignored;
                     ignored = mk_const_ident(interp, (yyvsp[(4) - (6)].s), 
(yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
                     UNUSED(ignored);
                     is_def=0;
-                ;}
+                }
     break;
 
   case 20:
-#line 691 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 695 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 21:
-#line 692 "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; ;}
+#line 696 "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; }
     break;
 
   case 26:
-#line 705 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+#line 709 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  }
     break;
 
   case 27:
-#line 706 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+#line 710 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  }
     break;
 
   case 28:
-#line 707 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+#line 711 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  }
     break;
 
   case 29:
-#line 708 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+#line 712 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  }
     break;
 
   case 30:
-#line 709 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+#line 713 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 33:
-#line 714 "compilers/imcc/imcc.y"
-    { clear_state(interp); ;}
+#line 718 "compilers/imcc/imcc.y"
+    { clear_state(interp); }
     break;
 
   case 34:
-#line 716 "compilers/imcc/imcc.y"
+#line 720 "compilers/imcc/imcc.y"
     { (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                               (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
                               IMCC_INFO(interp)->nargs, IMCC_INFO(interp) -> 
keyvec, 1);
-                     free((yyvsp[(2) - (3)].s)); ;}
+                     free((yyvsp[(2) - (3)].s)); }
     break;
 
   case 35:
-#line 721 "compilers/imcc/imcc.y"
+#line 725 "compilers/imcc/imcc.y"
     {
                     imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
                     IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, 
IMC_PASM);
-                    ;}
+                    }
     break;
 
   case 36:
-#line 726 "compilers/imcc/imcc.y"
+#line 730 "compilers/imcc/imcc.y"
     {
                      (yyval.i) = iSUBROUTINE(interp, 
IMCC_INFO(interp)->cur_unit,
                                 mk_sub_label(interp, (yyvsp[(4) - (4)].s)));
                      IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(3) 
- (4)].t);
-                   ;}
+                   }
     break;
 
   case 37:
-#line 732 "compilers/imcc/imcc.y"
-    {  (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, 
(yyvsp[(2) - (2)].sr)); ;}
+#line 736 "compilers/imcc/imcc.y"
+    {  (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, 
(yyvsp[(2) - (2)].sr)); }
     break;
 
   case 38:
-#line 734 "compilers/imcc/imcc.y"
+#line 738 "compilers/imcc/imcc.y"
     {
                        SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
                        set_lexical(interp, r, (yyvsp[(2) - (4)].s)); (yyval.i) 
= 0;
-                   ;}
+                   }
     break;
 
   case 39:
-#line 738 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;;}
+#line 742 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;}
     break;
 
   case 41:
-#line 746 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); ;}
+#line 750 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 42:
-#line 748 "compilers/imcc/imcc.y"
+#line 752 "compilers/imcc/imcc.y"
     { /*
                       if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
                          emit_flush(interp);
                      */
-                     (yyval.i)=0; ;}
+                     (yyval.i)=0; }
     break;
 
   case 45:
-#line 763 "compilers/imcc/imcc.y"
+#line 767 "compilers/imcc/imcc.y"
     {
                     int re_open = 0;
                     (yyval.i) = 0;
@@ -3227,55 +2918,55 @@
                     IMCC_INFO(interp)->cur_namespace = (yyvsp[(2) - (3)].sr);
                     if (re_open)
                         IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, 
IMC_PASM);
-                ;}
+                }
     break;
 
   case 46:
-#line 777 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); ;}
+#line 781 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 47:
-#line 778 "compilers/imcc/imcc.y"
-    { (yyval.sr) = NULL; ;}
+#line 782 "compilers/imcc/imcc.y"
+    { (yyval.sr) = NULL; }
     break;
 
   case 48:
-#line 783 "compilers/imcc/imcc.y"
+#line 787 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
-        ;}
+        }
     break;
 
   case 49:
-#line 787 "compilers/imcc/imcc.y"
+#line 791 "compilers/imcc/imcc.y"
     {
           iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - 
(3)].sr));
-        ;}
+        }
     break;
 
   case 50:
-#line 790 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t); ;}
+#line 794 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t); }
     break;
 
   case 51:
-#line 792 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
+#line 796 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 52:
-#line 796 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 800 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 53:
-#line 797 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 801 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 54:
-#line 798 "compilers/imcc/imcc.y"
+#line 802 "compilers/imcc/imcc.y"
     {
        if (IMCC_INFO(interp)->adv_named_id) {
              add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3283,121 +2974,121 @@
              IMCC_INFO(interp)->adv_named_id = NULL;
          }
          else add_pcc_param(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - 
(3)].sr));
-   ;}
+   }
     break;
 
   case 55:
-#line 809 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 813 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 56:
-#line 809 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; ;}
+#line 813 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }
     break;
 
   case 57:
-#line 813 "compilers/imcc/imcc.y"
+#line 817 "compilers/imcc/imcc.y"
     { if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
                                              (yyval.sr) = mk_ident_ur(interp, 
(yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
                                          else
                                              (yyval.sr) = mk_ident(interp, 
(yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
-                                         (yyval.sr)->type |= (yyvsp[(3) - 
(3)].t); ;}
+                                         (yyval.sr)->type |= (yyvsp[(3) - 
(3)].t); }
     break;
 
   case 58:
-#line 818 "compilers/imcc/imcc.y"
+#line 822 "compilers/imcc/imcc.y"
     {
                                          if ((yyvsp[(5) - (5)].t) & 
VT_UNIQUE_REG)
                                              (yyval.sr) = mk_ident_ur(interp, 
(yyvsp[(4) - (5)].s), (yyvsp[(1) - (5)].t));
                                          else
                                              (yyval.sr) = mk_ident(interp, 
(yyvsp[(4) - (5)].s), (yyvsp[(1) - (5)].t));
                                          (yyval.sr)->type |= (yyvsp[(5) - 
(5)].t);
-                                         adv_named_set(interp, (yyvsp[(2) - 
(5)].s));;}
+                                         adv_named_set(interp, (yyvsp[(2) - 
(5)].s));}
     break;
 
   case 59:
-#line 829 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 833 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 60:
-#line 833 "compilers/imcc/imcc.y"
+#line 837 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->outer =
-                     mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s)); ;}
+                     mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s)); }
     break;
 
   case 61:
-#line 836 "compilers/imcc/imcc.y"
+#line 840 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->outer =
-                     mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); ;}
+                     mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); }
     break;
 
   case 62:
-#line 841 "compilers/imcc/imcc.y"
+#line 845 "compilers/imcc/imcc.y"
     { (yyval.t) = 0;
                        IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
-                       IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; ;}
+                       IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; }
     break;
 
   case 63:
-#line 845 "compilers/imcc/imcc.y"
+#line 849 "compilers/imcc/imcc.y"
     { (yyval.t) = 0;
-                       IMCC_INFO(interp)->cur_unit->vtable_name = 
strdup((yyvsp[(3) - (4)].s));
-                       IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; ;}
+                       IMCC_INFO(interp)->cur_unit->vtable_name = 
str_dup((yyvsp[(3) - (4)].s));
+                       IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; }
     break;
 
   case 64:
-#line 851 "compilers/imcc/imcc.y"
-    { add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL); ;}
+#line 855 "compilers/imcc/imcc.y"
+    { add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL); }
     break;
 
   case 65:
-#line 852 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - 
(3)].sr)); ;}
+#line 856 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - 
(3)].sr)); }
     break;
 
   case 66:
-#line 853 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0;  add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - 
(1)].sr));;}
+#line 857 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0;  add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - 
(1)].sr));}
     break;
 
   case 67:
-#line 857 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "INTVAL", 'S'); ;}
+#line 861 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, str_dup("INTVAL"), 'S'); }
     break;
 
   case 68:
-#line 858 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); ;}
+#line 862 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, str_dup("FLOATVAL"), 'S'); }
     break;
 
   case 69:
-#line 859 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "PMC", 'S'); ;}
+#line 863 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, str_dup("PMC"), 'S'); }
     break;
 
   case 70:
-#line 860 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "STRING", 'S'); ;}
+#line 864 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, str_dup("STRING"), 'S'); }
     break;
 
   case 71:
-#line 861 "compilers/imcc/imcc.y"
+#line 865 "compilers/imcc/imcc.y"
     {
                           SymReg *r;
                           if (strcmp((yyvsp[(1) - (1)].s), "_"))
                               r = mk_const(interp, (yyvsp[(1) - (1)].s), 'S');
                           else {
                               free((yyvsp[(1) - (1)].s)),
-                              r = mk_const(interp, "PMC", 'S');
+                              r = mk_const(interp, str_dup("PMC"), 'S');
                            }
                            (yyval.sr) = r;
-                      ;}
+                      }
     break;
 
   case 72:
-#line 871 "compilers/imcc/imcc.y"
+#line 875 "compilers/imcc/imcc.y"
     {
                           SymReg *r;
                           if (strcmp((yyvsp[(1) - (1)].s), "_"))
@@ -3407,16 +3098,16 @@
                               r = mk_const(interp, "PMC", 'S');
                            }
                            (yyval.sr) = r;
-                      ;}
+                      }
     break;
 
   case 73:
-#line 881 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); ;}
+#line 885 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 76:
-#line 891 "compilers/imcc/imcc.y"
+#line 895 "compilers/imcc/imcc.y"
     {
             char name[128];
             SymReg *r, *r1;
@@ -3424,7 +3115,7 @@
 
             sprintf(name, "%cpcc_sub_call_%d",
                     IMCC_INTERNAL_CHAR, IMCC_INFO(interp)->cnr++);
-            (yyval.sr) = r = mk_pcc_sub(interp, name, 0);
+            (yyval.sr) = r = mk_pcc_sub(interp, str_dup(name), 0);
             /* this mid rule action has the semantic value of the
              * sub SymReg.
              * This is used below to append args & results
@@ -3439,171 +3130,171 @@
             r1 = IMCC_INFO(interp)->cur_unit->instructions->r[0];
             if (r1 && r1->pcc_sub)
                 r1->pcc_sub->calls_a_sub |= 1;
-         ;}
+         }
     break;
 
   case 77:
-#line 919 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
+#line 923 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 78:
-#line 923 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; ;}
+#line 927 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 79:
-#line 924 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; ;}
+#line 928 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 80:
-#line 928 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; ;}
+#line 932 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; }
     break;
 
   case 81:
-#line 930 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = 
(yyvsp[(2) - (3)].sr); ;}
+#line 934 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = 
(yyvsp[(2) - (3)].sr); }
     break;
 
   case 82:
-#line 934 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 938 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 84:
-#line 939 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (1)].t); ;}
+#line 943 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 85:
-#line 940 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
+#line 944 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 86:
-#line 944 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_LOAD; ;}
+#line 948 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_LOAD; }
     break;
 
   case 87:
-#line 945 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_INIT; ;}
+#line 949 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_INIT; }
     break;
 
   case 88:
-#line 946 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_MAIN; ;}
+#line 950 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_MAIN; }
     break;
 
   case 89:
-#line 947 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_IMMEDIATE; ;}
+#line 951 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 90:
-#line 948 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_POSTCOMP; ;}
+#line 952 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_POSTCOMP; }
     break;
 
   case 91:
-#line 949 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_ANON; ;}
+#line 953 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_ANON; }
     break;
 
   case 92:
-#line 950 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_METHOD; ;}
+#line 954 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_METHOD; }
     break;
 
   case 93:
-#line 951 "compilers/imcc/imcc.y"
-    {  (yyval.t) = P_NEED_LEX; ;}
+#line 955 "compilers/imcc/imcc.y"
+    {  (yyval.t) = P_NEED_LEX; }
     break;
 
   case 97:
-#line 959 "compilers/imcc/imcc.y"
+#line 963 "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));
-         ;}
+         }
     break;
 
   case 98:
-#line 964 "compilers/imcc/imcc.y"
-    {  add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;}
+#line 968 "compilers/imcc/imcc.y"
+    {  add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 99:
-#line 966 "compilers/imcc/imcc.y"
+#line 970 "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;
-         ;}
+         }
     break;
 
   case 100:
-#line 971 "compilers/imcc/imcc.y"
-    {  add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;}
+#line 975 "compilers/imcc/imcc.y"
+    {  add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 101:
-#line 973 "compilers/imcc/imcc.y"
-    {  add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - 
(3)].s), 'S')); ;}
+#line 977 "compilers/imcc/imcc.y"
+    {  add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - 
(3)].s), 'S')); }
     break;
 
   case 102:
-#line 975 "compilers/imcc/imcc.y"
+#line 979 "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));
-         ;}
+         }
     break;
 
   case 103:
-#line 979 "compilers/imcc/imcc.y"
+#line 983 "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));
-         ;}
+         }
     break;
 
   case 104:
-#line 986 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = 0; ;}
+#line 990 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = 0; }
     break;
 
   case 105:
-#line 987 "compilers/imcc/imcc.y"
-    {  add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;}
+#line 991 "compilers/imcc/imcc.y"
+    {  add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 106:
-#line 991 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = (yyvsp[(2) - (2)].sr); ;}
+#line 995 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 107:
-#line 996 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = 0; ;}
+#line 1000 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = 0; }
     break;
 
   case 108:
-#line 997 "compilers/imcc/imcc.y"
-    {  if ((yyvsp[(2) - (3)].sr)) add_pcc_result(IMCC_INFO(interp)->cur_call, 
(yyvsp[(2) - (3)].sr)); ;}
+#line 1001 "compilers/imcc/imcc.y"
+    {  if ((yyvsp[(2) - (3)].sr)) add_pcc_result(IMCC_INFO(interp)->cur_call, 
(yyvsp[(2) - (3)].sr)); }
     break;
 
   case 109:
-#line 1001 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - 
(3)].t); ;}
+#line 1005 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - 
(3)].t); }
     break;
 
   case 110:
-#line 1002 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 1006 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 111:
-#line 1003 "compilers/imcc/imcc.y"
+#line 1007 "compilers/imcc/imcc.y"
     {
          IdList* l = (yyvsp[(4) - (4)].idlist);
          SymReg *ignored;
@@ -3614,266 +3305,266 @@
          UNUSED(ignored);
          is_def=0;
          (yyval.sr)=0;
-     ;}
+     }
     break;
 
   case 112:
-#line 1017 "compilers/imcc/imcc.y"
-    {  (yyval.t) = 0; ;}
+#line 1021 "compilers/imcc/imcc.y"
+    {  (yyval.t) = 0; }
     break;
 
   case 113:
-#line 1018 "compilers/imcc/imcc.y"
-    {  (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
+#line 1022 "compilers/imcc/imcc.y"
+    {  (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 114:
-#line 1022 "compilers/imcc/imcc.y"
-    {  (yyval.t) = VT_FLAT;   ;}
+#line 1026 "compilers/imcc/imcc.y"
+    {  (yyval.t) = VT_FLAT;   }
     break;
 
   case 115:
-#line 1023 "compilers/imcc/imcc.y"
-    {  (yyval.t) = VT_OPTIONAL; ;}
+#line 1027 "compilers/imcc/imcc.y"
+    {  (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 116:
-#line 1024 "compilers/imcc/imcc.y"
-    {  (yyval.t) = VT_OPT_FLAG; ;}
+#line 1028 "compilers/imcc/imcc.y"
+    {  (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 117:
-#line 1025 "compilers/imcc/imcc.y"
-    {  (yyval.t) = VT_NAMED; ;}
+#line 1029 "compilers/imcc/imcc.y"
+    {  (yyval.t) = VT_NAMED; }
     break;
 
   case 118:
-#line 1026 "compilers/imcc/imcc.y"
-    {  adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
+#line 1030 "compilers/imcc/imcc.y"
+    {  adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 119:
-#line 1027 "compilers/imcc/imcc.y"
-    {  (yyval.t) = VT_UNIQUE_REG; ;}
+#line 1031 "compilers/imcc/imcc.y"
+    {  (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 120:
-#line 1033 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 0); ;}
+#line 1037 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 0); }
     break;
 
   case 121:
-#line 1036 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;   IMCC_INFO(interp)->asm_state = AsmDefault; ;}
+#line 1040 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;   IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 122:
-#line 1037 "compilers/imcc/imcc.y"
-    {  IMCC_INFO(interp)->asm_state = AsmDefault; (yyval.i) = 0;  ;}
+#line 1041 "compilers/imcc/imcc.y"
+    {  IMCC_INFO(interp)->asm_state = AsmDefault; (yyval.i) = 0;  }
     break;
 
   case 123:
-#line 1043 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 1); ;}
+#line 1047 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 1); }
     break;
 
   case 124:
-#line 1046 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
+#line 1050 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 125:
-#line 1050 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = 0; ;}
+#line 1054 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = 0; }
     break;
 
   case 126:
-#line 1051 "compilers/imcc/imcc.y"
+#line 1055 "compilers/imcc/imcc.y"
     {
        if ((yyvsp[(1) - (2)].sr)) add_pcc_return(IMCC_INFO(interp)->sr_return, 
(yyvsp[(1) - (2)].sr));
-   ;}
+   }
     break;
 
   case 127:
-#line 1054 "compilers/imcc/imcc.y"
+#line 1058 "compilers/imcc/imcc.y"
     {
        if ((yyvsp[(2) - (3)].sr)) add_pcc_return(IMCC_INFO(interp)->sr_return, 
(yyvsp[(2) - (3)].sr));
-   ;}
+   }
     break;
 
   case 128:
-#line 1060 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - 
(3)].t); ;}
+#line 1064 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - 
(3)].t); }
     break;
 
   case 129:
-#line 1065 "compilers/imcc/imcc.y"
+#line 1069 "compilers/imcc/imcc.y"
     {
             if (IMCC_INFO(interp)->asm_state == AsmDefault)
                 begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
-        ;}
+        }
     break;
 
   case 130:
-#line 1070 "compilers/imcc/imcc.y"
-    {  IMCC_INFO(interp)->asm_state = AsmDefault; (yyval.t) = 0;  ;}
+#line 1074 "compilers/imcc/imcc.y"
+    {  IMCC_INFO(interp)->asm_state = AsmDefault; (yyval.t) = 0;  }
     break;
 
   case 131:
-#line 1074 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1078 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 132:
-#line 1075 "compilers/imcc/imcc.y"
-    { (yyval.t) = 1; ;}
+#line 1079 "compilers/imcc/imcc.y"
+    { (yyval.t) = 1; }
     break;
 
   case 133:
-#line 1079 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+#line 1083 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 134:
-#line 1080 "compilers/imcc/imcc.y"
+#line 1084 "compilers/imcc/imcc.y"
     {
       if (IMCC_INFO(interp)->adv_named_id) {
           add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
                                IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - 
(1)].sr));
           IMCC_INFO(interp)->adv_named_id = NULL;
       }
-      else add_pcc_return(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - 
(1)].sr)); ;}
+      else add_pcc_return(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - 
(1)].sr)); }
     break;
 
   case 135:
-#line 1087 "compilers/imcc/imcc.y"
+#line 1091 "compilers/imcc/imcc.y"
     {
-      add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - 
(3)].s), (yyvsp[(3) - (3)].sr));;}
+      add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - 
(3)].s), (yyvsp[(3) - (3)].sr));}
     break;
 
   case 136:
-#line 1089 "compilers/imcc/imcc.y"
+#line 1093 "compilers/imcc/imcc.y"
     {
       if (IMCC_INFO(interp)->adv_named_id) {
           add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
                                IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - 
(3)].sr));
            IMCC_INFO(interp)->adv_named_id = NULL;
       }
-      else add_pcc_return(IMCC_INFO(interp)->sr_return, (yyvsp[(3) - 
(3)].sr));    ;}
+      else add_pcc_return(IMCC_INFO(interp)->sr_return, (yyvsp[(3) - 
(3)].sr));    }
     break;
 
   case 137:
-#line 1096 "compilers/imcc/imcc.y"
+#line 1100 "compilers/imcc/imcc.y"
     {
-      add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - 
(5)].s), (yyvsp[(5) - (5)].sr));;}
+      add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - 
(5)].s), (yyvsp[(5) - (5)].sr));}
     break;
 
   case 140:
-#line 1115 "compilers/imcc/imcc.y"
-    { clear_state(interp); ;}
+#line 1119 "compilers/imcc/imcc.y"
+    { clear_state(interp); }
     break;
 
   case 141:
-#line 1120 "compilers/imcc/imcc.y"
-    {  (yyval.i) = (yyvsp[(2) - (2)].i); ;}
+#line 1124 "compilers/imcc/imcc.y"
+    {  (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 142:
-#line 1121 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; ;}
+#line 1125 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; }
     break;
 
   case 143:
-#line 1122 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; ;}
+#line 1126 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; }
     break;
 
   case 144:
-#line 1123 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; ;}
+#line 1127 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; }
     break;
 
   case 145:
-#line 1127 "compilers/imcc/imcc.y"
-    {  (yyval.i) = NULL; ;}
+#line 1131 "compilers/imcc/imcc.y"
+    {  (yyval.i) = NULL; }
     break;
 
   case 149:
-#line 1137 "compilers/imcc/imcc.y"
+#line 1141 "compilers/imcc/imcc.y"
     {
          (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, 
mk_local_label(interp, (yyvsp[(1) - (1)].s)));
-                   ;}
+                   }
     break;
 
   case 150:
-#line 1146 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (3)].i); ;}
+#line 1150 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 151:
-#line 1148 "compilers/imcc/imcc.y"
+#line 1152 "compilers/imcc/imcc.y"
     { if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                            IMCC_warning(interp, "Too many errors. Correct some 
first.\n");
                            YYABORT;
                        }
-                       yyerrok; ;}
+                       yyerrok; }
     break;
 
   case 152:
-#line 1157 "compilers/imcc/imcc.y"
+#line 1161 "compilers/imcc/imcc.y"
     {
          IdList* l = (yyvsp[(1) - (1)].idlist);
          l->next = NULL;
          (yyval.idlist) = l;
-     ;}
+     }
     break;
 
   case 153:
-#line 1164 "compilers/imcc/imcc.y"
+#line 1168 "compilers/imcc/imcc.y"
     {
          IdList* l = (yyvsp[(3) - (3)].idlist);
          l->next = (yyvsp[(1) - (3)].idlist);
          (yyval.idlist) = l;
-     ;}
+     }
     break;
 
   case 154:
-#line 1173 "compilers/imcc/imcc.y"
+#line 1177 "compilers/imcc/imcc.y"
     {
          IdList* l = (IdList*)malloc(sizeof (IdList));
          l->id = (yyvsp[(1) - (2)].s);
          l->unique_reg = (yyvsp[(2) - (2)].t);
          (yyval.idlist) = l;
-     ;}
+     }
     break;
 
   case 155:
-#line 1182 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1186 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 156:
-#line 1183 "compilers/imcc/imcc.y"
-    { (yyval.t) = 1; ;}
+#line 1187 "compilers/imcc/imcc.y"
+    { (yyval.t) = 1; }
     break;
 
   case 159:
-#line 1190 "compilers/imcc/imcc.y"
-    { push_namespace((yyvsp[(2) - (2)].s)); ;}
+#line 1194 "compilers/imcc/imcc.y"
+    { push_namespace((yyvsp[(2) - (2)].s)); }
     break;
 
   case 160:
-#line 1191 "compilers/imcc/imcc.y"
-    { pop_namespace((yyvsp[(2) - (2)].s)); ;}
+#line 1195 "compilers/imcc/imcc.y"
+    { pop_namespace((yyvsp[(2) - (2)].s)); }
     break;
 
   case 161:
-#line 1192 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 1196 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 162:
-#line 1193 "compilers/imcc/imcc.y"
+#line 1197 "compilers/imcc/imcc.y"
     {
          IdList* l = (yyvsp[(4) - (4)].idlist);
          while (l) {
@@ -3889,909 +3580,909 @@
              free(l1);
          }
          is_def=0; (yyval.i)=0;
-     ;}
+     }
     break;
 
   case 163:
-#line 1210 "compilers/imcc/imcc.y"
+#line 1214 "compilers/imcc/imcc.y"
     {
                        set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - 
(4)].s)); (yyval.i) = 0;
-                    ;}
+                    }
     break;
 
   case 164:
-#line 1213 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 1217 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 165:
-#line 1214 "compilers/imcc/imcc.y"
+#line 1218 "compilers/imcc/imcc.y"
     {
                         SymReg *ignored;
                         ignored = mk_const_ident(interp, (yyvsp[(4) - (6)].s), 
(yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
                         UNUSED(ignored);
                         is_def=0;
-                    ;}
+                    }
     break;
 
   case 167:
-#line 1222 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 1226 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 168:
-#line 1223 "compilers/imcc/imcc.y"
+#line 1227 "compilers/imcc/imcc.y"
     {
                         SymReg *ignored;
                         ignored = mk_const_ident(interp, (yyvsp[(4) - (6)].s), 
(yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
                         UNUSED(ignored);
                         is_def=0;
-                    ;}
+                    }
     break;
 
   case 169:
-#line 1229 "compilers/imcc/imcc.y"
+#line 1233 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;
                            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= 
isTAIL_CALL;
                            IMCC_INFO(interp)->cur_call = NULL;
-                        ;}
+                        }
     break;
 
   case 170:
-#line 1233 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, 
(yyvsp[(2) - (2)].sr)); ;}
+#line 1237 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, 
(yyvsp[(2) - (2)].sr)); }
     break;
 
   case 171:
-#line 1235 "compilers/imcc/imcc.y"
+#line 1239 "compilers/imcc/imcc.y"
     { (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - 
(2)].s), 0,
                               IMCC_INFO(interp) -> regs,
                               IMCC_INFO(interp) -> nargs,
                               IMCC_INFO(interp) -> keyvec, 1);
-                       free((yyvsp[(1) - (2)].s)); ;}
+                       free((yyvsp[(1) - (2)].s)); }
     break;
 
   case 172:
-#line 1241 "compilers/imcc/imcc.y"
-    {  (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, 
(yyvsp[(2) - (2)].sr)); ;}
+#line 1245 "compilers/imcc/imcc.y"
+    {  (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, 
(yyvsp[(2) - (2)].sr)); }
     break;
 
   case 173:
-#line 1242 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
+#line 1246 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 174:
-#line 1243 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; ;}
+#line 1247 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; }
     break;
 
   case 177:
-#line 1246 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;;}
+#line 1250 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;}
     break;
 
   case 178:
-#line 1250 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'I'; ;}
+#line 1254 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'I'; }
     break;
 
   case 179:
-#line 1251 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'N'; ;}
+#line 1255 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'N'; }
     break;
 
   case 180:
-#line 1252 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'S'; ;}
+#line 1256 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'S'; }
     break;
 
   case 181:
-#line 1253 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'P'; ;}
+#line 1257 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'P'; }
     break;
 
   case 182:
-#line 1254 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'P'; free((yyvsp[(1) - (1)].s)); ;}
+#line 1258 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'P'; free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 183:
-#line 1259 "compilers/imcc/imcc.y"
+#line 1263 "compilers/imcc/imcc.y"
     {
              if ((IMCC_INFO(interp)->cur_pmc_type = pmc_type(interp,
                   string_from_cstring(interp, (yyvsp[(1) - (1)].s), 0))) <= 0) 
{
                 IMCC_fataly(interp, E_SyntaxError,
                    "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s));
             }
-         ;}
+         }
     break;
 
   case 184:
-#line 1270 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, 
(yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  ;}
+#line 1274 "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 185:
-#line 1272 "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));  ;}
+#line 1276 "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 186:
-#line 1274 "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));  ;}
+#line 1278 "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 187:
-#line 1276 "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)); ;}
+#line 1280 "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 188:
-#line 1278 "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)); ;}
+#line 1282 "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 189:
-#line 1280 "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); ;}
+#line 1284 "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 190:
-#line 1282 "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); ;}
+#line 1286 "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 191:
-#line 1284 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - 
(4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); ;}
+#line 1288 "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 192:
-#line 1286 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, 
(yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+#line 1290 "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 193:
-#line 1288 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, 
(yyvsp[(1) - (6)].sr), (yyvsp[(5) - (6)].sr)); ;}
+#line 1292 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, 
(yyvsp[(1) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
   case 194:
-#line 1290 "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)); ;}
+#line 1294 "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 195:
-#line 1292 "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)); ;}
+#line 1296 "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 196:
-#line 1294 "compilers/imcc/imcc.y"
+#line 1298 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set_addr",
-                        2, (yyvsp[(1) - (4)].sr), mk_label_address(interp, 
(yyvsp[(4) - (4)].s))); ;}
+                        2, (yyvsp[(1) - (4)].sr), mk_label_address(interp, 
(yyvsp[(4) - (4)].s))); }
     break;
 
   case 197:
-#line 1297 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "find_global", 2, 
(yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));;}
+#line 1301 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "find_global", 2, 
(yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));}
     break;
 
   case 198:
-#line 1299 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "store_global", 2, 
(yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+#line 1303 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "store_global", 2, 
(yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
   case 199:
-#line 1303 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, 
(yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+#line 1307 "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 200:
-#line 1305 "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)); ;}
+#line 1309 "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 201:
-#line 1307 "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)); ;}
+#line 1311 "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 202:
-#line 1310 "compilers/imcc/imcc.y"
+#line 1314 "compilers/imcc/imcc.y"
     {
             add_pcc_result((yyvsp[(3) - (3)].i)->r[0], (yyvsp[(1) - (3)].sr));
             IMCC_INFO(interp)->cur_call = NULL;
             (yyval.i) = 0;
-         ;}
+         }
     break;
 
   case 203:
-#line 1316 "compilers/imcc/imcc.y"
+#line 1320 "compilers/imcc/imcc.y"
     {
             (yyval.i) = IMCC_create_itcall_label(interp);
-         ;}
+         }
     break;
 
   case 204:
-#line 1320 "compilers/imcc/imcc.y"
+#line 1324 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
-         ;}
+         }
     break;
 
   case 208:
-#line 1328 "compilers/imcc/imcc.y"
-    {  (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, 
(yyvsp[(1) - (3)].sr)); ;}
+#line 1332 "compilers/imcc/imcc.y"
+    {  (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, 
(yyvsp[(1) - (3)].sr)); }
     break;
 
   case 209:
-#line 1332 "compilers/imcc/imcc.y"
-    { (yyval.s) = "not"; ;}
+#line 1336 "compilers/imcc/imcc.y"
+    { (yyval.s) = "not"; }
     break;
 
   case 210:
-#line 1333 "compilers/imcc/imcc.y"
-    { (yyval.s) = "bnot"; ;}
+#line 1337 "compilers/imcc/imcc.y"
+    { (yyval.s) = "bnot"; }
     break;
 
   case 211:
-#line 1334 "compilers/imcc/imcc.y"
-    { (yyval.s) = "neg"; ;}
+#line 1338 "compilers/imcc/imcc.y"
+    { (yyval.s) = "neg"; }
     break;
 
   case 212:
-#line 1338 "compilers/imcc/imcc.y"
-    { (yyval.s) = "sub"; ;}
+#line 1342 "compilers/imcc/imcc.y"
+    { (yyval.s) = "sub"; }
     break;
 
   case 213:
-#line 1339 "compilers/imcc/imcc.y"
-    { (yyval.s) = "add"; ;}
+#line 1343 "compilers/imcc/imcc.y"
+    { (yyval.s) = "add"; }
     break;
 
   case 214:
-#line 1340 "compilers/imcc/imcc.y"
-    { (yyval.s) = "mul"; ;}
+#line 1344 "compilers/imcc/imcc.y"
+    { (yyval.s) = "mul"; }
     break;
 
   case 215:
-#line 1341 "compilers/imcc/imcc.y"
-    { (yyval.s) = "div"; ;}
+#line 1345 "compilers/imcc/imcc.y"
+    { (yyval.s) = "div"; }
     break;
 
   case 216:
-#line 1342 "compilers/imcc/imcc.y"
-    { (yyval.s) = "mod"; ;}
+#line 1346 "compilers/imcc/imcc.y"
+    { (yyval.s) = "mod"; }
     break;
 
   case 217:
-#line 1343 "compilers/imcc/imcc.y"
-    { (yyval.s) = "fdiv"; ;}
+#line 1347 "compilers/imcc/imcc.y"
+    { (yyval.s) = "fdiv"; }
     break;
 
   case 218:
-#line 1344 "compilers/imcc/imcc.y"
-    { (yyval.s) = "pow"; ;}
+#line 1348 "compilers/imcc/imcc.y"
+    { (yyval.s) = "pow"; }
     break;
 
   case 219:
-#line 1345 "compilers/imcc/imcc.y"
-    { (yyval.s) = "concat"; ;}
+#line 1349 "compilers/imcc/imcc.y"
+    { (yyval.s) = "concat"; }
     break;
 
   case 220:
-#line 1346 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "iseq"; ;}
+#line 1350 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "iseq"; }
     break;
 
   case 221:
-#line 1347 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "isne"; ;}
+#line 1351 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "isne"; }
     break;
 
   case 222:
-#line 1348 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "isgt"; ;}
+#line 1352 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "isgt"; }
     break;
 
   case 223:
-#line 1349 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "isge"; ;}
+#line 1353 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "isge"; }
     break;
 
   case 224:
-#line 1350 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "islt"; ;}
+#line 1354 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "islt"; }
     break;
 
   case 225:
-#line 1351 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "isle"; ;}
+#line 1355 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "isle"; }
     break;
 
   case 226:
-#line 1352 "compilers/imcc/imcc.y"
-    { (yyval.s) = "shl"; ;}
+#line 1356 "compilers/imcc/imcc.y"
+    { (yyval.s) = "shl"; }
     break;
 
   case 227:
-#line 1353 "compilers/imcc/imcc.y"
-    { (yyval.s) = "shr"; ;}
+#line 1357 "compilers/imcc/imcc.y"
+    { (yyval.s) = "shr"; }
     break;
 
   case 228:
-#line 1354 "compilers/imcc/imcc.y"
-    { (yyval.s) = "lsr"; ;}
+#line 1358 "compilers/imcc/imcc.y"
+    { (yyval.s) = "lsr"; }
     break;
 
   case 229:
-#line 1355 "compilers/imcc/imcc.y"
-    { (yyval.s) = "and"; ;}
+#line 1359 "compilers/imcc/imcc.y"
+    { (yyval.s) = "and"; }
     break;
 
   case 230:
-#line 1356 "compilers/imcc/imcc.y"
-    { (yyval.s) = "or"; ;}
+#line 1360 "compilers/imcc/imcc.y"
+    { (yyval.s) = "or"; }
     break;
 
   case 231:
-#line 1357 "compilers/imcc/imcc.y"
-    { (yyval.s) = "xor"; ;}
+#line 1361 "compilers/imcc/imcc.y"
+    { (yyval.s) = "xor"; }
     break;
 
   case 232:
-#line 1358 "compilers/imcc/imcc.y"
-    { (yyval.s) = "band"; ;}
+#line 1362 "compilers/imcc/imcc.y"
+    { (yyval.s) = "band"; }
     break;
 
   case 233:
-#line 1359 "compilers/imcc/imcc.y"
-    { (yyval.s) = "bor"; ;}
+#line 1363 "compilers/imcc/imcc.y"
+    { (yyval.s) = "bor"; }
     break;
 
   case 234:
-#line 1360 "compilers/imcc/imcc.y"
-    { (yyval.s) = "bxor"; ;}
+#line 1364 "compilers/imcc/imcc.y"
+    { (yyval.s) = "bxor"; }
     break;
 
   case 235:
-#line 1364 "compilers/imcc/imcc.y"
+#line 1368 "compilers/imcc/imcc.y"
     { (yyval.i) = IMCC_create_itcall_label(interp);
-                           (yyval.i)->type &= ~ITCALL; (yyval.i)->type |= 
ITRESULT; ;}
+                           (yyval.i)->type &= ~ITCALL; (yyval.i)->type |= 
ITRESULT; }
     break;
 
   case 236:
-#line 1366 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; ;}
+#line 1370 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; }
     break;
 
   case 237:
-#line 1373 "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)); ;}
+#line 1377 "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 238:
-#line 1377 "compilers/imcc/imcc.y"
-    { (yyval.s) = "add"; ;}
+#line 1381 "compilers/imcc/imcc.y"
+    { (yyval.s) = "add"; }
     break;
 
   case 239:
-#line 1378 "compilers/imcc/imcc.y"
-    { (yyval.s) = "sub"; ;}
+#line 1382 "compilers/imcc/imcc.y"
+    { (yyval.s) = "sub"; }
     break;
 
   case 240:
-#line 1379 "compilers/imcc/imcc.y"
-    { (yyval.s) = "mul"; ;}
+#line 1383 "compilers/imcc/imcc.y"
+    { (yyval.s) = "mul"; }
     break;
 
   case 241:
-#line 1380 "compilers/imcc/imcc.y"
-    { (yyval.s) = "div"; ;}
+#line 1384 "compilers/imcc/imcc.y"
+    { (yyval.s) = "div"; }
     break;
 
   case 242:
-#line 1381 "compilers/imcc/imcc.y"
-    { (yyval.s) = "mod"; ;}
+#line 1385 "compilers/imcc/imcc.y"
+    { (yyval.s) = "mod"; }
     break;
 
   case 243:
-#line 1382 "compilers/imcc/imcc.y"
-    { (yyval.s) = "fdiv"; ;}
+#line 1386 "compilers/imcc/imcc.y"
+    { (yyval.s) = "fdiv"; }
     break;
 
   case 244:
-#line 1383 "compilers/imcc/imcc.y"
-    { (yyval.s) = "concat"; ;}
+#line 1387 "compilers/imcc/imcc.y"
+    { (yyval.s) = "concat"; }
     break;
 
   case 245:
-#line 1384 "compilers/imcc/imcc.y"
-    { (yyval.s) = "band"; ;}
+#line 1388 "compilers/imcc/imcc.y"
+    { (yyval.s) = "band"; }
     break;
 
   case 246:
-#line 1385 "compilers/imcc/imcc.y"
-    { (yyval.s) = "bor"; ;}
+#line 1389 "compilers/imcc/imcc.y"
+    { (yyval.s) = "bor"; }
     break;
 
   case 247:
-#line 1386 "compilers/imcc/imcc.y"
-    { (yyval.s) = "bxor"; ;}
+#line 1390 "compilers/imcc/imcc.y"
+    { (yyval.s) = "bxor"; }
     break;
 
   case 248:
-#line 1387 "compilers/imcc/imcc.y"
-    { (yyval.s) = "shr"; ;}
+#line 1391 "compilers/imcc/imcc.y"
+    { (yyval.s) = "shr"; }
     break;
 
   case 249:
-#line 1388 "compilers/imcc/imcc.y"
-    { (yyval.s) = "shl"; ;}
+#line 1392 "compilers/imcc/imcc.y"
+    { (yyval.s) = "shl"; }
     break;
 
   case 250:
-#line 1389 "compilers/imcc/imcc.y"
-    { (yyval.s) = "lsr"; ;}
+#line 1393 "compilers/imcc/imcc.y"
+    { (yyval.s) = "lsr"; }
     break;
 
   case 251:
-#line 1395 "compilers/imcc/imcc.y"
+#line 1399 "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,
                                    IMCC_INFO(interp) -> nargs,
                                    IMCC_INFO(interp) -> keyvec, 1);
                      free((yyvsp[(3) - (4)].s));
-                   ;}
+                   }
     break;
 
   case 252:
-#line 1403 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1407 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 253:
-#line 1404 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1408 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 254:
-#line 1405 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1409 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 255:
-#line 1406 "compilers/imcc/imcc.y"
+#line 1410 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr);
                        if ((yyvsp[(1) - (1)].sr)->set != 'P')
                             IMCC_fataly(interp, E_SyntaxError,
                                   "Sub isn't a PMC");
-                     ;}
+                     }
     break;
 
   case 256:
-#line 1411 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = 
(yyvsp[(3) - (3)].sr); ;}
+#line 1415 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = 
(yyvsp[(3) - (3)].sr); }
     break;
 
   case 257:
-#line 1412 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = 
mk_const(interp, (yyvsp[(3) - (3)].s), 'S'); ;}
+#line 1416 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = 
mk_const(interp, (yyvsp[(3) - (3)].s), 'S'); }
     break;
 
   case 258:
-#line 1413 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = 
(yyvsp[(3) - (3)].sr); ;}
+#line 1417 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = 
(yyvsp[(3) - (3)].sr); }
     break;
 
   case 259:
-#line 1419 "compilers/imcc/imcc.y"
+#line 1423 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
-        ;}
+        }
     break;
 
   case 260:
-#line 1424 "compilers/imcc/imcc.y"
-    {  (yyval.i) = (yyvsp[(2) - (5)].i); ;}
+#line 1428 "compilers/imcc/imcc.y"
+    {  (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 261:
-#line 1428 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = 0; ;}
+#line 1432 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = 0; }
     break;
 
   case 262:
-#line 1429 "compilers/imcc/imcc.y"
+#line 1433 "compilers/imcc/imcc.y"
     {  (yyval.sr) = 0;
        if (IMCC_INFO(interp)->adv_named_id) {
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, 
IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
            IMCC_INFO(interp)->adv_named_id = NULL;
        }
        else add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-   ;}
+   }
     break;
 
   case 263:
-#line 1436 "compilers/imcc/imcc.y"
+#line 1440 "compilers/imcc/imcc.y"
     {  (yyval.sr) = 0;
        if (IMCC_INFO(interp)->adv_named_id) {
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, 
IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
            IMCC_INFO(interp)->adv_named_id = NULL;
        }
        else add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-   ;}
+   }
     break;
 
   case 264:
-#line 1443 "compilers/imcc/imcc.y"
+#line 1447 "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));;}
+                                     add_pcc_named_arg(interp, 
IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));}
     break;
 
   case 265:
-#line 1445 "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));;}
+#line 1449 "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));}
     break;
 
   case 266:
-#line 1449 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - 
(2)].t); ;}
+#line 1453 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - 
(2)].t); }
     break;
 
   case 267:
-#line 1453 "compilers/imcc/imcc.y"
-    {  (yyval.t) = 0; ;}
+#line 1457 "compilers/imcc/imcc.y"
+    {  (yyval.t) = 0; }
     break;
 
   case 268:
-#line 1454 "compilers/imcc/imcc.y"
-    {  (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
+#line 1458 "compilers/imcc/imcc.y"
+    {  (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 269:
-#line 1458 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_FLAT; ;}
+#line 1462 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_FLAT; }
     break;
 
   case 270:
-#line 1459 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_NAMED; ;}
+#line 1463 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_NAMED; }
     break;
 
   case 271:
-#line 1460 "compilers/imcc/imcc.y"
-    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
+#line 1464 "compilers/imcc/imcc.y"
+    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 272:
-#line 1463 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - 
(2)].t); ;}
+#line 1467 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - 
(2)].t); }
     break;
 
   case 273:
-#line 1467 "compilers/imcc/imcc.y"
+#line 1471 "compilers/imcc/imcc.y"
     {
          (yyval.sr) = 0;
          if (IMCC_INFO(interp)->adv_named_id) {
              add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, 
IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
              IMCC_INFO(interp)->adv_named_id = NULL;
          }
-         else add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - 
(3)].sr)); ;}
+         else add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - 
(3)].sr)); }
     break;
 
   case 274:
-#line 1474 "compilers/imcc/imcc.y"
+#line 1478 "compilers/imcc/imcc.y"
     {
-        add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - 
(5)].s), (yyvsp[(5) - (5)].sr)); ;}
+        add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - 
(5)].s), (yyvsp[(5) - (5)].sr)); }
     break;
 
   case 275:
-#line 1476 "compilers/imcc/imcc.y"
+#line 1480 "compilers/imcc/imcc.y"
     {
        (yyval.sr) = 0;
        if (IMCC_INFO(interp)->adv_named_id) {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, 
IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
            IMCC_INFO(interp)->adv_named_id = NULL;
        }
-       else add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - 
(1)].sr)); ;}
+       else add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - 
(1)].sr)); }
     break;
 
   case 276:
-#line 1483 "compilers/imcc/imcc.y"
-    { add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - 
(3)].s), (yyvsp[(3) - (3)].sr)); ;}
+#line 1487 "compilers/imcc/imcc.y"
+    { add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - 
(3)].s), (yyvsp[(3) - (3)].sr)); }
     break;
 
   case 277:
-#line 1484 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = 0; ;}
+#line 1488 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = 0; }
     break;
 
   case 278:
-#line 1488 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+#line 1492 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 279:
-#line 1489 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+#line 1493 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 280:
-#line 1494 "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)); ;}
+#line 1498 "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 281:
-#line 1496 "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)); ;}
+#line 1500 "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 282:
-#line 1498 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, 
(yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+#line 1502 "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 283:
-#line 1503 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, 
(yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+#line 1507 "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 284:
-#line 1505 "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)); ;}
+#line 1509 "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 285:
-#line 1507 "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)); ;}
+#line 1511 "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 286:
-#line 1511 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1515 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 287:
-#line 1512 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1516 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 288:
-#line 1516 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "eq"; ;}
+#line 1520 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "eq"; }
     break;
 
   case 289:
-#line 1517 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "ne"; ;}
+#line 1521 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "ne"; }
     break;
 
   case 290:
-#line 1518 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "gt"; ;}
+#line 1522 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "gt"; }
     break;
 
   case 291:
-#line 1519 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "ge"; ;}
+#line 1523 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "ge"; }
     break;
 
   case 292:
-#line 1520 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "lt"; ;}
+#line 1524 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "lt"; }
     break;
 
   case 293:
-#line 1521 "compilers/imcc/imcc.y"
-    {  (yyval.s) = "le"; ;}
+#line 1525 "compilers/imcc/imcc.y"
+    {  (yyval.s) = "le"; }
     break;
 
   case 296:
-#line 1530 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = NULL; ;}
+#line 1534 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = NULL; }
     break;
 
   case 297:
-#line 1531 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = (yyvsp[(1) - (1)].sr); ;}
+#line 1535 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 298:
-#line 1535 "compilers/imcc/imcc.y"
-    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; ;}
+#line 1539 "compilers/imcc/imcc.y"
+    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 300:
-#line 1540 "compilers/imcc/imcc.y"
-    {  IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - 
(1)].sr); ;}
+#line 1544 "compilers/imcc/imcc.y"
+    {  IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - 
(1)].sr); }
     break;
 
   case 301:
-#line 1542 "compilers/imcc/imcc.y"
+#line 1546 "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);
                       IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = 
(yyvsp[(3) - (4)].sr);
                       (yyval.sr) = (yyvsp[(1) - (4)].sr);
-                   ;}
+                   }
     break;
 
   case 302:
-#line 1549 "compilers/imcc/imcc.y"
+#line 1553 "compilers/imcc/imcc.y"
     {
                       IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = 
(yyvsp[(2) - (3)].sr);
                       (yyval.sr) = (yyvsp[(2) - (3)].sr);
-                   ;}
+                   }
     break;
 
   case 304:
-#line 1556 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1560 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 305:
-#line 1557 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1561 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 306:
-#line 1561 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1565 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 307:
-#line 1562 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1566 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 308:
-#line 1566 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1570 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 309:
-#line 1567 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); ;}
+#line 1571 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); }
     break;
 
   case 314:
-#line 1580 "compilers/imcc/imcc.y"
+#line 1584 "compilers/imcc/imcc.y"
     {  IMCC_INFO(interp)->nkeys = 0;
-                      IMCC_INFO(interp)->in_slice = 0; ;}
+                      IMCC_INFO(interp)->in_slice = 0; }
     break;
 
   case 315:
-#line 1582 "compilers/imcc/imcc.y"
+#line 1586 "compilers/imcc/imcc.y"
     {  (yyval.sr) = link_keys(interp,
                                      IMCC_INFO(interp)->nkeys,
-                                     IMCC_INFO(interp)->keys, 0); ;}
+                                     IMCC_INFO(interp)->keys, 0); }
     break;
 
   case 316:
-#line 1587 "compilers/imcc/imcc.y"
+#line 1591 "compilers/imcc/imcc.y"
     {  IMCC_INFO(interp)->nkeys = 0;
-                      IMCC_INFO(interp)->in_slice = 0; ;}
+                      IMCC_INFO(interp)->in_slice = 0; }
     break;
 
   case 317:
-#line 1589 "compilers/imcc/imcc.y"
+#line 1593 "compilers/imcc/imcc.y"
     {  (yyval.sr) = link_keys(interp,
                                      IMCC_INFO(interp)->nkeys,
-                                     IMCC_INFO(interp)->keys, 1); ;}
+                                     IMCC_INFO(interp)->keys, 1); }
     break;
 
   case 318:
-#line 1595 "compilers/imcc/imcc.y"
-    {  IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - 
(1)].sr); ;}
+#line 1599 "compilers/imcc/imcc.y"
+    {  IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - 
(1)].sr); }
     break;
 
   case 319:
-#line 1597 "compilers/imcc/imcc.y"
+#line 1601 "compilers/imcc/imcc.y"
     {  IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - 
(3)].sr);
-                      (yyval.sr) = IMCC_INFO(interp)->keys[0]; ;}
+                      (yyval.sr) = IMCC_INFO(interp)->keys[0]; }
     break;
 
   case 320:
-#line 1599 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->in_slice = 1; ;}
+#line 1603 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->in_slice = 1; }
     break;
 
   case 321:
-#line 1600 "compilers/imcc/imcc.y"
+#line 1604 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(4) - 
(4)].sr);
-                       (yyval.sr) = IMCC_INFO(interp)->keys[0]; ;}
+                       (yyval.sr) = IMCC_INFO(interp)->keys[0]; }
     break;
 
   case 322:
-#line 1605 "compilers/imcc/imcc.y"
+#line 1609 "compilers/imcc/imcc.y"
     { if (IMCC_INFO(interp)->in_slice) {
                          (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | 
VT_END_SLICE;
                      }
                      (yyval.sr) = (yyvsp[(1) - (1)].sr);
-                   ;}
+                   }
     break;
 
   case 323:
-#line 1611 "compilers/imcc/imcc.y"
+#line 1615 "compilers/imcc/imcc.y"
     { (yyvsp[(1) - (3)].sr)->type |= VT_START_SLICE;
                      (yyvsp[(3) - (3)].sr)->type |= VT_END_SLICE;
                      IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = 
(yyvsp[(1) - (3)].sr);
-                     (yyval.sr) = (yyvsp[(3) - (3)].sr); ;}
+                     (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 324:
-#line 1615 "compilers/imcc/imcc.y"
-    { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) 
= (yyvsp[(2) - (2)].sr); ;}
+#line 1619 "compilers/imcc/imcc.y"
+    { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) 
= (yyvsp[(2) - (2)].sr); }
     break;
 
   case 325:
-#line 1616 "compilers/imcc/imcc.y"
-    { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = 
(yyvsp[(1) - (2)].sr); ;}
+#line 1620 "compilers/imcc/imcc.y"
+    { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = 
(yyvsp[(1) - (2)].sr); }
     break;
 
   case 326:
-#line 1620 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); ;}
+#line 1624 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 327:
-#line 1621 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); ;}
+#line 1625 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 328:
-#line 1622 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); ;}
+#line 1626 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 329:
-#line 1623 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); ;}
+#line 1627 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 330:
-#line 1624 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s));    ;}
+#line 1628 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s));    }
     break;
 
   case 331:
-#line 1628 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); ;}
+#line 1632 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 332:
-#line 1629 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); ;}
+#line 1633 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 333:
-#line 1630 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); ;}
+#line 1634 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 334:
-#line 1631 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); ;}
+#line 1635 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); }
     break;
 
   case 335:
-#line 1635 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); ;}
+#line 1639 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 336:
-#line 1636 "compilers/imcc/imcc.y"
-    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S');  ;}
+#line 1640 "compilers/imcc/imcc.y"
+    {  (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S');  }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 4471 "compilers/imcc/imcparser.c"
+#line 4475 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5005,7 +4696,7 @@
 }
 
 
-#line 1641 "compilers/imcc/imcc.y"
+#line 1645 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */
@@ -5060,21 +4751,10 @@
     return 0;
 }
 
-
-/*
-
-=back
-
-=head1 SEE ALSO
-
-=cut
-
-*/
-
-
 /*
  * Local variables:
  *   c-file-style: "parrot"
  * End:
  * vim: expandtab shiftwidth=4:
  */
+

<Prev in Thread] Current Thread [Next in Thread>
  • [svn:parrot] r25510 - trunk/compilers/imcc, chromatic <=