Quick Search:

Mode

Context

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

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.24
 
1.25
 
MAIN:ragge:20101111205512
 
local.c
_>211211 }
 212212 #endif
 213213 
<> 214+static NODE *
  215+stkblk(TWORD t)
  216+{
  217+        int al, tsz, off, noff;
  218+        struct attr *bt;
  219+        NODE *p;
  220+
  221+        bt = MKAP(BTYPE(t));
  222+        al = talign(t, bt);
  223+        tsz = (int)tsize(t, 0, bt);
  224+
  225+        noff = autooff + tsz;
  226+        SETOFF(noff, al);
  227+        off = -noff;
  228+        autooff = noff;
  229+
  230+        p = block(REG, NIL, NIL, INCREF(t), 0, bt);
  231+        p->n_lval = 0;
  232+        p->n_rval = FPREG;
  233+        p = buildtree(UMUL, buildtree(PLUS, p, bcon(off/SZLDOUBLE)), NIL);
  234+        return p;
  235+}
  236+
  237+
214238 /* clocal() is called to do local transformations on
 215239  * an expression tree preparitory to its being
 216240  * written out in intermediate code.
     
 !
332356                 if (p->n_type == VOID)
 333357                         break; /* nothing to do */
 334358                 /* have the call at left of a COMOP to avoid arg trashing */
<>335 -                r = tempnode(0, p->n_type, p->n_df, p->n_ap);
 336 -                m = regno(r);
 337 -                r = buildtree(ASSIGN, r, p);
 338 -                p = tempnode(m, r->n_type, r->n_df, r->n_ap);
 339 -                p = buildtree(COMOP, r, p);
  359+                if (p->n_type == LDOUBLE) {
  360+                        r = stkblk(LDOUBLE);
  361+                } else
  362+                        r = tempnode(0, p->n_type, p->n_df, p->n_ap);
  363+                l = ccopy(r);
  364+                p = buildtree(COMOP, buildtree(ASSIGN, r, p), l);
340365                 break;
 341366 
 342367         case CBRANCH:
     
 !
757782         if (idebug)
 758783                 printf("infld off %lld, fsz %d, val %lld inbits %d\n",
 759784                     off, fsz, val, inbits);
<>760 -        val &= ((CONSZ)1 << fsz)-1;
  785+        val &= (((((CONSZ)1 << (fsz-1))-1)<<1)|1);
<_761786         while (fsz + inbits >= SZCHAR) {
 762787                 inval |= (val << inbits);
 763788                 printf("\t.byte %d\n", inval & 255);
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-09-02 01:32 +0200