[multiple changes]
2011-11-21 Pascal Obry <obry@adacore.com> * s-taprop-linux.adb (Initialize_Lock): Do not allocate a cond attribute as not needed. 2011-11-21 Robert Dewar <dewar@adacore.com> * sem_prag.adb: Minor reformatting. 2011-11-21 Pascal Obry <obry@adacore.com> * gnat_rm.texi: Document restriction for stdcall convention on dispatching calls. From-SVN: r181565
This commit is contained in:
parent
a5dd23a728
commit
56272abec6
|
@ -1,3 +1,17 @@
|
|||
2011-11-21 Pascal Obry <obry@adacore.com>
|
||||
|
||||
* s-taprop-linux.adb (Initialize_Lock): Do not allocate a cond
|
||||
attribute as not needed.
|
||||
|
||||
2011-11-21 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* sem_prag.adb: Minor reformatting.
|
||||
|
||||
2011-11-21 Pascal Obry <obry@adacore.com>
|
||||
|
||||
* gnat_rm.texi: Document restriction for stdcall convention on
|
||||
dispatching calls.
|
||||
|
||||
2011-11-21 Pascal Obry <obry@adacore.com>
|
||||
|
||||
* sem_prag.adb (Process_Convention): A dispatching call cannot
|
||||
|
|
|
@ -9633,7 +9633,8 @@ separate section on Intrinsic Subprograms.
|
|||
@item Stdcall
|
||||
Stdcall (used for Windows implementations only). This convention correspond
|
||||
to the WINAPI (previously called Pascal convention) C/C++ convention under
|
||||
Windows. A function with this convention cleans the stack before exit.
|
||||
Windows. A routine with this convention cleans the stack before
|
||||
exit. This pragma cannot be applied to a dispatching call.
|
||||
@item DLL
|
||||
Synonym for Stdcall
|
||||
@item Win32
|
||||
|
|
|
@ -1069,8 +1069,7 @@ package body System.Task_Primitives.Operations is
|
|||
----------------
|
||||
|
||||
procedure Initialize (S : in out Suspension_Object) is
|
||||
Cond_Attr : aliased pthread_condattr_t;
|
||||
Result : Interfaces.C.int;
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
-- Initialize internal state (always to False (RM D.10(6)))
|
||||
|
@ -1090,10 +1089,7 @@ package body System.Task_Primitives.Operations is
|
|||
|
||||
-- Initialize internal condition variable
|
||||
|
||||
Result := pthread_condattr_init (Cond_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
|
||||
Result := pthread_cond_init (S.CV'Access, null);
|
||||
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
|
|
|
@ -3524,13 +3524,25 @@ package body Sem_Prag is
|
|||
("second argument of pragma% must be a subprogram", Arg2);
|
||||
end if;
|
||||
|
||||
-- For Stdcall, a subprogram, variable or subprogram type is required
|
||||
-- Stdcall case
|
||||
|
||||
if C = Convention_Stdcall
|
||||
|
||||
-- Subprogram is allowed, but not a generic subprogram, and not a
|
||||
-- dispatching operation. A dispatching subprogram cannot be used
|
||||
-- to interface to the Win32 API, so in fact this check does not
|
||||
-- impose any effective restriction.
|
||||
|
||||
and then
|
||||
((not Is_Subprogram (E) and then not Is_Generic_Subprogram (E))
|
||||
or else Is_Dispatching_Operation (E))
|
||||
|
||||
-- A variable is OK
|
||||
|
||||
and then Ekind (E) /= E_Variable
|
||||
|
||||
-- An access to subprogram is also allowed
|
||||
|
||||
and then not
|
||||
(Is_Access_Type (E)
|
||||
and then Ekind (Designated_Type (E)) = E_Subprogram_Type)
|
||||
|
|
Loading…
Reference in New Issue