mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 04:06:08 +02:00
* fixed packed bitsize calculation for types with a negative lower bound and
and upper bound just below the next power of two (mantis #34971) git-svn-id: trunk@41161 -
This commit is contained in:
parent
71559c83a6
commit
0db9ff5c39
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -16485,6 +16485,7 @@ tests/webtbs/tw3490.pp svneol=native#text/plain
|
|||||||
tests/webtbs/tw3491.pp svneol=native#text/plain
|
tests/webtbs/tw3491.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3492.pp svneol=native#text/plain
|
tests/webtbs/tw3492.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3494.pp svneol=native#text/plain
|
tests/webtbs/tw3494.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw34971.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3499.pp svneol=native#text/plain
|
tests/webtbs/tw3499.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3504.pp svneol=native#text/plain
|
tests/webtbs/tw3504.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3506.pp svneol=native#text/plain
|
tests/webtbs/tw3506.pp svneol=native#text/plain
|
||||||
|
@ -2716,8 +2716,8 @@ implementation
|
|||||||
if (minval>=0) then
|
if (minval>=0) then
|
||||||
sizeval:=maxval
|
sizeval:=maxval
|
||||||
else
|
else
|
||||||
{ don't count 0 twice }
|
{ don't count 0 twice, but take into account that range goes from -n-1..n }
|
||||||
sizeval:=(cutils.max(-minval,maxval)*2)-1;
|
sizeval:=(cutils.max(-minval,maxval+1)*2)-1;
|
||||||
{ 256 must become 512 etc. }
|
{ 256 must become 512 etc. }
|
||||||
nextpowerof2(sizeval+1,power);
|
nextpowerof2(sizeval+1,power);
|
||||||
result := power;
|
result := power;
|
||||||
@ -2939,8 +2939,8 @@ implementation
|
|||||||
if (low>=0) then
|
if (low>=0) then
|
||||||
sizeval:=high
|
sizeval:=high
|
||||||
else
|
else
|
||||||
{ don't count 0 twice }
|
{ don't count 0 twice, but take into account that range goes from -n-1..n }
|
||||||
sizeval:=(cutils.max(-low,high)*2)-1;
|
sizeval:=(cutils.max(-low,high+1)*2)-1;
|
||||||
{ 256 must become 512 etc. }
|
{ 256 must become 512 etc. }
|
||||||
nextpowerof2(sizeval+1,power);
|
nextpowerof2(sizeval+1,power);
|
||||||
result := power;
|
result := power;
|
||||||
|
25
tests/webtbs/tw34971.pp
Normal file
25
tests/webtbs/tw34971.pp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
type
|
||||||
|
t1 = -1..1;
|
||||||
|
t2 = -4..3;
|
||||||
|
t3 = -3..4;
|
||||||
|
type
|
||||||
|
r1 = bitpacked record
|
||||||
|
f: t1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
r2 = bitpacked record
|
||||||
|
f: t2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
r3 = bitpacked record
|
||||||
|
f: t3;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if bitsizeof(r1.f)<>2 then
|
||||||
|
halt(1);
|
||||||
|
if bitsizeof(r2.f)<>3 then
|
||||||
|
halt(2);
|
||||||
|
if bitsizeof(r3.f)<>4 then
|
||||||
|
halt(3);
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user