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) {
|
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||||
OPB_err(126);
|
OPB_err(126);
|
||||||
}
|
}
|
||||||
|
OPT_TypSize(x->typ);
|
||||||
|
OPT_TypSize(p->typ);
|
||||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||||
OPB_err(-308);
|
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) {
|
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||||
OPB_err(126);
|
OPB_err(126);
|
||||||
}
|
}
|
||||||
|
OPT_TypSize(x->typ);
|
||||||
|
OPT_TypSize(p->typ);
|
||||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||||
OPB_err(-308);
|
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) {
|
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||||
OPB_err(126);
|
OPB_err(126);
|
||||||
}
|
}
|
||||||
|
OPT_TypSize(x->typ);
|
||||||
|
OPT_TypSize(p->typ);
|
||||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||||
OPB_err(-308);
|
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) {
|
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||||
OPB_err(126);
|
OPB_err(126);
|
||||||
}
|
}
|
||||||
|
OPT_TypSize(x->typ);
|
||||||
|
OPT_TypSize(p->typ);
|
||||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||||
OPB_err(-308);
|
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) {
|
if (((x->class == 8 || x->class == 9) || __IN(f, 0x0501, 32)) || x->typ->comp == 3) {
|
||||||
OPB_err(126);
|
OPB_err(126);
|
||||||
}
|
}
|
||||||
|
OPT_TypSize(x->typ);
|
||||||
|
OPT_TypSize(p->typ);
|
||||||
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
if ((x->class != 7 && x->typ->size < p->typ->size)) {
|
||||||
OPB_err(-308);
|
OPB_err(-308);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1226,6 +1226,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||||
err(126)
|
err(126)
|
||||||
END;
|
END;
|
||||||
(* Warn if the result type includes memory past the end of the source variable *)
|
(* 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.size < p.typ.size) THEN err(-308) END;
|
||||||
|
|
||||||
IF (x.class = OPT.Nconst) & (x.typ.form = OPT.Int) & (p.typ.form = OPT.Int) THEN
|
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