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