Quick Search:

Mode

Context

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

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.269
 
1.270
 
MAIN:ragge:20110503112020
 
reader.c
_>706706 
 707707 /*
 708708  * Do a register-register move if necessary.
<> 709+ * Called if a RLEFT or RRIGHT is found.
709710  */
 710711 static void
 711712 ckmove(NODE *p, NODE *q)
 712713 {
<> 714+        struct optab *t = &table[TBLIDX(p->n_su)];
  715+        int reg;
  716+
713717         if (q->n_op != REG || p->n_reg == -1)
 714718                 return; /* no register */
<>715 -        if (DECRA(p->n_reg, 0) == DECRA(q->n_reg, 0))
  719+
  720+        /* do we have a need for special reg? */
  721+        if (t->needs & NSPECIAL)
  722+                reg = rspecial(t, p->n_left == q ? NLEFT : NRIGHT);
  723+        else
  724+                reg = DECRA(p->n_reg, 0);
  725+
  726+        if (reg < 0 || reg == DECRA(q->n_reg, 0))
716727                 return; /* no move necessary */
<> 728+
717729         CDEBUG(("rmove: node %p, %s -> %s\n", p, rnames[DECRA(q->n_reg, 0)],
<>718 -            rnames[DECRA(p->n_reg, 0)]));
 719 -        rmove(DECRA(q->n_reg, 0), DECRA(p->n_reg, 0), p->n_type);
 720 -        q->n_reg = q->n_rval = DECRA(p->n_reg, 0);
  730+            rnames[reg]));
  731+        rmove(DECRA(q->n_reg, 0), reg, p->n_type);
  732+        q->n_reg = q->n_rval = reg;
<_721733 }
 722734 
 723735 /*
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-25 04:38 +0100