Quick Search:

Mode

Context

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

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.229
 
1.230
 
MAIN:ragge:20080629134510
 
reader.c
_>12201220         struct interpass *ip = arg, *ip2;
 12211221         NODE *r = ip->ip_node->n_left;
 12221222         NODE *q;
<>1223 -        char *c;
12241223         int cnt;
 12251224 
 12261225         if (p->n_name[0] < '0' || p->n_name[0] > '9')
 12271226                 return; /* not numeric */
 12281227         if ((q = listarg(r, p->n_name[0] - '0', &cnt)) == NIL)
 12291228                 comperr("bad delnums");
<> 1229+
12301230         /* move original node to dest */
<>1231 -        ip2 = ipnode(mkbinode(ASSIGN, tcopy(q->n_left), p->n_left,
 1232 -            p->n_left->n_type));
  1231+        r = mkbinode(ASSIGN, tcopy(q->n_left), p->n_left, p->n_left->n_type);
  1232+
  1233+        /* must be careful with types */
  1234+        r->n_left->n_type = p->n_left->n_type; /* XXX LTYPE? */
  1235+
  1236+        ip2 = ipnode(r);
12331237         DLIST_INSERT_BEFORE(ip, ip2, qelem);
 12341238 
 12351239         p->n_left = tcopy(q->n_left);
<>1236 -        c = q->n_name;
 1237 -        if (*c == '=')
 1238 -                c++;
 1239 -        p->n_name = c; /* Replace node type */
  1240+        p->n_name = tmpstrdup(q->n_name);
  1241+        if (*p->n_name == '=')
  1242+                p->n_name++;
12401243 }
 12411244 
 12421245 /*
     
 !
12501253         TWORD t = p->n_left->n_type;
 12511254         NODE *q, *r;
 12521255         int cw, ooff;
<> 1256+        char *c;
12531257 
<> 1258+again:
12541259         if (myxasm(ip, p))
 12551260                 return/* handled by target-specific code */
 12561261 
     
 !
13001305                 }
 13011306                 break;
 13021307 
<> 1308+        case 'i': /* immediate constant */
13031309         case 'n': /* numeric constant */
<>1304 -                if (p->n_left->n_op != ICON)
  1310+                if (p->n_left->n_op == ICON)
  1311+                        break;
  1312+                p->n_name = tmpstrdup(p->n_name);
  1313+                for (c = p->n_name; *c != 'i' && *c != 'n'; c++)
  1314+                        ;
  1315+                if (c[1]) {
  1316+                        c[0] = c[1], c[1] = 0;
  1317+                        goto again;
  1318+                } else
13051319                         uerror("constant required");
 13061320                 break;
 13071321 
     
 !
13541368                             (*s >= 'A' && *s <= 'Z') ||
 13551369                             (*s >= '0' && *s <= '9')) {
 13561370                                 cw |= *s;
<>1357 -                                break;
  1371+                                return cw;
<_13581372                         }
 13591373                         uerror("bad xasm constraint %c", *s);
 13601374                 }
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-08-22 19:39 +0200