Quick Search:

Mode

Context

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

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.207
 
1.208
 
MAIN:gmcgarry:20071115233504
 
reader.c
_>255255 void
 256256 emit(struct interpass *ip)
 257257 {
<>258 -        NODE *p;
  258+        NODE *p, *r;
  259+        struct optab *op;
259260         int o;
 260261 
 261262         switch (ip->type) {
     
 !
270271                 switch (p->n_op) {
 271272                 case CBRANCH:
 272273                         /* Only emit branch insn if RESCC */
<>273 -                        if (table[TBLIDX(p->n_left->n_su)].rewrite & RESCC) {
  274+                        /* careful when an OPLOG has been elided */
  275+                        if (p->n_left->n_su == 0 && p->n_left->n_left != NULL) {
  276+                                op = &table[TBLIDX(p->n_left->n_left->n_su)];
  277+                                r = p->n_left;
  278+                        } else {
  279+                                op = &table[TBLIDX(p->n_left->n_su)];
  280+                                r = p;
  281+                        }
  282+                        if (op->rewrite & RESCC) {
274283                                 o = p->n_left->n_op;
<>275 -                                gencode(p, FORCC);
  284+                                gencode(r, FORCC);
276285                                 cbgen(o, p->n_right->n_lval);
<>277 -                        } else
 278 -                                gencode(p, FORCC);
  286+                        } else {
  287+                                gencode(r, FORCC);
  288+                        }
279289                         break;
 280290                 case FORCE:
 281291                         gencode(p->n_left, INREGS);
     
 !
390400         case ULT:
 391401         case UGE:
 392402         case UGT:
<> 403+                p1 = p->n_left;
  404+                p2 = p->n_right;
  405+                if (p2->n_op == ICON && p2->n_lval == 0) {
  406+                        if (findops(p1, FORCC) == 0)
  407+                                break;
  408+                }
393409                 rv = relops(p);
 394410                 break;
 395411 
     
 !
449465                 p1 = p->n_left;
 450466                 p2 = p->n_right;
 451467                 p1->n_label = p2->n_lval;
<>452 -                o = p1->n_op;
453468                 geninsn(p1, FORCC);
 454469                 p->n_su = 0;
 455470                 break;
     
 !
913928                 int i;
 914929                 if( (r=base(ql))>=0 && (i=offset(qr, tlen(p)))>=0) {
 915930                         makeor2(p, ql, r, i);
<>916 -                        return;
  931+                        return 1;
917932                 } else if((r=base(qr))>=0 && (i=offset(ql, tlen(p)))>=0) {
 918933                         makeor2(p, qr, r, i);
<>919 -                        return;
  934+                        return 1;
<_920935                 }
 921936         }
 922937 
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-23 14:24 +0200