* fixed hightree generation when loading highSYM

This commit is contained in:
peter 1999-05-31 20:34:51 +00:00
parent ebee6997a8
commit 1c129626c0

View File

@ -57,29 +57,27 @@ implementation
var var
len : longint; len : longint;
st : psymtable; st : psymtable;
loadconst : boolean;
begin begin
if assigned(p^.hightree) then if assigned(p^.hightree) then
exit; exit;
len:=-1; len:=-1;
loadconst:=true;
case p^.left^.resulttype^.deftype of case p^.left^.resulttype^.deftype of
arraydef : arraydef :
begin begin
if is_open_array(p^.left^.resulttype) or if is_open_array(p^.left^.resulttype) or
is_array_of_const(p^.left^.resulttype) then is_array_of_const(p^.left^.resulttype) then
begin begin
st:=p^.left^.symtable; st:=p^.left^.symtable;
getsymonlyin(st,'high'+pvarsym(p^.left^.symtableentry)^.name); getsymonlyin(st,'high'+pvarsym(p^.left^.symtableentry)^.name);
p^.hightree:=genloadnode(pvarsym(srsym),st); p^.hightree:=genloadnode(pvarsym(srsym),st);
loadconst:=false;
end end
else else
begin begin
{ this is an empty constructor { this is an empty constructor }
if (parraydef(p^.left^.resulttype)^.highrange=-1) len:=parraydef(p^.left^.resulttype)^.highrange-
and (parraydef(p^.left^.resulttype)^.lowrange=0) then
len:=0
else
}
len:=parraydef(p^.left^.resulttype)^.highrange-
parraydef(p^.left^.resulttype)^.lowrange; parraydef(p^.left^.resulttype)^.lowrange;
end; end;
end; end;
@ -92,6 +90,7 @@ implementation
st:=p^.left^.symtable; st:=p^.left^.symtable;
getsymonlyin(st,'high'+pvarsym(p^.left^.symtableentry)^.name); getsymonlyin(st,'high'+pvarsym(p^.left^.symtableentry)^.name);
p^.hightree:=genloadnode(pvarsym(srsym),st); p^.hightree:=genloadnode(pvarsym(srsym),st);
loadconst:=false;
end end
else else
len:=pstringdef(p^.left^.resulttype)^.len; len:=pstringdef(p^.left^.resulttype)^.len;
@ -111,14 +110,15 @@ implementation
genordinalconstnode(1,s32bitdef)); genordinalconstnode(1,s32bitdef));
firstpass(p^.hightree); firstpass(p^.hightree);
p^.hightree:=gentypeconvnode(p^.hightree,s32bitdef); p^.hightree:=gentypeconvnode(p^.hightree,s32bitdef);
loadconst:=false;
end; end;
end; end;
end; end;
else else
len:=0; len:=0;
end; end;
{ if len>=0 then } if loadconst then
p^.hightree:=genordinalconstnode(len,s32bitdef); p^.hightree:=genordinalconstnode(len,s32bitdef);
firstpass(p^.hightree); firstpass(p^.hightree);
end; end;
@ -1162,7 +1162,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.48 1999-05-27 19:45:13 peter Revision 1.49 1999-05-31 20:34:51 peter
* fixed hightree generation when loading highSYM
Revision 1.48 1999/05/27 19:45:13 peter
* removed oldasm * removed oldasm
* plabel -> pasmlabel * plabel -> pasmlabel
* -a switches to source writing automaticly * -a switches to source writing automaticly