Compilation fails with the F6 declaration below :
type F3 is delta 2.0**(-4) range 0.0 .. ((2.0**8)-1.0)*2.0**(-4); -- byte 16#f.f#;
for f3'size use 8;
type F4 is delta 2.0**(-8) range 0.0 .. ((2.0**16)-1.0)*2.0**(-8); -- word 16#ff.ff#
for f4'size use 16;
type F5 is delta 2.0**(-16) range 0.0 .. ((2.0**32)-1.0)*2.0**(-16); -- dword 16#ffff.ffff#
for f5'size use 32;
type F6 is delta 2.0**(-32) range 0.0 .. ((2.0**64)-1.0)*2.0**(-32); -- ldword 16#ffff_ffff.ffff_ffff#
for f6'size use 32;
Same failure both on linux64/v8.0.3 and on learn.adacore.com.
edit error message is "size required (65) for type "f6" too large, maximum allowed is 64"
edit add 'size instructions / intended upper bound in hex
edit added fixed type freeze trace below
loval -16#0.FF#E1, hival 16#0.FF#E1, Actual_Size 9
loval 0.0, hival 16#0.FF#E1, Actual_Size 8
loval -16#0.FFFF#E2, hival 16#0.FFFF#E2, Actual_Size 17
loval 0.0, hival 16#0.FFFF#E2, Actual_Size 16
loval -16#0.FFFF_FFFF#E4, hival 16#0.FFFF_FFFF#E4, Actual_Size 33
loval 0.0, hival 16#0.FFFF_FFFF#E4, Actual_Size 32
loval -16#0.FFFF_FFFF_FFFF_FFFF#E8, hival 16#0.FFFF_FFFF_FFFF_FFFF#E8, Actual_Size 64
loval 0.0, hival 16#0.FFFF_FFFF_FFFF_FFFF#E8, Actual_Size 63