fixed some problems: ADS was generated with size > pointer_size;

some (most) backends dont implement that.
Unstacking of macros did not quite work properly, but I dont know why
This commit is contained in:
ceriel
1987-10-20 09:36:34 +00:00
parent 57319f33a8
commit 6dc819dd38
4 changed files with 33 additions and 13 deletions

View File

@@ -122,7 +122,10 @@ EVAL(expr, val, code, true_label, false_label)
C_adi(tp->tp_size);
break;
case POINTER:
C_ads(right->ex_type->tp_size);
C_loc(right->ex_type->tp_size);
C_loc(pointer_size);
C_ciu();
C_ads(pointer_size);
break;
#ifndef NOFLOAT
case DOUBLE:
@@ -176,7 +179,10 @@ EVAL(expr, val, code, true_label, false_label)
C_sbs(pointer_size);
else {
C_ngi(right->ex_type->tp_size);
C_ads(right->ex_type->tp_size);
C_loc(right->ex_type->tp_size);
C_loc(pointer_size);
C_ciu();
C_ads(pointer_size);
}
break;
#ifndef NOFLOAT
@@ -748,7 +754,10 @@ assop(type, oper)
case POINTER:
if (oper == MINAB || oper == MINMIN || oper == POSTDECR)
C_ngi(size);
C_ads(size);
C_loc(size);
C_loc(pointer_size);
C_ciu();
C_ads(pointer_size);
break;
case ERRONEOUS:
break;