1-- { dg-do compile } 2-- { dg-options "-O2" } 3 4with Unchecked_Conversion; 5 6procedure Warn4 is 7 8 type POSIX_Character is new Standard.Character; 9 type POSIX_String is array (Positive range <>) of aliased POSIX_Character; 10 11 type String_Ptr is access all String; 12 type POSIX_String_Ptr is access all POSIX_String; 13 14 function sptr_to_psptr is new Unchecked_Conversion -- { dg-warning "aliasing problem" } 15 (String_Ptr, POSIX_String_Ptr); -- { dg-warning "" "" { target *-*-* } 14 } 16 17 function To_POSIX_String (Str : String) return POSIX_String; 18 function To_POSIX_String (Str : String) 19 return POSIX_String is 20 begin 21 return sptr_to_psptr (Str'Unrestricted_Access).all; 22 end To_POSIX_String; 23 24 A : Boolean; 25 S : String := "ABCD/abcd"; 26 P : Posix_String := "ABCD/abcd"; 27 28begin 29 A := To_POSIX_String (S) = P; 30end; 31