[multiple changes]

2009-04-20  Bob Duff  <duff@adacore.com>

	* gnat1drv.adb (Gnat1drv): Put call to Check_Library_Items inside
	pragma Debug.

2009-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Build_Protected_Sub_Specification): Mark generated
	subprogram as Eliminated when source operation is.
	(Expand_N_Protected_Type_Declaration): Generate protected and
	unprotected specs for the internal operations, even if the source
	operation is eliminated.

2009-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Make_Predefined_Primitive_Specs,
	Predefined_Primitive_Bodies): Do not create the declarations and bodies
	of the primitive subprograms associated with dispatching select
	statements when the runtime is in configurable mode.

2009-04-20  Ed Falis  <falis@adacore.com>

	* s-vxwext-kernel.ads (tickGet): Use tick64Get.

From-SVN: r146393
This commit is contained in:
Arnaud Charlet 2009-04-20 12:35:28 +02:00
parent 4fd1e8b001
commit 3edf2f76e4
5 changed files with 42 additions and 7 deletions

View File

@ -1,3 +1,27 @@
2009-04-20 Bob Duff <duff@adacore.com>
* gnat1drv.adb (Gnat1drv): Put call to Check_Library_Items inside
pragma Debug.
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* exp_ch9.adb (Build_Protected_Sub_Specification): Mark generated
subprogram as Eliminated when source operation is.
(Expand_N_Protected_Type_Declaration): Generate protected and
unprotected specs for the internal operations, even if the source
operation is eliminated.
2009-04-20 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch3.adb (Make_Predefined_Primitive_Specs,
Predefined_Primitive_Bodies): Do not create the declarations and bodies
of the primitive subprograms associated with dispatching select
statements when the runtime is in configurable mode.
2009-04-20 Ed Falis <falis@adacore.com>
* s-vxwext-kernel.ads (tickGet): Use tick64Get.
2009-04-20 Thomas Quinot <quinot@adacore.com> 2009-04-20 Thomas Quinot <quinot@adacore.com>
* s-oscons-tmplt.c: Add support for generating a dummy version of * s-oscons-tmplt.c: Add support for generating a dummy version of

View File

@ -7819,12 +7819,13 @@ package body Exp_Ch3 is
-- These operations cannot be implemented on VM targets, so we simply -- These operations cannot be implemented on VM targets, so we simply
-- disable their generation in this case. Disable the generation of -- disable their generation in this case. Disable the generation of
-- these bodies if No_Dispatching_Calls or Ravenscar is active. -- these bodies if No_Dispatching_Calls, Ravenscar or ZFP is active.
if Ada_Version >= Ada_05 if Ada_Version >= Ada_05
and then VM_Target = No_VM and then VM_Target = No_VM
and then not Restriction_Active (No_Dispatching_Calls) and then not Restriction_Active (No_Dispatching_Calls)
and then not Restriction_Active (No_Select_Statements) and then not Restriction_Active (No_Select_Statements)
and then RTE_Available (RE_Select_Specific_Data)
then then
-- These primitives are defined abstract in interface types -- These primitives are defined abstract in interface types
@ -8313,7 +8314,7 @@ package body Exp_Ch3 is
-- These operations cannot be implemented on VM targets, so we simply -- These operations cannot be implemented on VM targets, so we simply
-- disable their generation in this case. Disable the generation of -- disable their generation in this case. Disable the generation of
-- these bodies if No_Dispatching_Calls or Ravenscar is active. -- these bodies if No_Dispatching_Calls, Ravenscar or ZFP is active.
if Ada_Version >= Ada_05 if Ada_Version >= Ada_05
and then VM_Target = No_VM and then VM_Target = No_VM
@ -8325,6 +8326,7 @@ package body Exp_Ch3 is
and then Has_Interfaces (Tag_Typ))) and then Has_Interfaces (Tag_Typ)))
and then not Restriction_Active (No_Dispatching_Calls) and then not Restriction_Active (No_Dispatching_Calls)
and then not Restriction_Active (No_Select_Statements) and then not Restriction_Active (No_Select_Statements)
and then RTE_Available (RE_Select_Specific_Data)
then then
Append_To (Res, Make_Disp_Asynchronous_Select_Body (Tag_Typ)); Append_To (Res, Make_Disp_Asynchronous_Select_Body (Tag_Typ));
Append_To (Res, Make_Disp_Conditional_Select_Body (Tag_Typ)); Append_To (Res, Make_Disp_Conditional_Select_Body (Tag_Typ));

View File

@ -2791,6 +2791,11 @@ package body Exp_Ch9 is
Set_Debug_Info_Needed (New_Id); Set_Debug_Info_Needed (New_Id);
-- If a pragma Eliminate applies to the source entity, the internal
-- subprograms will be eliminated as well.
Set_Is_Eliminated (New_Id, Is_Eliminated (Def_Id));
if Nkind (Specification (Decl)) = N_Procedure_Specification then if Nkind (Specification (Decl)) = N_Procedure_Specification then
New_Spec := New_Spec :=
Make_Procedure_Specification (Loc, Make_Procedure_Specification (Loc,
@ -7212,7 +7217,7 @@ package body Exp_Ch9 is
when N_Subprogram_Body => when N_Subprogram_Body =>
-- Exclude functions created to analyze defaults -- Do not create bodies for eliminated operations.
if not Is_Eliminated (Defining_Entity (Op_Body)) if not Is_Eliminated (Defining_Entity (Op_Body))
and then not Is_Eliminated (Corresponding_Spec (Op_Body)) and then not Is_Eliminated (Corresponding_Spec (Op_Body))
@ -7803,9 +7808,7 @@ package body Exp_Ch9 is
Comp := First (Visible_Declarations (Pdef)); Comp := First (Visible_Declarations (Pdef));
while Present (Comp) loop while Present (Comp) loop
if Nkind (Comp) = N_Subprogram_Declaration if Nkind (Comp) = N_Subprogram_Declaration then
and then not Is_Eliminated (Defining_Entity (Comp))
then
Sub := Sub :=
Make_Subprogram_Declaration (Loc, Make_Subprogram_Declaration (Loc,
Specification => Specification =>

View File

@ -732,7 +732,7 @@ begin
Namet.Lock; Namet.Lock;
Stringt.Lock; Stringt.Lock;
Check_Library_Items; -- For debugging pragma Debug (Check_Library_Items);
-- Here we call the back end to generate the output code -- Here we call the back end to generate the output code

View File

@ -75,4 +75,10 @@ package System.VxWorks.Ext is
function Set_Time_Slice (ticks : int) return int; function Set_Time_Slice (ticks : int) return int;
pragma Import (C, Set_Time_Slice, "kernelTimeSlice"); pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
type UINT64 is mod 2 ** Long_Long_Integer'Size;
function tickGet return UINT64;
-- "tickGet" not available for cert vThreads:
pragma Import (C, tickGet, "tick64Get");
end System.VxWorks.Ext; end System.VxWorks.Ext;