cvsuser     05/02/27 08:13:27

  Modified:    .        ABI_CHANGES
               imcc     pcc.c
  Log:
  check_tail_call
  
     1.  Removes the arbitrary check_tail_call() restriction to the final
  position.
  
     2.  Fixes a bug in testing for the implicit 'null I0; null I3;
  returncc' sequence -- it's 'returncc', not 'invoke'.  Those instructions
  are still emitted after the 'tailcall'; I wasn't sure how to remove them
  without leaking memory.
  
     3.  Additionally, fixes a subtle typo in ABI_CHANGES (look closely!)
  
  Courtesy of Bob Rogers <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  1.3       +1 -1      parrot/ABI_CHANGES
  
  Index: ABI_CHANGES
  ===================================================================
  RCS file: /cvs/public/parrot/ABI_CHANGES,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ABI_CHANGES       27 Nov 2004 13:19:21 -0000      1.2
  +++ ABI_CHANGES       27 Feb 2005 16:13:26 -0000      1.3
  @@ -41,4 +41,4 @@
   2004.11.15 leo
   
   The variables P0, P1, P2, S0 aren't visible in the called subroutine
  -anymore.  See docs/ppds/pdd03_calling_conventions.pod.
  +anymore.  See docs/pdds/pdd03_calling_conventions.pod.
  
  
  
  1.87      +3 -3      parrot/imcc/pcc.c
  
  Index: pcc.c
  ===================================================================
  RCS file: /cvs/public/parrot/imcc/pcc.c,v
  retrieving revision 1.86
  retrieving revision 1.87
  diff -u -r1.86 -r1.87
  --- pcc.c     15 Jan 2005 21:04:58 -0000      1.86
  +++ pcc.c     27 Feb 2005 16:13:27 -0000      1.87
  @@ -580,8 +580,8 @@
       if (!tmp)
           return 0;
       if (tmp->opnum == -1 && (tmp->type & ITPCCSUB) &&
  -            (tmp->type & ITLABEL) && !tmp->next) {
  -                ret_ins = tmp;
  +            (tmp->type & ITLABEL)) {
  +        ret_ins = tmp;
           IMCC_debug(interp, DEBUG_OPT1, "check tail call %I \n", ins);
       }
       /*
  @@ -605,7 +605,7 @@
           }
           else
               return 0;
  -        if (strcmp(tmp->op, "invoke"))
  +        if (strcmp(tmp->op, "returncc"))
               return 0;
           IMCC_debug(interp, DEBUG_OPT1, "check tail call %I \n", tmp);
           nrets = 0;
  
  
  

Reply via email to