* fix for bug0182

This commit is contained in:
pierre 1998-11-23 18:26:44 +00:00
parent 83a1c209c5
commit c921c95996

View File

@ -201,12 +201,28 @@ unit ptconst;
else else
if p^.treetype=addrn then if p^.treetype=addrn then
begin begin
hp:=p^.left;
while assigned(hp) and (hp^.treetype=subscriptn) do
hp:=hp^.left;
if (is_equal(ppointerdef(p^.resulttype)^.definition,ppointerdef(def)^.definition) or if (is_equal(ppointerdef(p^.resulttype)^.definition,ppointerdef(def)^.definition) or
(is_equal(ppointerdef(p^.resulttype)^.definition,voiddef)) or (is_equal(ppointerdef(p^.resulttype)^.definition,voiddef)) or
(is_equal(ppointerdef(def)^.definition,voiddef))) and (is_equal(ppointerdef(def)^.definition,voiddef))) and
(p^.left^.treetype = loadn) then (hp^.treetype = loadn) then
begin begin
if token=POINT then firstpass(p^.left);
hp:=p^.left;
offset:=0;
while assigned(hp) and (hp^.treetype<>loadn) do
begin
if hp^.treetype=subscriptn then
inc(offset,hp^.vs^.address)
else
Message(cg_e_illegal_expression);
hp:=hp^.left;
end;
datasegment^.concat(new(pai_const_symbol_offset,init(
strpnew(hp^.symtableentry^.mangledname),offset)));
(*if token=POINT then
begin begin
offset:=0; offset:=0;
while token=POINT do while token=POINT do
@ -229,9 +245,9 @@ unit ptconst;
begin begin
datasegment^.concat(new(pai_const,init_symbol( datasegment^.concat(new(pai_const,init_symbol(
strpnew(p^.left^.symtableentry^.mangledname)))); strpnew(p^.left^.symtableentry^.mangledname))));
end; end; *)
maybe_concat_external(p^.left^.symtableentry^.owner, maybe_concat_external(hp^.symtableentry^.owner,
p^.left^.symtableentry^.mangledname); hp^.symtableentry^.mangledname);
end end
else else
Message(cg_e_illegal_expression); Message(cg_e_illegal_expression);
@ -631,7 +647,10 @@ unit ptconst;
end. end.
{ {
$Log$ $Log$
Revision 1.28 1998-11-17 10:40:16 peter Revision 1.29 1998-11-23 18:26:44 pierre
* fix for bug0182
Revision 1.28 1998/11/17 10:40:16 peter
* H+ fixes * H+ fixes
Revision 1.27 1998/11/16 12:12:23 peter Revision 1.27 1998/11/16 12:12:23 peter