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