cvsuser     05/03/27 05:15:05

  Modified:    imcc     imcparser.c imcparser.h
  Log:
  PMC constants and more - generated files
  
  Revision  Changes    Path
  1.144     +315 -312  parrot/imcc/imcparser.c
  
  Index: imcparser.c
  ===================================================================
  RCS file: /cvs/public/parrot/imcc/imcparser.c,v
  retrieving revision 1.143
  retrieving revision 1.144
  diff -u -r1.143 -r1.144
  --- imcparser.c       25 Mar 2005 07:44:57 -0000      1.143
  +++ imcparser.c       27 Mar 2005 13:15:05 -0000      1.144
  @@ -422,16 +422,19 @@
       constant[len - 1] = '\0';
       strcpy(name, constant + 1);
       free(constant);
  -    rhs = mk_const(interp, name, 'p');
  -    r[1] = rhs;
       switch (type_enum) {
           case enum_class_Sub:
  +        case enum_class_Coroutine:
  +            rhs = mk_const(interp, name, 'p');
  +            r[1] = rhs;
  +            rhs->pmc_type = type_enum;
               rhs->usage = U_FIXUP;
               return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
       }
  -    IMCC_fataly(interp, E_SyntaxError,
  -        "Unknown PMC constant type %d", type_enum);
  -    return NULL;
  +    rhs = mk_const(interp, name, 'P');
  +    r[1] = rhs;
  +    rhs->pmc_type = type_enum;
  +    return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
   }
   
   static Instruction*
  @@ -617,7 +620,7 @@
   #endif
   
   #ifndef YYSTYPE
  -#line 318 "imcc/imcc.y"
  +#line 321 "imcc/imcc.y"
   typedef union {
       IdList * idlist;
       int t;
  @@ -629,7 +632,7 @@
       SymbolTable * symtab;
   } yystype;
   /* Line 193 of /usr/share/bison/yacc.c.  */
  -#line 633 "imcc/imcparser.c"
  +#line 636 "imcc/imcparser.c"
   # define YYSTYPE yystype
   # define YYSTYPE_IS_TRIVIAL 1
   #endif
  @@ -650,7 +653,7 @@
   
   
   /* Line 213 of /usr/share/bison/yacc.c.  */
  -#line 654 "imcc/imcparser.c"
  +#line 657 "imcc/imcparser.c"
   
   #if ! defined (yyoverflow) || YYERROR_VERBOSE
   
  @@ -954,37 +957,37 @@
   /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
   static const unsigned short yyrline[] =
   {
  -       0,   399,   399,   403,   405,   408,   410,   411,   412,   413,
  -     414,   415,   416,   417,   420,   427,   436,   435,   441,   440,
  -     444,   446,   449,   451,   452,   453,   454,   455,   458,   458,
  -     462,   469,   472,   477,   476,   487,   489,   492,   510,   508,
  -     524,   526,   529,   531,   534,   536,   537,   540,   554,   572,
  -     577,   582,   570,   587,   589,   590,   594,   593,   598,   600,
  -     601,   602,   603,   606,   609,   611,   612,   615,   617,   618,
  -     619,   620,   621,   624,   626,   630,   632,   638,   629,   645,
  -     643,   675,   677,   680,   682,   685,   687,   690,   692,   693,
  -     696,   697,   698,   699,   700,   701,   702,   705,   711,   713,
  -     718,   720,   722,   726,   732,   734,   737,   739,   742,   745,
  -     747,   750,   753,   753,   757,   759,   762,   764,   769,   767,
  -     773,   778,   780,   782,   786,   788,   793,   791,   800,   799,
  -     808,   810,   811,   815,   817,   828,   832,   835,   836,   837,
  -     840,   842,   845,   847,   850,   856,   861,   869,   877,   879,
  -     880,   881,   882,   882,   895,   895,   897,   898,   898,   900,
  -     900,   903,   904,   905,   906,   907,   908,   909,   909,   912,
  -     915,   916,   917,   918,   921,   923,   924,   925,   928,   930,
  -     931,   932,   933,   934,   937,   948,   950,   951,   952,   953,
  -     954,   955,   956,   957,   958,   959,   960,   961,   963,   965,
  -     967,   969,   971,   973,   975,   977,   979,   981,   983,   985,
  -     987,   989,   991,   993,   995,   998,  1005,  1008,  1010,  1014,
  -    1016,  1018,  1021,  1028,  1027,  1036,  1037,  1040,  1043,  1045,
  -    1047,  1049,  1051,  1053,  1055,  1057,  1059,  1061,  1063,  1065,
  -    1069,  1077,  1078,  1079,  1084,  1085,  1086,  1089,  1090,  1095,
  -    1093,  1103,  1105,  1106,  1109,  1112,  1115,  1119,  1121,  1124,
  -    1127,  1129,  1131,  1133,  1135,  1139,  1141,  1142,  1143,  1144,
  -    1145,  1148,  1150,  1153,  1155,  1158,  1160,  1163,  1165,  1172,
  -    1174,  1177,  1179,  1182,  1184,  1187,  1189,  1192,  1194,  1197,
  -    1197,  1201,  1203,  1205,  1205,  1209,  1215,  1218,  1219,  1222,
  -    1224,  1225,  1226,  1227,  1230,  1232,  1233,  1234,  1237,  1239
  +       0,   402,   402,   406,   408,   411,   413,   414,   415,   416,
  +     417,   418,   419,   420,   423,   430,   439,   438,   444,   443,
  +     447,   449,   452,   454,   455,   456,   457,   458,   461,   461,
  +     465,   472,   475,   480,   479,   490,   492,   495,   513,   511,
  +     527,   529,   532,   534,   537,   539,   540,   543,   557,   575,
  +     580,   585,   573,   590,   592,   593,   597,   596,   601,   603,
  +     604,   605,   606,   609,   612,   614,   615,   618,   620,   621,
  +     622,   623,   624,   627,   629,   633,   635,   641,   632,   648,
  +     646,   678,   680,   683,   685,   688,   690,   693,   695,   696,
  +     699,   700,   701,   702,   703,   704,   705,   708,   714,   716,
  +     721,   723,   725,   729,   735,   737,   740,   742,   745,   748,
  +     750,   753,   756,   756,   760,   762,   765,   767,   772,   770,
  +     776,   781,   783,   785,   789,   791,   796,   794,   803,   802,
  +     811,   813,   814,   818,   820,   831,   835,   838,   839,   840,
  +     843,   845,   848,   850,   853,   859,   864,   872,   880,   882,
  +     883,   884,   885,   885,   898,   898,   900,   901,   901,   903,
  +     903,   906,   907,   908,   909,   910,   911,   912,   912,   915,
  +     918,   919,   920,   921,   924,   926,   927,   928,   931,   933,
  +     934,   935,   936,   937,   940,   951,   953,   954,   955,   956,
  +     957,   958,   959,   960,   961,   962,   963,   964,   966,   968,
  +     970,   972,   974,   976,   978,   980,   982,   984,   986,   988,
  +     990,   992,   994,   996,   998,  1001,  1008,  1011,  1013,  1017,
  +    1019,  1021,  1024,  1031,  1030,  1039,  1040,  1043,  1046,  1048,
  +    1050,  1052,  1054,  1056,  1058,  1060,  1062,  1064,  1066,  1068,
  +    1072,  1080,  1081,  1082,  1087,  1088,  1089,  1092,  1093,  1098,
  +    1096,  1106,  1108,  1109,  1112,  1115,  1118,  1122,  1124,  1127,
  +    1130,  1132,  1134,  1136,  1138,  1142,  1144,  1145,  1146,  1147,
  +    1148,  1151,  1153,  1156,  1158,  1161,  1163,  1166,  1168,  1175,
  +    1177,  1180,  1182,  1185,  1187,  1190,  1192,  1195,  1197,  1200,
  +    1200,  1204,  1206,  1208,  1208,  1212,  1218,  1221,  1222,  1225,
  +    1227,  1228,  1229,  1230,  1233,  1235,  1236,  1237,  1240,  1242
   };
   #endif
   
  @@ -2026,57 +2029,57 @@
     switch (yyn)
       {
           case 2:
  -#line 400 "imcc/imcc.y"
  +#line 403 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 5:
  -#line 409 "imcc/imcc.y"
  +#line 412 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; cur_unit = 0; }
       break;
   
     case 6:
  -#line 410 "imcc/imcc.y"
  +#line 413 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; }
       break;
   
     case 7:
  -#line 411 "imcc/imcc.y"
  +#line 414 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; }
       break;
   
     case 8:
  -#line 412 "imcc/imcc.y"
  +#line 415 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; }
       break;
   
     case 9:
  -#line 413 "imcc/imcc.y"
  +#line 416 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; imc_close_unit(interp, cur_unit); cur_unit = 0; }
       break;
   
     case 10:
  -#line 414 "imcc/imcc.y"
  +#line 417 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; imc_close_unit(interp, cur_unit); cur_unit = 0; }
       break;
   
     case 11:
  -#line 415 "imcc/imcc.y"
  +#line 418 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; imc_close_unit(interp, cur_unit); cur_unit = 0; }
       break;
   
     case 12:
  -#line 416 "imcc/imcc.y"
  +#line 419 "imcc/imcc.y"
       { yyval.i = 0;  }
       break;
   
     case 13:
  -#line 417 "imcc/imcc.y"
  +#line 420 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 14:
  -#line 422 "imcc/imcc.y"
  +#line 425 "imcc/imcc.y"
       {
               IMCC_fataly(interp, E_SyntaxError,
                   ".global not implemented yet\n");
  @@ -2085,7 +2088,7 @@
       break;
   
     case 15:
  -#line 428 "imcc/imcc.y"
  +#line 431 "imcc/imcc.y"
       {
               IMCC_fataly(interp, E_SyntaxError,
                   ".global not implemented yet\n");
  @@ -2094,63 +2097,63 @@
       break;
   
     case 16:
  -#line 436 "imcc/imcc.y"
  +#line 439 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 17:
  -#line 437 "imcc/imcc.y"
  +#line 440 "imcc/imcc.y"
       { mk_const_ident(interp, yyvsp[-2].s, yyvsp[-3].t, yyvsp[0].sr, 
1);is_def=0; }
       break;
   
     case 18:
  -#line 441 "imcc/imcc.y"
  +#line 444 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 19:
  -#line 442 "imcc/imcc.y"
  +#line 445 "imcc/imcc.y"
       { yyval.i = mk_pmc_const(interp, cur_unit, yyvsp[-3].s, yyvsp[-2].sr, 
yyvsp[0].s);is_def=0; }
       break;
   
     case 22:
  -#line 450 "imcc/imcc.y"
  +#line 453 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 23:
  -#line 451 "imcc/imcc.y"
  +#line 454 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 24:
  -#line 452 "imcc/imcc.y"
  +#line 455 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 25:
  -#line 453 "imcc/imcc.y"
  +#line 456 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 26:
  -#line 454 "imcc/imcc.y"
  +#line 457 "imcc/imcc.y"
       { yyval.i = yyvsp[0].i; }
       break;
   
     case 28:
  -#line 458 "imcc/imcc.y"
  +#line 461 "imcc/imcc.y"
       { clear_state(); }
       break;
   
     case 29:
  -#line 460 "imcc/imcc.y"
  +#line 463 "imcc/imcc.y"
       { yyval.i = INS(interp, cur_unit, yyvsp[-1].s,0,regs,nargs,keyvec,1);
                        free(yyvsp[-1].s); }
       break;
   
     case 30:
  -#line 463 "imcc/imcc.y"
  +#line 466 "imcc/imcc.y"
       {
                        yyval.i = iSUBROUTINE(cur_unit, mk_sub_label(interp, 
yyvsp[0].s));
                        yyval.i->r[1] = mk_pcc_sub(interp, 
str_dup(yyval.i->r[0]->name), 0);
  @@ -2160,17 +2163,17 @@
       break;
   
     case 31:
  -#line 469 "imcc/imcc.y"
  +#line 472 "imcc/imcc.y"
       { yyval.i = 0;}
       break;
   
     case 33:
  -#line 477 "imcc/imcc.y"
  +#line 480 "imcc/imcc.y"
       { cur_unit = imc_open_unit(interp, IMC_PASM); }
       break;
   
     case 34:
  -#line 479 "imcc/imcc.y"
  +#line 482 "imcc/imcc.y"
       { /*
                         if (optimizer_level & OPT_PASM)
                            imc_compile_unit(interp, 
IMCC_INFO(interp)->cur_unit);
  @@ -2180,7 +2183,7 @@
       break;
   
     case 37:
  -#line 494 "imcc/imcc.y"
  +#line 497 "imcc/imcc.y"
       {
                       int re_open = 0;
                       yyval.i=0;
  @@ -2196,7 +2199,7 @@
       break;
   
     case 38:
  -#line 510 "imcc/imcc.y"
  +#line 513 "imcc/imcc.y"
       {
                         Symbol * sym = new_symbol(yyvsp[0].s);
                         cur_unit = imc_open_unit(interp, IMC_CLASS);
  @@ -2206,7 +2209,7 @@
       break;
   
     case 39:
  -#line 517 "imcc/imcc.y"
  +#line 520 "imcc/imcc.y"
       {
                         /* Do nothing for now. Need to parse metadata for
                          * PBC creation. */
  @@ -2215,17 +2218,17 @@
       break;
   
     case 41:
  -#line 526 "imcc/imcc.y"
  +#line 529 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 46:
  -#line 537 "imcc/imcc.y"
  +#line 540 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 47:
  -#line 542 "imcc/imcc.y"
  +#line 545 "imcc/imcc.y"
       {
                         Symbol * sym = new_symbol(yyvsp[-1].s);
                         if(lookup_field_symbol(current_class, yyvsp[-1].s)) {
  @@ -2239,7 +2242,7 @@
       break;
   
     case 48:
  -#line 556 "imcc/imcc.y"
  +#line 559 "imcc/imcc.y"
       {
              Method * meth;
              Symbol * sym = new_symbol(yyvsp[-2].s);
  @@ -2255,7 +2258,7 @@
       break;
   
     case 49:
  -#line 572 "imcc/imcc.y"
  +#line 575 "imcc/imcc.y"
       {
              cur_unit = (pragmas.fastcall ? imc_open_unit(interp, IMC_FASTSUB)
                                             : imc_open_unit(interp, 
IMC_PCCSUB));
  @@ -2263,7 +2266,7 @@
       break;
   
     case 50:
  -#line 577 "imcc/imcc.y"
  +#line 580 "imcc/imcc.y"
       {
             Instruction *i = iSUBROUTINE(cur_unit, yyvsp[0].sr);
             i->r[1] = cur_call = mk_pcc_sub(interp, str_dup(i->r[0]->name), 0);
  @@ -2272,122 +2275,122 @@
       break;
   
     case 51:
  -#line 582 "imcc/imcc.y"
  +#line 585 "imcc/imcc.y"
       { cur_call->pcc_sub->pragma = yyvsp[-1].t; }
       break;
   
     case 52:
  -#line 584 "imcc/imcc.y"
  +#line 587 "imcc/imcc.y"
       { yyval.i = 0; cur_call = NULL; }
       break;
   
     case 53:
  -#line 588 "imcc/imcc.y"
  +#line 591 "imcc/imcc.y"
       { yyval.sr = 0; }
       break;
   
     case 54:
  -#line 589 "imcc/imcc.y"
  +#line 592 "imcc/imcc.y"
       { yyval.sr = 0; }
       break;
   
     case 55:
  -#line 590 "imcc/imcc.y"
  +#line 593 "imcc/imcc.y"
       { add_pcc_param(cur_call, yyvsp[-1].sr);}
       break;
   
     case 56:
  -#line 594 "imcc/imcc.y"
  +#line 597 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 57:
  -#line 595 "imcc/imcc.y"
  +#line 598 "imcc/imcc.y"
       { yyval.sr = mk_ident(interp, yyvsp[0].s, yyvsp[-1].t); is_def=0; }
       break;
   
     case 58:
  -#line 599 "imcc/imcc.y"
  +#line 602 "imcc/imcc.y"
       {  yyval.t = P_NONE; }
       break;
   
     case 59:
  -#line 600 "imcc/imcc.y"
  +#line 603 "imcc/imcc.y"
       { yyval.t |= yyvsp[0].t; }
       break;
   
     case 60:
  -#line 601 "imcc/imcc.y"
  +#line 604 "imcc/imcc.y"
       { yyval.t = yyvsp[-2].t; }
       break;
   
     case 61:
  -#line 602 "imcc/imcc.y"
  +#line 605 "imcc/imcc.y"
       { yyval.t |= yyvsp[0].t; }
       break;
   
     case 62:
  -#line 603 "imcc/imcc.y"
  +#line 606 "imcc/imcc.y"
       { yyval.t = P_NONE; }
       break;
   
     case 63:
  -#line 606 "imcc/imcc.y"
  +#line 609 "imcc/imcc.y"
       { yyval.t = 0; }
       break;
   
     case 64:
  -#line 610 "imcc/imcc.y"
  +#line 613 "imcc/imcc.y"
       { yyval.t = 0; }
       break;
   
     case 65:
  -#line 611 "imcc/imcc.y"
  +#line 614 "imcc/imcc.y"
       { yyval.t = 0; add_pcc_multi(cur_call, yyvsp[0].sr); }
       break;
   
     case 66:
  -#line 612 "imcc/imcc.y"
  +#line 615 "imcc/imcc.y"
       { yyval.t = 0;  add_pcc_multi(cur_call, yyvsp[0].sr);}
       break;
   
     case 67:
  -#line 616 "imcc/imcc.y"
  +#line 619 "imcc/imcc.y"
       { yyval.sr = mk_const(interp, str_dup("int"), 'S'); }
       break;
   
     case 68:
  -#line 617 "imcc/imcc.y"
  +#line 620 "imcc/imcc.y"
       { yyval.sr = mk_const(interp, str_dup("num"), 'S'); }
       break;
   
     case 69:
  -#line 618 "imcc/imcc.y"
  +#line 621 "imcc/imcc.y"
       { yyval.sr = mk_const(interp, str_dup("pmc"), 'S'); }
       break;
   
     case 70:
  -#line 619 "imcc/imcc.y"
  +#line 622 "imcc/imcc.y"
       { yyval.sr = mk_const(interp, str_dup("string"), 'S'); }
       break;
   
     case 71:
  -#line 620 "imcc/imcc.y"
  +#line 623 "imcc/imcc.y"
       { yyval.sr = mk_const(interp, str_dup("pmc"), 'S'); }
       break;
   
     case 72:
  -#line 621 "imcc/imcc.y"
  +#line 624 "imcc/imcc.y"
       { yyval.sr = mk_const(interp, yyvsp[0].s, 'S'); }
       break;
   
     case 75:
  -#line 630 "imcc/imcc.y"
  +#line 633 "imcc/imcc.y"
       { cur_unit = imc_open_unit(interp, IMC_PCCSUB); }
       break;
   
     case 76:
  -#line 632 "imcc/imcc.y"
  +#line 635 "imcc/imcc.y"
       {
               Instruction *i = iSUBROUTINE(cur_unit, mk_sub_label(interp, 
yyvsp[0].s));
               i->r[1] = cur_call = mk_pcc_sub(interp, str_dup(i->r[0]->name), 
0);
  @@ -2397,17 +2400,17 @@
       break;
   
     case 77:
  -#line 638 "imcc/imcc.y"
  +#line 641 "imcc/imcc.y"
       { cur_call->pcc_sub->pragma = yyvsp[-1].t; }
       break;
   
     case 78:
  -#line 640 "imcc/imcc.y"
  +#line 643 "imcc/imcc.y"
       { yyval.i = 0; cur_call = NULL; }
       break;
   
     case 79:
  -#line 645 "imcc/imcc.y"
  +#line 648 "imcc/imcc.y"
       {
               char name[128];
               SymReg * r, *r1;
  @@ -2433,87 +2436,87 @@
       break;
   
     case 80:
  -#line 672 "imcc/imcc.y"
  +#line 675 "imcc/imcc.y"
       { yyval.i = 0; current_call = NULL; }
       break;
   
     case 81:
  -#line 676 "imcc/imcc.y"
  +#line 679 "imcc/imcc.y"
       { yyval.i = NULL;  current_call->r[0]->pcc_sub->label = 0; }
       break;
   
     case 82:
  -#line 677 "imcc/imcc.y"
  +#line 680 "imcc/imcc.y"
       { yyval.i = NULL;  current_call->r[0]->pcc_sub->label = 1; }
       break;
   
     case 83:
  -#line 681 "imcc/imcc.y"
  +#line 684 "imcc/imcc.y"
       { yyval.i = NULL; }
       break;
   
     case 84:
  -#line 683 "imcc/imcc.y"
  +#line 686 "imcc/imcc.y"
       { yyval.i = NULL;  current_call->r[0]->pcc_sub->object = yyvsp[-1].sr; }
       break;
   
     case 85:
  -#line 686 "imcc/imcc.y"
  +#line 689 "imcc/imcc.y"
       {  yyval.t = P_PROTOTYPED ; }
       break;
   
     case 86:
  -#line 687 "imcc/imcc.y"
  +#line 690 "imcc/imcc.y"
       {  yyval.t = P_NON_PROTOTYPED ; }
       break;
   
     case 87:
  -#line 691 "imcc/imcc.y"
  +#line 694 "imcc/imcc.y"
       {  yyval.t = P_NONE; }
       break;
   
     case 88:
  -#line 692 "imcc/imcc.y"
  +#line 695 "imcc/imcc.y"
       { yyval.t |= yyvsp[0].t; }
       break;
   
     case 89:
  -#line 693 "imcc/imcc.y"
  +#line 696 "imcc/imcc.y"
       { yyval.t |= yyvsp[0].t; }
       break;
   
     case 91:
  -#line 697 "imcc/imcc.y"
  +#line 700 "imcc/imcc.y"
       {  yyval.t = P_LOAD; }
       break;
   
     case 92:
  -#line 698 "imcc/imcc.y"
  +#line 701 "imcc/imcc.y"
       {  yyval.t = P_MAIN; }
       break;
   
     case 93:
  -#line 699 "imcc/imcc.y"
  +#line 702 "imcc/imcc.y"
       {  yyval.t = P_IMMEDIATE; }
       break;
   
     case 94:
  -#line 700 "imcc/imcc.y"
  +#line 703 "imcc/imcc.y"
       {  yyval.t = P_POSTCOMP; }
       break;
   
     case 95:
  -#line 701 "imcc/imcc.y"
  +#line 704 "imcc/imcc.y"
       {  yyval.t = P_ANON; }
       break;
   
     case 96:
  -#line 702 "imcc/imcc.y"
  +#line 705 "imcc/imcc.y"
       {  yyval.t = P_METHOD | P_NONE ; }
       break;
   
     case 97:
  -#line 707 "imcc/imcc.y"
  +#line 710 "imcc/imcc.y"
       {
               add_pcc_sub(current_call->r[0], yyvsp[-3].sr);
               add_pcc_cc(current_call->r[0], yyvsp[-1].sr);
  @@ -2521,12 +2524,12 @@
       break;
   
     case 98:
  -#line 712 "imcc/imcc.y"
  +#line 715 "imcc/imcc.y"
       {  add_pcc_sub(current_call->r[0], yyvsp[-1].sr); }
       break;
   
     case 99:
  -#line 714 "imcc/imcc.y"
  +#line 717 "imcc/imcc.y"
       {
               add_pcc_sub(current_call->r[0], yyvsp[-1].sr);
               current_call->r[0]->pcc_sub->nci = 1;
  @@ -2534,131 +2537,131 @@
       break;
   
     case 100:
  -#line 719 "imcc/imcc.y"
  +#line 722 "imcc/imcc.y"
       {  add_pcc_sub(current_call->r[0], yyvsp[-1].sr); }
       break;
   
     case 101:
  -#line 721 "imcc/imcc.y"
  +#line 724 "imcc/imcc.y"
       {  add_pcc_sub(current_call->r[0], mk_const(interp, yyvsp[-1].s,'S')); }
       break;
   
     case 102:
  -#line 723 "imcc/imcc.y"
  +#line 726 "imcc/imcc.y"
       {  add_pcc_sub(current_call->r[0], yyvsp[-3].sr);
               add_pcc_cc(current_call->r[0], yyvsp[-1].sr);
            }
       break;
   
     case 103:
  -#line 727 "imcc/imcc.y"
  +#line 730 "imcc/imcc.y"
       {  add_pcc_sub(current_call->r[0], mk_const(interp, yyvsp[-3].s,'S'));
               add_pcc_cc(current_call->r[0], yyvsp[-1].sr);
            }
       break;
   
     case 104:
  -#line 733 "imcc/imcc.y"
  +#line 736 "imcc/imcc.y"
       {  yyval.sr = 0; }
       break;
   
     case 105:
  -#line 734 "imcc/imcc.y"
  +#line 737 "imcc/imcc.y"
       {  add_pcc_arg(current_call->r[0], yyvsp[-1].sr);}
       break;
   
     case 106:
  -#line 738 "imcc/imcc.y"
  +#line 741 "imcc/imcc.y"
       {  yyval.sr = yyvsp[0].sr; }
       break;
   
     case 107:
  -#line 739 "imcc/imcc.y"
  +#line 742 "imcc/imcc.y"
       { yyvsp[0].sr->type |= VT_FLATTEN; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 108:
  -#line 742 "imcc/imcc.y"
  +#line 745 "imcc/imcc.y"
       {  yyvsp[0].sr->type |= VT_FLATTEN; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 109:
  -#line 746 "imcc/imcc.y"
  +#line 749 "imcc/imcc.y"
       {  yyval.sr = 0; }
       break;
   
     case 110:
  -#line 747 "imcc/imcc.y"
  +#line 750 "imcc/imcc.y"
       {  if(yyvsp[-1].sr) add_pcc_result(current_call->r[0], yyvsp[-1].sr); }
       break;
   
     case 111:
  -#line 752 "imcc/imcc.y"
  +#line 755 "imcc/imcc.y"
       {  yyval.sr = yyvsp[0].sr; }
       break;
   
     case 112:
  -#line 753 "imcc/imcc.y"
  +#line 756 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 113:
  -#line 754 "imcc/imcc.y"
  +#line 757 "imcc/imcc.y"
       {  mk_ident(interp, yyvsp[0].s, yyvsp[-1].t); is_def=0; yyval.sr=0; }
       break;
   
     case 114:
  -#line 758 "imcc/imcc.y"
  +#line 761 "imcc/imcc.y"
       { yyval.t = 0; }
       break;
   
     case 115:
  -#line 759 "imcc/imcc.y"
  +#line 762 "imcc/imcc.y"
       { yyval.t = 1; }
       break;
   
     case 118:
  -#line 769 "imcc/imcc.y"
  +#line 772 "imcc/imcc.y"
       { begin_return_or_yield(interp, yyvsp[-1].t); }
       break;
   
     case 119:
  -#line 772 "imcc/imcc.y"
  +#line 775 "imcc/imcc.y"
       { yyval.i = 0;   IMCC_INFO(interp)->asm_state = AsmDefault; }
       break;
   
     case 120:
  -#line 773 "imcc/imcc.y"
  +#line 776 "imcc/imcc.y"
       {  IMCC_INFO(interp)->asm_state = AsmDefault; yyval.i = 0;  }
       break;
   
     case 121:
  -#line 779 "imcc/imcc.y"
  +#line 782 "imcc/imcc.y"
       {  yyval.sr = 0; }
       break;
   
     case 122:
  -#line 781 "imcc/imcc.y"
  +#line 784 "imcc/imcc.y"
       {  if(yyvsp[-1].sr) add_pcc_return(IMCC_INFO(interp)->sr_return, 
yyvsp[-1].sr); }
       break;
   
     case 123:
  -#line 783 "imcc/imcc.y"
  +#line 786 "imcc/imcc.y"
       {  if(yyvsp[-1].sr) add_pcc_return(IMCC_INFO(interp)->sr_return, 
yyvsp[-1].sr); }
       break;
   
     case 124:
  -#line 787 "imcc/imcc.y"
  +#line 790 "imcc/imcc.y"
       {  yyval.sr = yyvsp[0].sr; }
       break;
   
     case 125:
  -#line 788 "imcc/imcc.y"
  +#line 791 "imcc/imcc.y"
       {  yyvsp[0].sr->type |= VT_FLATTEN; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 126:
  -#line 793 "imcc/imcc.y"
  +#line 796 "imcc/imcc.y"
       {
               if ( IMCC_INFO(interp)->asm_state == AsmDefault)
                   begin_return_or_yield(interp, 0);
  @@ -2666,12 +2669,12 @@
       break;
   
     case 127:
  -#line 798 "imcc/imcc.y"
  +#line 801 "imcc/imcc.y"
       {  IMCC_INFO(interp)->asm_state = AsmDefault; yyval.t = 0;  }
       break;
   
     case 128:
  -#line 800 "imcc/imcc.y"
  +#line 803 "imcc/imcc.y"
       {
               if ( IMCC_INFO(interp)->asm_state == AsmDefault)
                   begin_return_or_yield(interp, 1);
  @@ -2679,69 +2682,69 @@
       break;
   
     case 129:
  -#line 805 "imcc/imcc.y"
  +#line 808 "imcc/imcc.y"
       {  IMCC_INFO(interp)->asm_state = AsmDefault; yyval.t = 0;  }
       break;
   
     case 130:
  -#line 809 "imcc/imcc.y"
  +#line 812 "imcc/imcc.y"
       { yyval.i = 0; }
       break;
   
     case 131:
  -#line 810 "imcc/imcc.y"
  +#line 813 "imcc/imcc.y"
       {  add_pcc_return(IMCC_INFO(interp)->sr_return, yyvsp[0].sr);    }
       break;
   
     case 132:
  -#line 811 "imcc/imcc.y"
  +#line 814 "imcc/imcc.y"
       {  add_pcc_return(IMCC_INFO(interp)->sr_return, yyvsp[0].sr);    }
       break;
   
     case 135:
  -#line 829 "imcc/imcc.y"
  +#line 832 "imcc/imcc.y"
       { clear_state(); }
       break;
   
     case 136:
  -#line 834 "imcc/imcc.y"
  +#line 837 "imcc/imcc.y"
       {  yyval.i = yyvsp[0].i; }
       break;
   
     case 137:
  -#line 835 "imcc/imcc.y"
  +#line 838 "imcc/imcc.y"
       {  yyval.i = 0; }
       break;
   
     case 138:
  -#line 836 "imcc/imcc.y"
  +#line 839 "imcc/imcc.y"
       {  yyval.i = 0; }
       break;
   
     case 139:
  -#line 837 "imcc/imcc.y"
  +#line 840 "imcc/imcc.y"
       {  yyval.i = 0; }
       break;
   
     case 140:
  -#line 841 "imcc/imcc.y"
  +#line 844 "imcc/imcc.y"
       {  yyval.i = NULL; }
       break;
   
     case 144:
  -#line 851 "imcc/imcc.y"
  +#line 854 "imcc/imcc.y"
       {
                        yyval.i = iLABEL(cur_unit, mk_local_label(interp, 
yyvsp[0].s));
                      }
       break;
   
     case 145:
  -#line 858 "imcc/imcc.y"
  +#line 861 "imcc/imcc.y"
       { yyval.i = yyvsp[-1].i; }
       break;
   
     case 146:
  -#line 862 "imcc/imcc.y"
  +#line 865 "imcc/imcc.y"
       {
               IdList* l = malloc(sizeof(IdList));
               l->next = NULL;
  @@ -2751,7 +2754,7 @@
       break;
   
     case 147:
  -#line 870 "imcc/imcc.y"
  +#line 873 "imcc/imcc.y"
       {  IdList* l = malloc(sizeof(IdList));
              l->id = yyvsp[0].s;
              l->next = yyvsp[-2].idlist;
  @@ -2760,22 +2763,22 @@
       break;
   
     case 150:
  -#line 880 "imcc/imcc.y"
  +#line 883 "imcc/imcc.y"
       { push_namespace(yyvsp[0].s); }
       break;
   
     case 151:
  -#line 881 "imcc/imcc.y"
  +#line 884 "imcc/imcc.y"
       { pop_namespace(yyvsp[0].s); }
       break;
   
     case 152:
  -#line 882 "imcc/imcc.y"
  +#line 885 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 153:
  -#line 883 "imcc/imcc.y"
  +#line 886 "imcc/imcc.y"
       {
           IdList* l = yyvsp[0].idlist;
            while(l) {
  @@ -2791,149 +2794,149 @@
       break;
   
     case 154:
  -#line 895 "imcc/imcc.y"
  +#line 898 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 155:
  -#line 896 "imcc/imcc.y"
  +#line 899 "imcc/imcc.y"
       { mk_const_ident(interp, yyvsp[-2].s, yyvsp[-3].t, yyvsp[0].sr, 
0);is_def=0; }
       break;
   
     case 157:
  -#line 898 "imcc/imcc.y"
  +#line 901 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 158:
  -#line 899 "imcc/imcc.y"
  +#line 902 "imcc/imcc.y"
       { mk_const_ident(interp, yyvsp[-2].s, yyvsp[-3].t, yyvsp[0].sr, 
1);is_def=0; }
       break;
   
     case 159:
  -#line 900 "imcc/imcc.y"
  +#line 903 "imcc/imcc.y"
       { is_def=1; }
       break;
   
     case 160:
  -#line 901 "imcc/imcc.y"
  +#line 904 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "restore",
                                   1, mk_ident(interp, yyvsp[0].s, 
yyvsp[-1].t));is_def=0; }
       break;
   
     case 161:
  -#line 903 "imcc/imcc.y"
  +#line 906 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "restore", 1, yyvsp[0].sr); }
       break;
   
     case 162:
  -#line 904 "imcc/imcc.y"
  +#line 907 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "restore", 1, yyvsp[0].sr); }
       break;
   
     case 163:
  -#line 905 "imcc/imcc.y"
  +#line 908 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "save", 1, yyvsp[0].sr); }
       break;
   
     case 164:
  -#line 906 "imcc/imcc.y"
  +#line 909 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "save", 1, yyvsp[0].sr); }
       break;
   
     case 165:
  -#line 907 "imcc/imcc.y"
  +#line 910 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "bsr",  1, yyvsp[0].sr); }
       break;
   
     case 166:
  -#line 908 "imcc/imcc.y"
  +#line 911 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "branch",1, yyvsp[0].sr); }
       break;
   
     case 167:
  -#line 909 "imcc/imcc.y"
  +#line 912 "imcc/imcc.y"
       { expect_pasm = 1; }
       break;
   
     case 168:
  -#line 911 "imcc/imcc.y"
  +#line 914 "imcc/imcc.y"
       { yyval.i = INS(interp, cur_unit, "newsub",0,regs,nargs,keyvec,1); }
       break;
   
     case 169:
  -#line 913 "imcc/imcc.y"
  +#line 916 "imcc/imcc.y"
       { yyval.i = INS(interp, cur_unit, yyvsp[-1].s, 0, regs, nargs, keyvec, 
1);
                                             free(yyvsp[-1].s); }
       break;
   
     case 170:
  -#line 915 "imcc/imcc.y"
  +#line 918 "imcc/imcc.y"
       {  yyval.i = 0; current_call = NULL; }
       break;
   
     case 171:
  -#line 916 "imcc/imcc.y"
  +#line 919 "imcc/imcc.y"
       {  yyval.i = 0; }
       break;
   
     case 173:
  -#line 918 "imcc/imcc.y"
  +#line 921 "imcc/imcc.y"
       { yyval.i = 0;}
       break;
   
     case 174:
  -#line 922 "imcc/imcc.y"
  +#line 925 "imcc/imcc.y"
       { yyval.t = NEWSUB; }
       break;
   
     case 175:
  -#line 923 "imcc/imcc.y"
  +#line 926 "imcc/imcc.y"
       { yyval.t = NEWCLOSURE; }
       break;
   
     case 176:
  -#line 924 "imcc/imcc.y"
  +#line 927 "imcc/imcc.y"
       { yyval.t = NEWCOR; }
       break;
   
     case 177:
  -#line 925 "imcc/imcc.y"
  +#line 928 "imcc/imcc.y"
       { yyval.t = NEWCONT; }
       break;
   
     case 178:
  -#line 929 "imcc/imcc.y"
  +#line 932 "imcc/imcc.y"
       { yyval.t = 'I'; }
       break;
   
     case 179:
  -#line 930 "imcc/imcc.y"
  +#line 933 "imcc/imcc.y"
       { yyval.t = 'N'; }
       break;
   
     case 180:
  -#line 931 "imcc/imcc.y"
  +#line 934 "imcc/imcc.y"
       { yyval.t = 'S'; }
       break;
   
     case 181:
  -#line 932 "imcc/imcc.y"
  +#line 935 "imcc/imcc.y"
       { yyval.t = 'P'; }
       break;
   
     case 182:
  -#line 933 "imcc/imcc.y"
  +#line 936 "imcc/imcc.y"
       { yyval.t = 'P'; }
       break;
   
     case 183:
  -#line 934 "imcc/imcc.y"
  +#line 937 "imcc/imcc.y"
       { yyval.t = 'P'; free(yyvsp[0].s); }
       break;
   
     case 184:
  -#line 939 "imcc/imcc.y"
  +#line 942 "imcc/imcc.y"
       {
               if (( cur_pmc_type = pmc_type(interp,
                     string_from_cstring(interp, yyvsp[0].s, 0))) <= 0) {
  @@ -2944,158 +2947,158 @@
       break;
   
     case 185:
  -#line 949 "imcc/imcc.y"
  +#line 952 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "set", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 186:
  -#line 950 "imcc/imcc.y"
  +#line 953 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "not", 2, yyvsp[-3].sr, yyvsp[0].sr);}
       break;
   
     case 187:
  -#line 951 "imcc/imcc.y"
  +#line 954 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "neg", 2, yyvsp[-3].sr, yyvsp[0].sr);}
       break;
   
     case 188:
  -#line 952 "imcc/imcc.y"
  +#line 955 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "bnot", 2, yyvsp[-3].sr, 
yyvsp[0].sr);}
       break;
   
     case 189:
  -#line 953 "imcc/imcc.y"
  +#line 956 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "add", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 190:
  -#line 954 "imcc/imcc.y"
  +#line 957 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "sub", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 191:
  -#line 955 "imcc/imcc.y"
  +#line 958 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "mul", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 192:
  -#line 956 "imcc/imcc.y"
  +#line 959 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "pow", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 193:
  -#line 957 "imcc/imcc.y"
  +#line 960 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "div", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 194:
  -#line 958 "imcc/imcc.y"
  +#line 961 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "fdiv", 3, yyvsp[-4].sr, 
yyvsp[-2].sr, yyvsp[0].sr); }
       break;
   
     case 195:
  -#line 959 "imcc/imcc.y"
  +#line 962 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "mod", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 196:
  -#line 960 "imcc/imcc.y"
  +#line 963 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "concat", 3, 
yyvsp[-4].sr,yyvsp[-2].sr,yyvsp[0].sr); }
       break;
   
     case 197:
  -#line 962 "imcc/imcc.y"
  +#line 965 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "shl", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 198:
  -#line 964 "imcc/imcc.y"
  +#line 967 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "shr", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 199:
  -#line 966 "imcc/imcc.y"
  +#line 969 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "lsr", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 200:
  -#line 968 "imcc/imcc.y"
  +#line 971 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "and", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 201:
  -#line 970 "imcc/imcc.y"
  +#line 973 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "or", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 202:
  -#line 972 "imcc/imcc.y"
  +#line 975 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "xor", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 203:
  -#line 974 "imcc/imcc.y"
  +#line 977 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "band", 3, yyvsp[-4].sr, 
yyvsp[-2].sr, yyvsp[0].sr); }
       break;
   
     case 204:
  -#line 976 "imcc/imcc.y"
  +#line 979 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "bor", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 205:
  -#line 978 "imcc/imcc.y"
  +#line 981 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "bxor", 3, yyvsp[-4].sr, 
yyvsp[-2].sr, yyvsp[0].sr); }
       break;
   
     case 206:
  -#line 980 "imcc/imcc.y"
  +#line 983 "imcc/imcc.y"
       { yyval.i = iINDEXFETCH(interp, cur_unit, yyvsp[-5].sr, yyvsp[-3].sr, 
yyvsp[-1].sr); }
       break;
   
     case 207:
  -#line 982 "imcc/imcc.y"
  +#line 985 "imcc/imcc.y"
       { yyval.i = iINDEXSET(interp, cur_unit, yyvsp[-5].sr, yyvsp[-3].sr, 
yyvsp[0].sr); }
       break;
   
     case 208:
  -#line 984 "imcc/imcc.y"
  +#line 987 "imcc/imcc.y"
       { yyval.i = iNEW(interp, cur_unit, yyvsp[-5].sr, yyvsp[-2].s, 
yyvsp[0].sr, 1); }
       break;
   
     case 209:
  -#line 986 "imcc/imcc.y"
  +#line 989 "imcc/imcc.y"
       { yyval.i = iNEW(interp, cur_unit, yyvsp[-6].sr, yyvsp[-3].s, 
yyvsp[-1].sr, 1); }
       break;
   
     case 210:
  -#line 988 "imcc/imcc.y"
  +#line 991 "imcc/imcc.y"
       { yyval.i = iNEW(interp, cur_unit, yyvsp[-3].sr, yyvsp[0].s, NULL, 1); }
       break;
   
     case 211:
  -#line 990 "imcc/imcc.y"
  +#line 993 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "new", 2, yyvsp[-3].sr, yyvsp[0].sr); 
}
       break;
   
     case 212:
  -#line 992 "imcc/imcc.y"
  +#line 995 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "new", 3, yyvsp[-5].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 213:
  -#line 994 "imcc/imcc.y"
  +#line 997 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "new", 3, yyvsp[-6].sr, yyvsp[-3].sr, 
yyvsp[-1].sr); }
       break;
   
     case 214:
  -#line 996 "imcc/imcc.y"
  +#line 999 "imcc/imcc.y"
       { yyval.i = iNEWSUB(interp, cur_unit, yyvsp[-3].sr, yyvsp[-1].t,
                                     mk_sub_address(interp, yyvsp[0].s), NULL, 
1); }
       break;
   
     case 215:
  -#line 999 "imcc/imcc.y"
  +#line 1002 "imcc/imcc.y"
       { /* XXX: Fix 4arg version of newsub PASM op
                                 * to use  instead of implicit P0
                                 */
  @@ -3105,38 +3108,38 @@
       break;
   
     case 216:
  -#line 1006 "imcc/imcc.y"
  +#line 1009 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "set_addr",
                               2, yyvsp[-3].sr, mk_label_address(interp, 
yyvsp[0].s)); }
       break;
   
     case 217:
  -#line 1009 "imcc/imcc.y"
  +#line 1012 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, 
"find_global",2,yyvsp[-3].sr,yyvsp[0].sr);}
       break;
   
     case 218:
  -#line 1011 "imcc/imcc.y"
  +#line 1014 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "store_global",2, 
yyvsp[-2].sr,yyvsp[0].sr); }
       break;
   
     case 219:
  -#line 1015 "imcc/imcc.y"
  +#line 1018 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "new", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 220:
  -#line 1017 "imcc/imcc.y"
  +#line 1020 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "new", 3, yyvsp[-4].sr, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 221:
  -#line 1019 "imcc/imcc.y"
  +#line 1022 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "new", 3, yyvsp[-5].sr, yyvsp[-3].sr, 
yyvsp[-1].sr); }
       break;
   
     case 222:
  -#line 1022 "imcc/imcc.y"
  +#line 1025 "imcc/imcc.y"
       {
               add_pcc_result(yyvsp[0].i->r[0], yyvsp[-2].sr);
               current_call = NULL;
  @@ -3145,14 +3148,14 @@
       break;
   
     case 223:
  -#line 1028 "imcc/imcc.y"
  +#line 1031 "imcc/imcc.y"
       {
               yyval.i = IMCC_create_itcall_label(interp);
            }
       break;
   
     case 224:
  -#line 1032 "imcc/imcc.y"
  +#line 1035 "imcc/imcc.y"
       {
              IMCC_itcall_sub(interp, yyvsp[-3].sr);
              current_call = NULL;
  @@ -3160,72 +3163,72 @@
       break;
   
     case 227:
  -#line 1042 "imcc/imcc.y"
  +#line 1045 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "add", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 228:
  -#line 1044 "imcc/imcc.y"
  +#line 1047 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "sub", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 229:
  -#line 1046 "imcc/imcc.y"
  +#line 1049 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "mul", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 230:
  -#line 1048 "imcc/imcc.y"
  +#line 1051 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "div", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 231:
  -#line 1050 "imcc/imcc.y"
  +#line 1053 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "mod", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 232:
  -#line 1052 "imcc/imcc.y"
  +#line 1055 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "fdiv", 2, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 233:
  -#line 1054 "imcc/imcc.y"
  +#line 1057 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "concat", 2, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 234:
  -#line 1056 "imcc/imcc.y"
  +#line 1059 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "band", 2, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 235:
  -#line 1058 "imcc/imcc.y"
  +#line 1061 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "bor", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 236:
  -#line 1060 "imcc/imcc.y"
  +#line 1063 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "bxor", 2, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 237:
  -#line 1062 "imcc/imcc.y"
  +#line 1065 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "shr", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 238:
  -#line 1064 "imcc/imcc.y"
  +#line 1067 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "shl", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 239:
  -#line 1066 "imcc/imcc.y"
  +#line 1069 "imcc/imcc.y"
       { yyval.i = MK_I(interp, cur_unit, "lsr", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 240:
  -#line 1071 "imcc/imcc.y"
  +#line 1074 "imcc/imcc.y"
       { yyval.i = func_ins(interp, cur_unit, yyvsp[-3].sr, yyvsp[-1].s,
                                      regs,nargs,keyvec,1);
                        free(yyvsp[-1].s);
  @@ -3233,17 +3236,17 @@
       break;
   
     case 241:
  -#line 1077 "imcc/imcc.y"
  +#line 1080 "imcc/imcc.y"
       { yyval.sr = mk_sub_address(interp, yyvsp[0].s); }
       break;
   
     case 242:
  -#line 1078 "imcc/imcc.y"
  +#line 1081 "imcc/imcc.y"
       { yyval.sr = mk_sub_address_fromc(interp, yyvsp[0].s); }
       break;
   
     case 243:
  -#line 1079 "imcc/imcc.y"
  +#line 1082 "imcc/imcc.y"
       { yyval.sr = yyvsp[0].sr;
                          if (yyvsp[0].sr->set != 'P')
                               IMCC_fataly(interp, E_SyntaxError,
  @@ -3252,32 +3255,32 @@
       break;
   
     case 244:
  -#line 1084 "imcc/imcc.y"
  +#line 1087 "imcc/imcc.y"
       { cur_obj = yyvsp[-2].sr; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 245:
  -#line 1085 "imcc/imcc.y"
  +#line 1088 "imcc/imcc.y"
       { cur_obj = yyvsp[-2].sr; yyval.sr = mk_const(interp, yyvsp[0].s, 'S'); }
       break;
   
     case 246:
  -#line 1086 "imcc/imcc.y"
  +#line 1089 "imcc/imcc.y"
       { cur_obj = yyvsp[-2].sr; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 247:
  -#line 1089 "imcc/imcc.y"
  +#line 1092 "imcc/imcc.y"
       { yyval.t=0; }
       break;
   
     case 248:
  -#line 1090 "imcc/imcc.y"
  +#line 1093 "imcc/imcc.y"
       { yyval.t=0; }
       break;
   
     case 249:
  -#line 1095 "imcc/imcc.y"
  +#line 1098 "imcc/imcc.y"
       {
              yyval.i = IMCC_create_itcall_label(interp);
              IMCC_itcall_sub(interp, yyvsp[0].sr);
  @@ -3285,132 +3288,132 @@
       break;
   
     case 250:
  -#line 1100 "imcc/imcc.y"
  +#line 1103 "imcc/imcc.y"
       {  yyval.i = yyvsp[-3].i; }
       break;
   
     case 251:
  -#line 1104 "imcc/imcc.y"
  +#line 1107 "imcc/imcc.y"
       {  yyval.symlist = 0; }
       break;
   
     case 252:
  -#line 1105 "imcc/imcc.y"
  +#line 1108 "imcc/imcc.y"
       {  yyval.symlist = 0; add_pcc_arg(current_call->r[0], yyvsp[0].sr); }
       break;
   
     case 253:
  -#line 1106 "imcc/imcc.y"
  +#line 1109 "imcc/imcc.y"
       {  yyval.symlist = 0; add_pcc_arg(current_call->r[0], yyvsp[0].sr); }
       break;
   
     case 254:
  -#line 1111 "imcc/imcc.y"
  +#line 1114 "imcc/imcc.y"
       { yyval.sr = yyvsp[0].sr; }
       break;
   
     case 255:
  -#line 1112 "imcc/imcc.y"
  +#line 1115 "imcc/imcc.y"
       { yyvsp[0].sr->type |= VT_FLATTEN; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 256:
  -#line 1116 "imcc/imcc.y"
  +#line 1119 "imcc/imcc.y"
       { yyvsp[0].sr->type |= VT_FLATTEN; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 257:
  -#line 1120 "imcc/imcc.y"
  +#line 1123 "imcc/imcc.y"
       { yyval.symlist = 0; add_pcc_result(current_call->r[0], yyvsp[0].sr); }
       break;
   
     case 258:
  -#line 1121 "imcc/imcc.y"
  +#line 1124 "imcc/imcc.y"
       { yyval.symlist = 0; add_pcc_result(current_call->r[0], yyvsp[0].sr); }
       break;
   
     case 259:
  -#line 1126 "imcc/imcc.y"
  +#line 1129 "imcc/imcc.y"
       {  yyval.i =MK_I(interp, cur_unit, yyvsp[-3].s, 3, yyvsp[-4].sr, 
yyvsp[-2].sr, yyvsp[0].sr); }
       break;
   
     case 260:
  -#line 1128 "imcc/imcc.y"
  +#line 1131 "imcc/imcc.y"
       {  yyval.i =MK_I(interp, cur_unit, inv_op(yyvsp[-3].s), 3, 
yyvsp[-4].sr,yyvsp[-2].sr, yyvsp[0].sr); }
       break;
   
     case 261:
  -#line 1130 "imcc/imcc.y"
  +#line 1133 "imcc/imcc.y"
       {  yyval.i = MK_I(interp, cur_unit, "if", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 262:
  -#line 1132 "imcc/imcc.y"
  +#line 1135 "imcc/imcc.y"
       {  yyval.i = MK_I(interp, cur_unit, "unless",2, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 263:
  -#line 1134 "imcc/imcc.y"
  +#line 1137 "imcc/imcc.y"
       {  yyval.i = MK_I(interp, cur_unit, "if", 2, yyvsp[-2].sr, yyvsp[0].sr); 
}
       break;
   
     case 264:
  -#line 1136 "imcc/imcc.y"
  +#line 1139 "imcc/imcc.y"
       {  yyval.i = MK_I(interp, cur_unit, "unless", 2, yyvsp[-2].sr, 
yyvsp[0].sr); }
       break;
   
     case 265:
  -#line 1140 "imcc/imcc.y"
  +#line 1143 "imcc/imcc.y"
       {  yyval.s = "eq"; }
       break;
   
     case 266:
  -#line 1141 "imcc/imcc.y"
  +#line 1144 "imcc/imcc.y"
       {  yyval.s = "ne"; }
       break;
   
     case 267:
  -#line 1142 "imcc/imcc.y"
  +#line 1145 "imcc/imcc.y"
       {  yyval.s = "gt"; }
       break;
   
     case 268:
  -#line 1143 "imcc/imcc.y"
  +#line 1146 "imcc/imcc.y"
       {  yyval.s = "ge"; }
       break;
   
     case 269:
  -#line 1144 "imcc/imcc.y"
  +#line 1147 "imcc/imcc.y"
       {  yyval.s = "lt"; }
       break;
   
     case 270:
  -#line 1145 "imcc/imcc.y"
  +#line 1148 "imcc/imcc.y"
       {  yyval.s = "le"; }
       break;
   
     case 273:
  -#line 1154 "imcc/imcc.y"
  +#line 1157 "imcc/imcc.y"
       {  yyval.sr = NULL; }
       break;
   
     case 274:
  -#line 1155 "imcc/imcc.y"
  +#line 1158 "imcc/imcc.y"
       {  yyval.sr = yyvsp[0].sr; }
       break;
   
     case 275:
  -#line 1159 "imcc/imcc.y"
  +#line 1162 "imcc/imcc.y"
       { yyval.sr = regs[0]; }
       break;
   
     case 277:
  -#line 1164 "imcc/imcc.y"
  +#line 1167 "imcc/imcc.y"
       {  regs[nargs++] = yyvsp[0].sr; }
       break;
   
     case 278:
  -#line 1166 "imcc/imcc.y"
  +#line 1169 "imcc/imcc.y"
       {
                         regs[nargs++] = yyvsp[-3].sr;
                         keyvec |= KEY_BIT(nargs);
  @@ -3419,62 +3422,62 @@
       break;
   
     case 280:
  -#line 1174 "imcc/imcc.y"
  +#line 1177 "imcc/imcc.y"
       { yyval.sr = mk_sub_address_fromc(interp, yyvsp[0].s); }
       break;
   
     case 281:
  -#line 1178 "imcc/imcc.y"
  +#line 1181 "imcc/imcc.y"
       { yyval.sr = mk_sub_address(interp, yyvsp[0].s); }
       break;
   
     case 282:
  -#line 1179 "imcc/imcc.y"
  +#line 1182 "imcc/imcc.y"
       { yyval.sr = mk_sub_address(interp, yyvsp[0].s); }
       break;
   
     case 283:
  -#line 1183 "imcc/imcc.y"
  +#line 1186 "imcc/imcc.y"
       { yyval.sr = mk_label_address(interp, yyvsp[0].s); }
       break;
   
     case 284:
  -#line 1184 "imcc/imcc.y"
  +#line 1187 "imcc/imcc.y"
       { yyval.sr = mk_label_address(interp, yyvsp[0].s); }
       break;
   
     case 289:
  -#line 1197 "imcc/imcc.y"
  +#line 1200 "imcc/imcc.y"
       {  nkeys=0; in_slice = 0; }
       break;
   
     case 290:
  -#line 1198 "imcc/imcc.y"
  +#line 1201 "imcc/imcc.y"
       {  yyval.sr = link_keys(interp, nkeys, keys); }
       break;
   
     case 291:
  -#line 1202 "imcc/imcc.y"
  +#line 1205 "imcc/imcc.y"
       {  keys[nkeys++] = yyvsp[0].sr; }
       break;
   
     case 292:
  -#line 1204 "imcc/imcc.y"
  +#line 1207 "imcc/imcc.y"
       {  keys[nkeys++] = yyvsp[0].sr; yyval.sr =  keys[0]; }
       break;
   
     case 293:
  -#line 1205 "imcc/imcc.y"
  +#line 1208 "imcc/imcc.y"
       { in_slice = 1; }
       break;
   
     case 294:
  -#line 1206 "imcc/imcc.y"
  +#line 1209 "imcc/imcc.y"
       { keys[nkeys++] = yyvsp[0].sr; yyval.sr =  keys[0]; }
       break;
   
     case 295:
  -#line 1210 "imcc/imcc.y"
  +#line 1213 "imcc/imcc.y"
       { if (in_slice) {
                            yyvsp[0].sr->type |= VT_START_SLICE | VT_END_SLICE;
                        }
  @@ -3483,73 +3486,73 @@
       break;
   
     case 296:
  -#line 1216 "imcc/imcc.y"
  +#line 1219 "imcc/imcc.y"
       { yyvsp[-2].sr->type |= VT_START_SLICE;  yyvsp[0].sr->type |= 
VT_END_SLICE;
                        keys[nkeys++] = yyvsp[-2].sr; yyval.sr = yyvsp[0].sr; }
       break;
   
     case 297:
  -#line 1218 "imcc/imcc.y"
  +#line 1221 "imcc/imcc.y"
       { yyvsp[0].sr->type |= VT_START_ZERO | VT_END_SLICE; yyval.sr = 
yyvsp[0].sr; }
       break;
   
     case 298:
  -#line 1219 "imcc/imcc.y"
  +#line 1222 "imcc/imcc.y"
       { yyvsp[-1].sr->type |= VT_START_SLICE | VT_END_INF; yyval.sr = 
yyvsp[-1].sr; }
       break;
   
     case 299:
  -#line 1223 "imcc/imcc.y"
  +#line 1226 "imcc/imcc.y"
       {  yyval.sr = mk_symreg(interp, yyvsp[0].s, 'I'); }
       break;
   
     case 300:
  -#line 1224 "imcc/imcc.y"
  +#line 1227 "imcc/imcc.y"
       {  yyval.sr = mk_symreg(interp, yyvsp[0].s, 'N'); }
       break;
   
     case 301:
  -#line 1225 "imcc/imcc.y"
  +#line 1228 "imcc/imcc.y"
       {  yyval.sr = mk_symreg(interp, yyvsp[0].s, 'S'); }
       break;
   
     case 302:
  -#line 1226 "imcc/imcc.y"
  +#line 1229 "imcc/imcc.y"
       {  yyval.sr = mk_symreg(interp, yyvsp[0].s, 'P'); }
       break;
   
     case 303:
  -#line 1227 "imcc/imcc.y"
  +#line 1230 "imcc/imcc.y"
       {  yyval.sr = mk_pasm_reg(interp, yyvsp[0].s); }
       break;
   
     case 304:
  -#line 1231 "imcc/imcc.y"
  +#line 1234 "imcc/imcc.y"
       {  yyval.sr = mk_const(interp, yyvsp[0].s, 'I'); }
       break;
   
     case 305:
  -#line 1232 "imcc/imcc.y"
  +#line 1235 "imcc/imcc.y"
       {  yyval.sr = mk_const(interp, yyvsp[0].s, 'N'); }
       break;
   
     case 306:
  -#line 1233 "imcc/imcc.y"
  +#line 1236 "imcc/imcc.y"
       {  yyval.sr = mk_const(interp, yyvsp[0].s, 'S'); }
       break;
   
     case 307:
  -#line 1234 "imcc/imcc.y"
  +#line 1237 "imcc/imcc.y"
       {  yyval.sr = mk_const(interp, yyvsp[0].s, 'U'); }
       break;
   
     case 308:
  -#line 1238 "imcc/imcc.y"
  +#line 1241 "imcc/imcc.y"
       {  yyval.sr = mk_symreg(interp, yyvsp[0].s, 'S'); }
       break;
   
     case 309:
  -#line 1239 "imcc/imcc.y"
  +#line 1242 "imcc/imcc.y"
       {  yyval.sr = mk_const(interp, yyvsp[0].s, 'S'); }
       break;
   
  @@ -3557,7 +3560,7 @@
       }
   
   /* Line 1016 of /usr/share/bison/yacc.c.  */
  -#line 3561 "imcc/imcparser.c"
  +#line 3564 "imcc/imcparser.c"
   
     yyvsp -= yylen;
     yyssp -= yylen;
  @@ -3776,7 +3779,7 @@
   }
   
   
  -#line 1244 "imcc/imcc.y"
  +#line 1247 "imcc/imcc.y"
   
   
   
  
  
  
  1.95      +1 -1      parrot/imcc/imcparser.h
  
  Index: imcparser.h
  ===================================================================
  RCS file: /cvs/public/parrot/imcc/imcparser.h,v
  retrieving revision 1.94
  retrieving revision 1.95
  diff -u -r1.94 -r1.95
  --- imcparser.h       24 Mar 2005 16:14:32 -0000      1.94
  +++ imcparser.h       27 Mar 2005 13:15:05 -0000      1.95
  @@ -267,7 +267,7 @@
   
   
   #ifndef YYSTYPE
  -#line 318 "imcc/imcc.y"
  +#line 321 "imcc/imcc.y"
   typedef union {
       IdList * idlist;
       int t;
  
  
  

Reply via email to