Quick Search:

Mode

Context

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

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.141
 
1.142
 
MAIN:ragge:20050629193316
 
reader.c
_>773773                 gencode(p->n_right, INTAREG|INTBREG);
 774774                 if ((p->n_su & RMASK) == ROREG)
 775775                         canon(p);
<>776 -                else if (xnewreg && (p->n_su & RMASK) == RREG) {
 777 -                        if (q->needs & NSPECIAL) {
 778 -                                int left, right, res, mask;
 779 -
 780 -                                nspecial(q, &left, &right, &res, &mask);
 781 -                                if (right && ffs(right)-1 != p->n_right->n_rall) {
 782 -                                        rmove(p->n_right->n_rall,
 783 -                                            ffs(right)-1, p->n_type);
 784 -                                        p->n_right->n_rall = ffs(right)-1;
 785 -                                        p->n_right->n_rval = ffs(right)-1;
 786 -                                }
 787 -                        } else if ((q->rewrite & RRIGHT) &&
 788 -                            p->n_right->n_rall != p->n_rall) {
 789 -                                rmove(p->n_right->n_rall, p->n_rall, p->n_type);
 790 -                                p->n_right->n_rall = p->n_rall;
 791 -                                p->n_right->n_rval = p->n_rall;
 792 -                        }
 793 -                }
794776         }
 795777         if (p->n_su & LMASK) {
 796778                 gencode(p->n_left, INTAREG|INTBREG);
<>797 -                if ((p->n_su & LMASK) == LOREG) {
  779+                if ((p->n_su & LMASK) == LOREG)
798780                         canon(p);
<>799 -                } else if (xnewreg && (p->n_su & LMASK) == LREG) {
 800 -                        if (q->needs & NSPECIAL) {
 801 -                                int left, right, res, mask;
 802 -
 803 -                                nspecial(q, &left, &right, &res, &mask);
 804 -                                if (left && ffs(left)-1 != p->n_left->n_rall) {
 805 -                                        rmove(p->n_left->n_rall, ffs(left)-1,
 806 -                                            p->n_type);
 807 -                                        p->n_left->n_rall = ffs(left)-1;
 808 -                                        p->n_left->n_rval = ffs(left)-1;
 809 -                                }
 810 -                        } else if ((q->rewrite & RLEFT) &&
 811 -                            p->n_left->n_rall != p->n_rall) {
 812 -                                rmove(p->n_left->n_rall, p->n_rall, p->n_type);
 813 -                                p->n_left->n_rall = p->n_rall;
 814 -                                p->n_left->n_rval = p->n_rall;
 815 -                        }
 816 -                }
817781         }
 818782         if ((p->n_su & RMASK) && !(p->n_su & DORIGHT)) {
 819783                 gencode(p->n_right, INTAREG|INTBREG);
 820784                 if ((p->n_su & RMASK) == ROREG)
 821785                         canon(p);
<>822 -                else if (xnewreg && (p->n_su & RMASK) == RREG) {
 823 -                        if (q->needs & NSPECIAL) {
 824 -                                int left, right, res, mask;
  786+        }
  787+#define F(x) (ffs(x)-1)
  788+        if (xnewreg && (p->n_su & RMASK) == RREG) {
  789+                if (q->needs & NSPECIAL) {
  790+                        int left, right, res, mask;
825791 
<>826 -                                nspecial(q, &left, &right, &res, &mask);
 827 -                                if (right && ffs(right)-1 != p->n_right->n_rall) {
 828 -                                        rmove(p->n_right->n_rall,
 829 -                                            ffs(right)-1, p->n_type);
 830 -                                        p->n_right->n_rall = ffs(right)-1;
 831 -                                        p->n_right->n_rval = ffs(right)-1;
 832 -                                }
 833 -                        } else if ((q->rewrite & RRIGHT) &&
 834 -                            p->n_right->n_rall != p->n_rall) {
 835 -                                rmove(p->n_right->n_rall, p->n_rall, p->n_type);
 836 -                                p->n_right->n_rall = p->n_rall;
 837 -                                p->n_right->n_rval = p->n_rall;
  792+                        nspecial(q, &left, &right, &res, &mask);
  793+                        if (right && F(right) != p->n_right->n_rall) {
  794+                                rmove(p->n_right->n_rall, F(right), p->n_type);
  795+                                p->n_right->n_rall = F(right);
  796+                                p->n_right->n_rval = F(right);
838797                         }
<> 798+                } else if ((q->rewrite & RRIGHT) &&
  799+                    p->n_right->n_rall != p->n_rall) {
  800+                        rmove(p->n_right->n_rall, p->n_rall, p->n_type);
  801+                        p->n_right->n_rall = p->n_rall;
  802+                        p->n_right->n_rval = p->n_rall;
839803                 }
 840804         }
<> 805+        if (xnewreg && (p->n_su & LMASK) == LREG) {
  806+                if (q->needs & NSPECIAL) {
  807+                        int left, right, res, mask;
  808+
  809+                        nspecial(q, &left, &right, &res, &mask);
  810+                        if (left && F(left) != p->n_left->n_rall) {
  811+                                rmove(p->n_left->n_rall, F(left), p->n_type);
  812+                                p->n_left->n_rall = F(left);
  813+                                p->n_left->n_rval = F(left);
  814+                        }
  815+                } else if ((q->rewrite & RLEFT) &&
  816+                    p->n_left->n_rall != p->n_rall) {
  817+                        rmove(p->n_left->n_rall, p->n_rall, p->n_type);
  818+                        p->n_left->n_rall = p->n_rall;
  819+                        p->n_left->n_rval = p->n_rall;
  820+                }
  821+        }
  822+        
841823         expand(p, cookie, q->cstring);
 842824         if (xnewreg) {
 843825                 if (callop(p->n_op) && p->n_rall != RETREG)
     
 !
849831                                 rmove(ffs(res)-1, p->n_rall, p->n_type);
 850832                 }
 851833         }
<>852 -
<_853834         rewrite(p, q->rewrite);
 854835 }
 855836 
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-11-01 09:27 +0100