--  { dg-do run }

procedure Array36 is

   subtype Str is String (1 .. 3);

   type Rec is record
      S : Str;
   end record;

   type T is record
      B : Boolean;
      R : Rec;
   end record;

   for T use record
      B at 0 range 0 .. 0;
      R at 0 range 1 .. 24;
   end record;

   X : T := (B => True, R => (S => "123"));

begin
   X.B := False;
   if X.R.S /= "123" then
      raise Program_Error;
   end if;
end;