mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-10 22:06:08 +02:00
- Fix result type of SizeOf and BitSizeOf to use sizesint instead of sint.
git-svn-id: trunk@42337 -
This commit is contained in:
parent
48a7c0989a
commit
7dc515b62c
@ -2963,13 +2963,13 @@ implementation
|
|||||||
if assigned(hightree) then
|
if assigned(hightree) then
|
||||||
begin
|
begin
|
||||||
hp:=caddnode.create(addn,hightree,
|
hp:=caddnode.create(addn,hightree,
|
||||||
cordconstnode.create(1,sinttype,false));
|
cordconstnode.create(1,sizesinttype,false));
|
||||||
if (left.resultdef.typ=arraydef) then
|
if (left.resultdef.typ=arraydef) then
|
||||||
if not is_packed_array(tarraydef(left.resultdef)) then
|
if not is_packed_array(tarraydef(left.resultdef)) then
|
||||||
begin
|
begin
|
||||||
if (tarraydef(left.resultdef).elesize<>1) then
|
if (tarraydef(left.resultdef).elesize<>1) then
|
||||||
hp:=caddnode.create(muln,hp,cordconstnode.create(tarraydef(
|
hp:=caddnode.create(muln,hp,cordconstnode.create(tarraydef(
|
||||||
left.resultdef).elesize,sinttype,true));
|
left.resultdef).elesize,sizesinttype,true));
|
||||||
end
|
end
|
||||||
else if (tarraydef(left.resultdef).elepackedbitsize <> 8) then
|
else if (tarraydef(left.resultdef).elepackedbitsize <> 8) then
|
||||||
begin
|
begin
|
||||||
@ -2977,24 +2977,24 @@ implementation
|
|||||||
if (hp.nodetype <> ordconstn) then
|
if (hp.nodetype <> ordconstn) then
|
||||||
internalerror(2006081511);
|
internalerror(2006081511);
|
||||||
hp.free;
|
hp.free;
|
||||||
hp := cordconstnode.create(left.resultdef.size,sinttype,true);
|
hp := cordconstnode.create(left.resultdef.size,sizesinttype,true);
|
||||||
{
|
{
|
||||||
hp:=
|
hp:=
|
||||||
ctypeconvnode.create_explicit(sinttype,
|
ctypeconvnode.create_explicit(sizesinttype,
|
||||||
cmoddivnode.create(divn,
|
cmoddivnode.create(divn,
|
||||||
caddnode.create(addn,
|
caddnode.create(addn,
|
||||||
caddnode.create(muln,hp,cordconstnode.create(tarraydef(
|
caddnode.create(muln,hp,cordconstnode.create(tarraydef(
|
||||||
left.resultdef).elepackedbitsize,s64inttype,true)),
|
left.resultdef).elepackedbitsize,s64inttype,true)),
|
||||||
cordconstnode.create(a,s64inttype,true)),
|
cordconstnode.create(a,s64inttype,true)),
|
||||||
cordconstnode.create(8,s64inttype,true)),
|
cordconstnode.create(8,s64inttype,true)),
|
||||||
sinttype);
|
sizesinttype);
|
||||||
}
|
}
|
||||||
end;
|
end;
|
||||||
result:=hp;
|
result:=hp;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
resultdef:=sinttype;
|
resultdef:=sizesinttype;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
in_typeof_x:
|
in_typeof_x:
|
||||||
|
@ -445,7 +445,7 @@ implementation
|
|||||||
statement_syssym:=geninlinenode(in_sizeof_x,false,p1);
|
statement_syssym:=geninlinenode(in_sizeof_x,false,p1);
|
||||||
{ no packed bit support for these things }
|
{ no packed bit support for these things }
|
||||||
if l=in_bitsizeof_x then
|
if l=in_bitsizeof_x then
|
||||||
statement_syssym:=caddnode.create(muln,statement_syssym,cordconstnode.create(8,sinttype,true));
|
statement_syssym:=caddnode.create(muln,statement_syssym,cordconstnode.create(8,sizesinttype,true));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
@ -460,12 +460,12 @@ implementation
|
|||||||
not((p1.nodetype = subscriptn) and
|
not((p1.nodetype = subscriptn) and
|
||||||
is_packed_record_or_object(tsubscriptnode(p1).left.resultdef))) then
|
is_packed_record_or_object(tsubscriptnode(p1).left.resultdef))) then
|
||||||
begin
|
begin
|
||||||
statement_syssym:=cordconstnode.create(p1.resultdef.size,sinttype,true);
|
statement_syssym:=cordconstnode.create(p1.resultdef.size,sizesinttype,true);
|
||||||
if (l = in_bitsizeof_x) then
|
if (l = in_bitsizeof_x) then
|
||||||
statement_syssym:=caddnode.create(muln,statement_syssym,cordconstnode.create(8,sinttype,true));
|
statement_syssym:=caddnode.create(muln,statement_syssym,cordconstnode.create(8,sizesinttype,true));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
statement_syssym:=cordconstnode.create(p1.resultdef.packedbitsize,sinttype,true);
|
statement_syssym:=cordconstnode.create(p1.resultdef.packedbitsize,sizesinttype,true);
|
||||||
{ p1 not needed !}
|
{ p1 not needed !}
|
||||||
p1.destroy;
|
p1.destroy;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user