From: charlet Date: Wed, 29 Apr 2009 12:03:14 +0000 (+0000) Subject: 2009-04-29 Albert Lee X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a7ed52be304abe39cdf800db3d19feb66de21a1d;p=thirdparty%2Fgcc.git 2009-04-29 Albert Lee * g-socthi-vxworks.ads: Change the spec of Msghdr to match the one in the default version of GNAT.Sockets.Thin. * g-socthi-vms.ads: Change the spec of Msghdr to match the one in the default version of GNAT.Sockets.Thin. 2009-04-29 Ed Schonberg * sem_ch6.adb (Analyze_Subprogram_Specification): If the subprogram is an overriding operation of an inherited interface operation, and the controlling type is a synchronized type, we replace the type with its corresponding record, to match the proper signature of an overriding operation. The same processing must be performed for an access parameter whose designated type is derived from a synchronized interface. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146954 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/g-socthi-vms.ads b/gcc/ada/g-socthi-vms.ads index 9725d91e8550..6df93351edde 100644 --- a/gcc/ada/g-socthi-vms.ads +++ b/gcc/ada/g-socthi-vms.ads @@ -59,14 +59,15 @@ package GNAT.Sockets.Thin is type Msghdr is record Msg_Name : System.Address; - Msg_Namelen : C.int; + Msg_Namelen : C.unsigned; Msg_Iov : System.Address; - Msg_Iovlen : C.int; + Msg_Iovlen : C.size_t; Msg_Control : System.Address; - Msg_Controllen : C.int; + Msg_Controllen : C.size_t; Msg_Flags : C.int; end record; pragma Convention (C, Msghdr); + -- This type needs comments??? function Socket_Errno return Integer renames GNAT.OS_Lib.Errno; -- Returns last socket error number diff --git a/gcc/ada/g-socthi-vxworks.ads b/gcc/ada/g-socthi-vxworks.ads index 91641550338f..88638f99d021 100644 --- a/gcc/ada/g-socthi-vxworks.ads +++ b/gcc/ada/g-socthi-vxworks.ads @@ -59,9 +59,9 @@ package GNAT.Sockets.Thin is Msg_Name : System.Address; Msg_Namelen : C.unsigned; Msg_Iov : System.Address; - Msg_Iovlen : C.int; + Msg_Iovlen : C.size_t; Msg_Control : System.Address; - Msg_Controllen : C.unsigned; + Msg_Controllen : C.size_t; Msg_Flags : C.int; end record; pragma Convention (C, Msghdr); diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index c44a48b56963..1e7bf886d6a1 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2835,12 +2835,15 @@ package body Sem_Ch6 is -- inherited interface operation, and the controlling type is -- a synchronized type, replace the type with its corresponding -- record, to match the proper signature of an overriding operation. + -- Same processing for an access parameter whose designated type is + -- derived from a synchronized interface. if Ada_Version >= Ada_05 then declare Formal : Entity_Id; Formal_Typ : Entity_Id; Rec_Typ : Entity_Id; + Desig_Typ : Entity_Id; begin Formal := First_Formal (Designator); @@ -2855,6 +2858,19 @@ package body Sem_Ch6 is if Present (Interfaces (Rec_Typ)) then Set_Etype (Formal, Rec_Typ); end if; + + elsif Ekind (Formal_Typ) = E_Anonymous_Access_Type then + Desig_Typ := Designated_Type (Formal_Typ); + + if Is_Concurrent_Type (Desig_Typ) + and then Present (Corresponding_Record_Type (Desig_Typ)) + then + Rec_Typ := Corresponding_Record_Type (Desig_Typ); + + if Present (Interfaces (Rec_Typ)) then + Set_Directly_Designated_Type (Formal_Typ, Rec_Typ); + end if; + end if; end if; Next_Formal (Formal);