-- { dg-do run } procedure Unchecked_Union1 is type Bit is (Zero, One); type U (X : Bit := Zero) is record case X is when Zero => I: Integer; when One => F : Float; end case; end record; for U use record I at 0 range 0 .. 31; F at 0 range 0 .. 31; end record; pragma Unchecked_Union(U); begin if U'Object_Size /= 32 then raise Program_Error; end if; end;