- nodreg(&nod3, n, D_CX);
- if(reg[D_CX]) {
- gins(APUSHL, &nod3, Z);
- c |= 4;
- reg[D_CX]++;
+
+ t = n->type;
+ if(t != types[TIND]){
+ n->type = types[TIND];
+ sugen(n, nn, w);
+ n->type = t;
+ return;
+ }
+ t = nn->type;
+ if(t != types[TIND]){
+ nn->type = types[TIND];
+ sugen(n, nn, w);
+ nn->type = t;
+ return;
+ }
+
+ if(nodreg(&nod1, n, D_SI)) {
+ regsalloc(&nod4, &nod1);
+ gmove(&nod1, &nod4);
+ v = reg[D_SI];
+ reg[D_SI] = 0;
+ sugen(n, nn, w);
+ reg[D_SI] = v;
+ gmove(&nod4, &nod1);
+ cursafe = c;
+ return;
+ }
+ if(nodreg(&nod2, nn, D_DI)) {
+ regsalloc(&nod4, &nod2);
+ gmove(&nod2, &nod4);
+ v = reg[D_DI];
+ reg[D_DI] = 0;
+ sugen(n, nn, w);
+ reg[D_DI] = v;
+ gmove(&nod4, &nod2);
+ cursafe = c;
+ return;