Quick Search:

Mode

Context

Displaying 3 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.2
 
1.3
 
MAIN:ragge:20071029141631
 
local2.c
_>4040 static void prtype(NODE *n);
 4141 static void acon(NODE *p);
 4242 
<>43 -# define BITMASK(n) ((1L<<n)-1)
 44 -
4543 /*
 4644  * Print out the prolog assembler.
 4745  * addto and regoff are already calculated.
     
 !
283281                 }
 284282 
 285283         case 'C':       /* num words pushed on arg stack */
<>286 -                {
 287 -                        int pr = p->n_qual;
  284+                if (p->n_op == STCALL || p->n_op == USTCALL)
  285+                        p->n_qual++;
  286+                printf("$%d", p->n_qual);
  287+                break;
288288 
<>289 -                        if (p->n_op == STCALL || p->n_op == USTCALL)
 290 -                                pr += 4;
 291 -                        printf("$%d", pr);
 292 -                        break;
 293 -                }
 294 -
295289         case 'D':       /* INCR and DECR */
 296290                 zzzcode(p->n_left, 'A');
 297291                 printf("\n      ");
     
 !
332326                 return;
 333327                 }
 334328 
<> 329+        case 'J': /* jump or ret? */
  330+                {
  331+                        extern struct interpass_prolog *epp;
  332+                        struct interpass *ip =
  333+                            DLIST_PREV((struct interpass *)epp, qelem);
  334+                        if (ip->type != IP_DEFLAB ||
  335+                            ip->ip_lbl != getlr(p, 'L')->n_lval)
  336+                                expand(p, FOREFF, "jbr  LL");
  337+                        else
  338+                                printf("ret");
  339+                }
  340+                break;
  341+
335342         case 'L':       /* type of left operand */
 336343         case 'R':       /* type of right operand */
 337344                 {
     
 !
920927 }
 921928 
 922929 /*
<>923 - * Return argument size in bytes.
  930+ * Return argument size in regs.
924931  */
 925932 static int
 926933 argsiz(NODE *p)
 927934 {
 928935         TWORD t = p->n_type;
 929936 
 930937         if (t == STRTY || t == UNIONTY)
<>931 -                return p->n_stsize;
 932 -        return szty(t) * (SZINT/SZCHAR);
  938+                return p->n_stsize/(SZINT/SZCHAR);
  939+        return szty(t);
933940 }
 934941 
 935942 /*
     
 !
990997 int
 991998 special(NODE *p, int shape)
 992999 {
<>993 -        switch (shape) {
 994 -        case SNCON:
 995 -                if (p->n_name[0] != '\0')
 996 -                        return SRDIR;
 997 -                break;
 998 -        default:
 999 -                comperr("special");
 1000 -        }
<_10011000         return SRNOPE;
 10021001 }
FishEye: Open Source License registered to PCC.
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-12-27 16:47 +0100