| -- { dg-do run } | |
| procedure Slice4 is | |
| type Varray is array (1 .. 1) of Natural; -- SImode | |
| type Rec is record | |
| Values : Varray; | |
| end record; | |
| type Sample is record | |
| Maybe : Boolean; | |
| R : Rec; | |
| end record; | |
| pragma Pack (Sample); | |
| function Match (X, Y: Sample; Length : Positive) return Boolean is | |
| begin | |
| return X.R.Values (1 .. Length) = Y.R.Values (1 .. Length); | |
| end; | |
| X, Y : Sample := (Maybe => True, R => (Values => (1 => 1))); | |
| begin | |
| X.Maybe := False; | |
| if not Match (X, Y, 1) then | |
| raise Program_Error; | |
| end if; | |
| end; |