-- { dg-do run } procedure Pack4 is type Time_T is record Hour : Integer; end record; type Date_And_Time_T is record Date : Integer; Time : Time_T; end record; pragma Pack(Date_And_Time_T); procedure Assign_Hour_Of (T : out Time_T) is begin T.Hour := 44; end; procedure Clobber_Hour_Of (DT: out Date_And_Time_T) is begin Assign_Hour_Of (Dt.Time); end; DT : Date_And_Time_T; begin DT.Time.Hour := 22; Clobber_Hour_Of (DT); if DT.Time.Hour /= 44 then raise Program_Error; end if; end;