comparison mc-parse.c @ 14:77c0710a8729

struct copy
author kono
date Mon, 17 Jan 2000 01:20:59 +0900
parents a8a812dace23
children ca0bce3b4810
comparison
equal deleted inserted replaced
13:a8a812dace23 14:77c0710a8729
720 error(-1); 720 error(-1);
721 } else { 721 } else {
722 nsc = LVAR; 722 nsc = LVAR;
723 ndsp = (disp -= sz); 723 ndsp = (disp -= sz);
724 } 724 }
725 n->sc = nsc;
726 n->dsp = ndsp;
725 if(sym==ASS) { 727 if(sym==ASS) {
726 n->sc = nsc;
727 n->dsp = ndsp;
728 decl_data(type,n,0); 728 decl_data(type,n,0);
729 } 729 }
730 return; 730 return;
731 case LSDECL: 731 case LSDECL:
732 nsc = FIELD; 732 nsc = FIELD;
774 if(t==CHAR) { 774 if(t==CHAR) {
775 ass =list3(CASS,list2(LVAR,n->dsp+offset),e); 775 ass =list3(CASS,list2(LVAR,n->dsp+offset),e);
776 } else if (scalar(t)) { 776 } else if (scalar(t)) {
777 ass = list3(ASS,list2(LVAR,n->dsp+offset),e); 777 ass = list3(ASS,list2(LVAR,n->dsp+offset),e);
778 } else if (car(t)==STRUCT || car(t)==UNION || car(t)==STRING) { 778 } else if (car(t)==STRUCT || car(t)==UNION || car(t)==STRING) {
779 ass = list3(SASS,list2(LVAR,n->dsp+offset),e); 779 ass = list4(SASS,list2(LVAR,n->dsp+offset),e,size(t));
780 } else { 780 } else {
781 error(DCERR); 781 error(DCERR);
782 } 782 }
783 init_vars = list2(ass,init_vars); 783 init_vars = list2(ass,init_vars);
784 return offset+size(t); 784 return offset+size(t);
1408 e2=rvalue(expr1()); 1408 e2=rvalue(expr1());
1409 if(t==VOID) 1409 if(t==VOID)
1410 error(TYERR); 1410 error(TYERR);
1411 if(t==CHAR) { 1411 if(t==CHAR) {
1412 type= INT;return(list3(CASS,e1,e2)); 1412 type= INT;return(list3(CASS,e1,e2));
1413 } else if(t==STRUCT||t==UNION) { 1413 } else if(!scalar(t)&&(car(t)==STRUCT||car(t)==UNION)) {
1414 type= t;return(list3(SASS,e1,e2)); 1414 type= t;return(list4(SASS,e1,e2,size(t)));
1415 } 1415 }
1416 type=t; 1416 type=t;
1417 return(list3(ASS,e1,e2)); 1417 return(list3(ASS,e1,e2));
1418 case ADD+AS: case SUB+AS: case MUL+AS: case DIV+AS: case MOD+AS: 1418 case ADD+AS: case SUB+AS: case MUL+AS: case DIV+AS: case MOD+AS:
1419 case RSHIFT+AS: case LSHIFT+AS: case BAND+AS: case EOR+AS: case BOR+AS: 1419 case RSHIFT+AS: case LSHIFT+AS: case BAND+AS: case EOR+AS: case BOR+AS: