From: ceriel Date: Wed, 2 Oct 1991 12:00:05 +0000 (+0000) Subject: Fix: sometimes generated illegal register messages for parameters X-Git-Tag: release-5-5~778 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=9381b34dfabb6aeb0b2ed293bc73109590e8c50e;p=ack.git Fix: sometimes generated illegal register messages for parameters --- diff --git a/lang/cem/cemcom.ansi/idf.c b/lang/cem/cemcom.ansi/idf.c index ebb9014af..fe038bbb5 100644 --- a/lang/cem/cemcom.ansi/idf.c +++ b/lang/cem/cemcom.ansi/idf.c @@ -536,14 +536,14 @@ declare_formals(idf, fp) parameter starts on a new word boundary. */ f_offset = align(f_offset + def->df_type->tp_size, (int) word_size); + RegisterAccount(def->df_address, def->df_type->tp_size, + regtype(def->df_type), + def->df_sc); /* cvt int to char or short and double to float, if necessary */ formal_cvt(hasproto, def); def->df_level = L_FORMAL2; /* CJ */ - RegisterAccount(def->df_address, def->df_type->tp_size, - regtype(def->df_type), - def->df_sc); if (nparams++ >= STDC_NPARAMS) strict("number of formal parameters exceeds ANSI limit"); #ifdef DBSYMTAB diff --git a/lang/cem/cemcom.ansi/util.c b/lang/cem/cemcom.ansi/util.c index 4ffe7ed53..fa51a5257 100644 --- a/lang/cem/cemcom.ansi/util.c +++ b/lang/cem/cemcom.ansi/util.c @@ -205,6 +205,7 @@ LoadLocal(off, sz) if (p) p->t_count++; #endif #endif + if (p && p->t_size != sz) p->t_regtype = -1; if (sz == word_size) C_lol(off); else if (sz == dword_size) C_ldl(off); else { @@ -224,6 +225,7 @@ StoreLocal(off, sz) if (p) p->t_count++; #endif #endif + if (p && p->t_size != sz) p->t_regtype = -1; if (sz == word_size) C_stl(off); else if (sz == dword_size) C_sdl(off); else {