-- { dg-do run } -- { dg-options "-O" } procedure string_slice is subtype Key_T is String (1 .. 3); function One_Xkey return Key_T is Key : Key_T := "XXX"; begin Key (1 .. 2) := "__"; return Key; end; Key : Key_T := One_Xkey; begin if Key (3) /= 'X' then raise Program_Error; end if; end;