mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 16:52:25 +00:00
Fix allocation size for dynarry dope vector - ADDRESS rather than LONGINT.
This commit is contained in:
parent
5ae282dc9f
commit
cbf78cb6f1
1 changed files with 4 additions and 4 deletions
|
|
@ -248,7 +248,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
||||||
typ := typ^.BaseTyp^.BaseTyp; nofdims := 1;
|
typ := typ^.BaseTyp^.BaseTyp; nofdims := 1;
|
||||||
WHILE typ^.comp = OPT.DynArr DO INC(nofdims); typ := typ^.BaseTyp END ;
|
WHILE typ^.comp = OPT.DynArr DO INC(nofdims); typ := typ^.BaseTyp END ;
|
||||||
OPM.WriteString('struct '); BegBlk;
|
OPM.WriteString('struct '); BegBlk;
|
||||||
BegStat; Str1("LONGINT len[#]", nofdims); EndStat;
|
BegStat; Str1("ADDRESS len[#]", nofdims); EndStat;
|
||||||
BegStat; NEW(obj); NEW(obj.typ); (* aux. object for easy declaration *)
|
BegStat; NEW(obj); NEW(obj.typ); (* aux. object for easy declaration *)
|
||||||
obj.typ.form := OPT.Comp; obj.typ.comp := OPT.Array; obj.typ.n := 1; obj.typ.BaseTyp := typ; obj.mode := OPT.Fld; obj.name := "data";
|
obj.typ.form := OPT.Comp; obj.typ.comp := OPT.Array; obj.typ.n := 1; obj.typ.BaseTyp := typ; obj.mode := OPT.Fld; obj.name := "data";
|
||||||
obj.linkadr := UndefinedType; DeclareBase(obj); OPM.Write(' '); DeclareObj(obj, FALSE);
|
obj.linkadr := UndefinedType; DeclareBase(obj); OPM.Write(' '); DeclareObj(obj, FALSE);
|
||||||
|
|
@ -335,7 +335,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
||||||
IF showParamName THEN Ident(par); OPM.WriteString(LenExt) END ;
|
IF showParamName THEN Ident(par); OPM.WriteString(LenExt) END ;
|
||||||
dim := 1; typ := par^.typ^.BaseTyp;
|
dim := 1; typ := par^.typ^.BaseTyp;
|
||||||
WHILE typ^.comp = OPT.DynArr DO
|
WHILE typ^.comp = OPT.DynArr DO
|
||||||
IF ansiDefine THEN OPM.WriteString(", LONGINT ") ELSE OPM.WriteString(', ') END ;
|
IF ansiDefine THEN OPM.WriteString(", ADDRESS ") ELSE OPM.WriteString(', ') END ;
|
||||||
IF showParamName THEN Ident(par); OPM.WriteString(LenExt); OPM.WriteInt(dim) END ;
|
IF showParamName THEN Ident(par); OPM.WriteString(LenExt); OPM.WriteInt(dim) END ;
|
||||||
typ := typ^.BaseTyp; INC(dim)
|
typ := typ^.BaseTyp; INC(dim)
|
||||||
END
|
END
|
||||||
|
|
@ -656,7 +656,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
||||||
IF obj^.typ^.comp = OPT.DynArr THEN (* declare len parameter(s) *)
|
IF obj^.typ^.comp = OPT.DynArr THEN (* declare len parameter(s) *)
|
||||||
EndStat; BegStat;
|
EndStat; BegStat;
|
||||||
base := OPT.linttyp;
|
base := OPT.linttyp;
|
||||||
OPM.WriteString("LONGINT "); LenList(obj, FALSE, TRUE)
|
OPM.WriteString("ADDRESS "); LenList(obj, FALSE, TRUE)
|
||||||
ELSIF (obj^.mode = OPT.VarPar) & (obj^.typ^.comp = OPT.Record) THEN
|
ELSIF (obj^.mode = OPT.VarPar) & (obj^.typ^.comp = OPT.Record) THEN
|
||||||
EndStat; BegStat;
|
EndStat; BegStat;
|
||||||
OPM.WriteString("ADDRESS *"); Ident(obj); OPM.WriteString(TagExt);
|
OPM.WriteString("ADDRESS *"); Ident(obj); OPM.WriteString(TagExt);
|
||||||
|
|
@ -684,7 +684,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
||||||
COPY(obj^.name, name); obj^.name := ""; DeclareObj(obj, FALSE); COPY(name, obj^.name)
|
COPY(obj^.name, name); obj^.name := ""; DeclareObj(obj, FALSE); COPY(name, obj^.name)
|
||||||
END ;
|
END ;
|
||||||
IF obj^.typ^.comp = OPT.DynArr THEN
|
IF obj^.typ^.comp = OPT.DynArr THEN
|
||||||
OPM.WriteString(", LONGINT ");
|
OPM.WriteString(", ADDRESS ");
|
||||||
LenList(obj, TRUE, showParamNames)
|
LenList(obj, TRUE, showParamNames)
|
||||||
ELSIF (obj^.mode = OPT.VarPar) & (obj^.typ^.comp = OPT.Record) THEN
|
ELSIF (obj^.mode = OPT.VarPar) & (obj^.typ^.comp = OPT.Record) THEN
|
||||||
OPM.WriteString(", ADDRESS *");
|
OPM.WriteString(", ADDRESS *");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue