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