| -- { dg-do compile } |
| -- { dg-options "-O2" } |
| |
| with Unchecked_Conversion; |
| |
| procedure Warn4 is |
| |
| type POSIX_Character is new Standard.Character; |
| type POSIX_String is array (Positive range <>) of aliased POSIX_Character; |
| |
| type String_Ptr is access all String; |
| type POSIX_String_Ptr is access all POSIX_String; |
| |
| function sptr_to_psptr is new Unchecked_Conversion -- { dg-warning "aliasing problem" } |
| (String_Ptr, POSIX_String_Ptr); -- { dg-warning "" "" { target *-*-* } 14 } |
| |
| function To_POSIX_String (Str : String) return POSIX_String; |
| function To_POSIX_String (Str : String) |
| return POSIX_String is |
| begin |
| return sptr_to_psptr (Str'Unrestricted_Access).all; |
| end To_POSIX_String; |
| |
| A : Boolean; |
| S : String := "ABCD/abcd"; |
| P : Posix_String := "ABCD/abcd"; |
| |
| begin |
| A := To_POSIX_String (S) = P; |
| end; |