fixed bugs, added dynamic buffer allocation to preprocessor

This commit is contained in:
eck
1989-11-22 13:58:36 +00:00
parent 793a6b8ddd
commit 2e97e6e8b2
24 changed files with 386 additions and 283 deletions

View File

@@ -462,17 +462,15 @@ loc_init(expr, id)
unknownsize = 1;
case STRUCT:
case UNION:
if (!tmpoffset) { /* first time for this variable */
if (expr != (struct expr *) 0) {
break; /* switch */
} else if (!tmpoffset) {/* first time for this variable */
tmpoffset = id->id_def->df_address;
id->id_def->df_address = data_label();
C_df_dlb((label)id->id_def->df_address);
} else {
/* generate a 'loi, sti' sequence. The peephole
* optimizer will optimize this into a 'blm'
* whenever possible.
*/
C_lae_dlb((label)id->id_def->df_address, (arith)0);
C_loi(tp->tp_size);
load_block(tp->tp_size, 1);
if (unknownsize) {
/* tmpoffset += tp->tp_size; */
unknownsize = 0;
@@ -483,7 +481,7 @@ loc_init(expr, id)
, id->id_def->df_sc);
}
C_lal(tmpoffset);
C_sti(tp->tp_size);
store_block(tp->tp_size, 1);
id->id_def->df_address = tmpoffset;
tmpoffset = 0;
}