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