Quick Search:

Mode

Context

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

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.107
 
1.108
 
MAIN:ragge:20090813163456
 
local.c
_>359359 {
 360360 
 361361         register struct symtab *q;
<>362 -        register NODE *r, *l;
  362+        register NODE *r, *l, *s, *n;
363363         register int o;
 364364         register int m;
 365365         TWORD t;
     
 !
689689                 p->n_right = block(SCONV, p->n_right, NIL,
 690690                     CHAR, 0, MKSUE(CHAR));
 691691                 break;
<> 692+#if defined(os_openbsd)
  693+                /* If not using pcc struct return */
  694+        case STASG:
  695+                r = p->n_right;
  696+                if (r->n_op != STCALL && r->n_op != USTCALL)
  697+                        break;
  698+                m = tsize(BTYPE(r->n_type), r->n_df, r->n_sue);
  699+                if (m == SZCHAR)
  700+                        m = CHAR;
  701+                else if (m == SZSHORT)
  702+                        m = SHORT;
  703+                else if (m == SZINT)
  704+                        m = INT;
  705+                else if (m == SZLONGLONG)
  706+                        m = LONGLONG;
  707+                else
  708+                        break;
  709+
  710+                l = buildtree(ADDROF, p->n_left, NIL);
  711+                nfree(p);
  712+
  713+                r->n_op -= (STCALL-CALL);
  714+                r->n_type = m;
  715+
  716+                /* r = long, l = &struct */
  717+
  718+                n = tempnode(0, m, r->n_df, r->n_sue);
  719+                r = buildtree(ASSIGN, ccopy(n), r);
  720+
  721+                s = tempnode(0, l->n_type, l->n_df, l->n_sue);
  722+                l = buildtree(ASSIGN, ccopy(s), l);
  723+
  724+                p = buildtree(COMOP, r, l);
  725+
  726+                l = buildtree(CAST,
  727+                    block(NAME, NIL, NIL, m|PTR, 0, MKSUE(m)), ccopy(s));
  728+                r = l->n_right;
  729+                nfree(l->n_left);
  730+                nfree(l);
  731+
  732+                r = buildtree(ASSIGN, buildtree(UMUL, r, NIL), n);
  733+                p = buildtree(COMOP, p, r);
  734+                p = buildtree(COMOP, p, s);
  735+                break;
  736+#endif
<_692737         }
 693738 #ifdef PCC_DEBUG
 694739         if (xdebug) {
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-19 13:51 +0200