From: Eric Botcazou Date: Tue, 19 Mar 2024 09:56:34 +0000 (+0100) Subject: ada: One more adjustment coming from aliasing considerations X-Git-Tag: basepoints/gcc-16~8889 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eef3025547ce55cbf6a9018b495ef5c9a562047a;p=thirdparty%2Fgcc.git ada: One more adjustment coming from aliasing considerations It is needed on PowerPC platforms because of specific calling conventions. gcc/ada/ * libgnat/g-sothco.ads (In_Addr): Add aspect Universal_Aliasing. --- diff --git a/gcc/ada/libgnat/g-sothco.ads b/gcc/ada/libgnat/g-sothco.ads index 8c219333649..da1e6f5bcdd 100644 --- a/gcc/ada/libgnat/g-sothco.ads +++ b/gcc/ada/libgnat/g-sothco.ads @@ -123,10 +123,13 @@ package GNAT.Sockets.Thin_Common is type In_Addr is record S_B1, S_B2, S_B3, S_B4 : C.unsigned_char; - end record with Convention => C, Alignment => C.int'Alignment; + end record + with Convention => C, Alignment => C.int'Alignment, Universal_Aliasing; -- IPv4 address, represented as a network-order C.int. Note that the -- underlying operating system may assume that values of this type have - -- C.int alignment, so we need to provide a suitable alignment clause here. + -- C.int's alignment, so we need to provide a suitable alignment clause. + -- We also need to inhibit strict type-based aliasing optimizations in + -- order to implement the following unchecked conversions efficiently. function To_In_Addr is new Ada.Unchecked_Conversion (C.int, In_Addr); function To_Int is new Ada.Unchecked_Conversion (In_Addr, C.int);