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