cvsuser     03/03/06 00:58:51

  Modified:    languages/imcc TestCompiler.pm cfg.h imc.h optimizer.c
  Log:
  #21476 + more fixes WRT optimizer
  
  Revision  Changes    Path
  1.6       +5 -4      parrot/languages/imcc/TestCompiler.pm
  
  Index: TestCompiler.pm
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/TestCompiler.pm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -w -r1.5 -r1.6
  --- TestCompiler.pm   20 Feb 2003 08:04:13 -0000      1.5
  +++ TestCompiler.pm   6 Mar 2003 08:58:50 -0000       1.6
  @@ -77,19 +77,20 @@
        my $out_f = per_test('.out',$count);
   
        my $TEST_PROG_ARGS = $ENV{TEST_PROG_ARGS} || '';
  +     my $IMCC = $ENV{IMCC} || './imcc';
   
        if ($gen_pasm) {
            $TEST_PROG_ARGS =~ s/-O.//;
  -         system("./imcc ${TEST_PROG_ARGS} $opt -o $out_f $by_f");
  +         system("$IMCC ${TEST_PROG_ARGS} $opt -o $out_f $by_f");
        }
        elsif ($TEST_PROG_ARGS =~ /-c/) {
            my $pbc_f = per_test('.pbc',$count);
            $TEST_PROG_ARGS =~ s/-c//;
  -         system("./imcc ${TEST_PROG_ARGS} -o $pbc_f $by_f");
  -         system("./imcc -r ${TEST_PROG_ARGS} $pbc_f >$out_f");
  +         system("$IMCC ${TEST_PROG_ARGS} -o $pbc_f $by_f");
  +         system("$IMCC -r ${TEST_PROG_ARGS} $pbc_f >$out_f");
        }
        else {
  -         system("./imcc -r ${TEST_PROG_ARGS} $by_f >$out_f");
  +         system("$IMCC -r ${TEST_PROG_ARGS} $by_f >$out_f");
        }
   
        my $meth = $Test_Map{$func};
  
  
  
  1.9       +1 -1      parrot/languages/imcc/cfg.h
  
  Index: cfg.h
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/cfg.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -w -r1.8 -r1.9
  --- cfg.h     5 Mar 2003 16:08:50 -0000       1.8
  +++ cfg.h     6 Mar 2003 08:58:50 -0000       1.9
  @@ -22,7 +22,7 @@
       int flag;
   } Basic_block;
   
  -enum {
  +EXTERN enum {
        BB_IS_SUB = 1 << 0
   } block_enum_flags;
   
  
  
  
  1.32      +1 -1      parrot/languages/imcc/imc.h
  
  Index: imc.h
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/imc.h,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -w -r1.31 -r1.32
  --- imc.h     5 Mar 2003 16:08:50 -0000       1.31
  +++ imc.h     6 Mar 2003 08:58:50 -0000       1.32
  @@ -85,7 +85,7 @@
   EXTERN int allocated;
   
   
  -enum {
  +EXTERN enum {
        OPT_NONE,
        OPT_PRE,
        OPT_CFG =       0x002,
  
  
  
  1.24      +17 -5     parrot/languages/imcc/optimizer.c
  
  Index: optimizer.c
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/optimizer.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -w -r1.23 -r1.24
  --- optimizer.c       3 Mar 2003 09:11:02 -0000       1.23
  +++ optimizer.c       6 Mar 2003 08:58:50 -0000       1.24
  @@ -209,6 +209,7 @@
                   tmp = INS(interp, ins->op, "", ins->r, 2, 0, 0);
                   debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
                   subst_ins(ins, tmp, 1);
  +                ins = tmp;
                   found = 1;
                   break;
               }
  @@ -236,6 +237,7 @@
               tmp = INS(interp, "set", "", ins->r, 2, 0, 0);
               debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
               subst_ins(ins, tmp, 1);
  +            ins = tmp;
               continue;
           }
           /*
  @@ -254,7 +256,8 @@
               debug(DEBUG_OPT1, "opt1 %s => ", ins_string(ins));
               if (ins->opsize == 3) {
                   /* mul Ix, 1 */
  -                delete_ins(ins, 1);
  +                ins = delete_ins(ins, 1);
  +                ins = ins->prev ? ins->prev : instructions;
                   debug(DEBUG_OPT1, "deleted\n");
                   continue;
               }
  @@ -268,6 +271,7 @@
               tmp = INS(interp, "set", "", ins->r, 2, 0, 0);
               debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
               subst_ins(ins, tmp, 1);
  +            ins = tmp;
               continue;
           }
           /*
  @@ -319,6 +323,7 @@
                   tmp = INS(interp, ins->op, "", ins->r, 3, 0, 0);
                   debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
                   subst_ins(ins, tmp, 1);
  +                ins = tmp;
               }
           }
       }
  @@ -357,6 +362,7 @@
                   tmp = INS(interp, ins->op, "", ins->r, 2, 0, 0);
                   debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
                   subst_ins(ins, tmp, 1);
  +                ins = tmp;
               }
           }
       }
  @@ -505,6 +511,7 @@
           tmp = INS(interp, "set", "", ins->r, 2, 0, 0);
           debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
           subst_ins(ins, tmp, 1);
  +        ins = tmp;
       }
       mem_sys_memcopy(&interp->ctx, ctx, sizeof(struct Parrot_Context));
       mem_sys_free(ctx);
  @@ -545,10 +552,12 @@
                                               1, 0, 0);
                                       debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
                                       subst_ins(ins, tmp, 1);
  +                                    ins = tmp;
                                   }
                                   else {
                                       debug(DEBUG_OPT1, "deleted\n");
  -                                    delete_ins(ins, 1);
  +                                    ins = delete_ins(ins, 1);
  +                                    ins = ins->prev ? ins->prev : instructions;
                                   }
                                   break;
                               case 'N':
  @@ -683,10 +692,12 @@
                                               1, 0, 0);
                                       debug(DEBUG_OPT1, "%s\n", ins_string(tmp));
                                       subst_ins(ins, tmp, 1);
  +                                    ins = tmp;
                                   }
                                   else {
                                       debug(DEBUG_OPT1, "deleted\n");
  -                                    delete_ins(ins, 1);
  +                                    ins = delete_ins(ins, 1);
  +                                    ins = ins->prev ? ins->prev : instructions;
                                   }
                                   break;
                               case 'N':
  @@ -801,7 +812,7 @@
                   ostat.deleted_labels++;
                   debug(DEBUG_OPT1, "block %d label %s deleted\n", i, lab->name);
                   ostat.deleted_ins++;
  -                delete_ins(ins, 1);
  +                ins = delete_ins(ins, 1);
                   changed = 1;
               }
   
  @@ -882,7 +893,8 @@
               continue;
           if (r->use_count == 1 && r->lhs_use_count == 1) {
               debug(DEBUG_OPT2, "used once �%s� deleted\n", ins_string(ins));
  -            delete_ins(ins, 1);
  +            ins = delete_ins(ins, 1);
  +            ins = ins->prev ? ins->prev : instructions;
               ostat.deleted_ins++;
               ostat.used_once++;
               opt++;
  
  
  

Reply via email to