-- { 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; |