mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 02:52:24 +00:00
Fix misfiring of error 308 by calculating type sizes when not already calculated.
This commit is contained in:
parent
c12aae020d
commit
65db905f0b
6 changed files with 11 additions and 0 deletions
|
|
@ -2172,6 +2172,8 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, INT8 fctno)
|
|||
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||
OPB_err(126);
|
||||
}
|
||||
OPT_TypSize(x->typ);
|
||||
OPT_TypSize(p->typ);
|
||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||
OPB_err(-308);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2172,6 +2172,8 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, INT8 fctno)
|
|||
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||
OPB_err(126);
|
||||
}
|
||||
OPT_TypSize(x->typ);
|
||||
OPT_TypSize(p->typ);
|
||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||
OPB_err(-308);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2172,6 +2172,8 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, INT8 fctno)
|
|||
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||
OPB_err(126);
|
||||
}
|
||||
OPT_TypSize(x->typ);
|
||||
OPT_TypSize(p->typ);
|
||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||
OPB_err(-308);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2172,6 +2172,8 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, INT8 fctno)
|
|||
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||
OPB_err(126);
|
||||
}
|
||||
OPT_TypSize(x->typ);
|
||||
OPT_TypSize(p->typ);
|
||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||
OPB_err(-308);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2172,6 +2172,8 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, INT8 fctno)
|
|||
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||
OPB_err(126);
|
||||
}
|
||||
OPT_TypSize(x->typ);
|
||||
OPT_TypSize(p->typ);
|
||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||
OPB_err(-308);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1226,6 +1226,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
|||
err(126)
|
||||
END;
|
||||
(* Warn if the result type includes memory past the end of the source variable *)
|
||||
OPT.TypSize(x.typ); OPT.TypSize(p.typ);
|
||||
IF (x.class # OPT.Nconst) & (x.typ.size < p.typ.size) THEN err(-308) END;
|
||||
|
||||
IF (x.class = OPT.Nconst) & (x.typ.form = OPT.Int) & (p.typ.form = OPT.Int) THEN
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue