1-- { dg-do run } 2 3procedure Discr33 is 4 5 subtype Int is Integer range 1..100; 6 7 type T (D : Int := 1) is 8 record 9 A : Integer; 10 B : String (1..D); 11 C : aliased Integer; 12 end record; 13 14 Var : T := (D => 1, A => 1234, B => "x", C => 4567); 15 16 type Int_Ref is access all Integer; 17 Pointer_To_C : Int_Ref := Var.C'Access; 18 19begin 20 21 if Pointer_To_C.all /= 4567 then 22 raise Program_Error; 23 end if; 24 25 Var := (D => 26, A => 1234, B => "abcdefghijklmnopqrstuvwxyz", C => 2345); 26 27 if Pointer_To_C.all /= 2345 then 28 raise Program_Error; 29 end if; 30 31end Discr33; 32