- Fix result type of SizeOf and BitSizeOf to use sizesint instead of sint.

git-svn-id: trunk@42337 -
This commit is contained in:
Jeppe Johansen 2019-07-07 14:37:45 +00:00
parent 48a7c0989a
commit 7dc515b62c
2 changed files with 10 additions and 10 deletions

View File

@ -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:

View File

@ -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;