-- { dg-do run } -- { dg-options "-gnatws" } with Unchecked_Conversion; procedure biased_uc is begin -- Case (f) target type is biased, source is unbiased declare type a is new integer range 0 .. 255; for a'size use 8; type b is new integer range 200 .. 455; for b'size use 8; av : a; bv : b; for av'size use 8; for bv'size use 8; function a2b is new Unchecked_Conversion (a,b); begin bv := a2b (200); if bv = 200 then raise Program_Error; end if; end; -- Case (g) target type is biased, source object is biased declare type a is new integer range 1 .. 256; for a'size use 16; type b is new integer range 1 .. 65536; for b'size use 16; av : a; bv : b; for av'size use 8; for bv'size use 16; function a2b is new Unchecked_Conversion (a,b); begin bv := a2b (1); if bv /= 2 then raise Program_Error; end if; end; end;