[Ada] Implement AI12-0073 (Ravenscar disallows Synchronous_Barriers)
2020-06-08 Steve Baird <baird@adacore.com> gcc/ada/ * sem_prag.adb (Analyze_Pragma.Set_Ravenscar_Profile): Add appropriate call to Set_Restriction_No_Dependence if Ada_Version >= Ada2012 and Profile is either Ravenscar or a GNAT-defined Ravenscar variant (i.e., not Jorvik).
This commit is contained in:
parent
63408d0eb2
commit
48b799ea9a
@ -11283,10 +11283,6 @@ package body Sem_Prag is
|
|||||||
-- No_Dependence => Ada.Execution_Time.Group_Budget
|
-- No_Dependence => Ada.Execution_Time.Group_Budget
|
||||||
-- No_Dependence => Ada.Execution_Time.Timers
|
-- No_Dependence => Ada.Execution_Time.Timers
|
||||||
|
|
||||||
-- ??? Eventually when AI12-0073 is implemented, we'll register a
|
|
||||||
-- No_Dependence restriction on Ada.Synchronous_Barriers
|
|
||||||
-- for Ravenscar but not for Jorvik.
|
|
||||||
|
|
||||||
if Ada_Version >= Ada_2005 then
|
if Ada_Version >= Ada_2005 then
|
||||||
Pref_Id := Make_Identifier (Loc, Name_Find ("ada"));
|
Pref_Id := Make_Identifier (Loc, Name_Find ("ada"));
|
||||||
Sel_Id := Make_Identifier (Loc, Name_Find ("execution_time"));
|
Sel_Id := Make_Identifier (Loc, Name_Find ("execution_time"));
|
||||||
@ -11325,7 +11321,7 @@ package body Sem_Prag is
|
|||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- Set the following restriction which was added to Ada 2012 (see
|
-- Set the following restriction which was added to Ada 2012 (see
|
||||||
-- AI-0171):
|
-- AI05-0171):
|
||||||
-- No_Dependence => System.Multiprocessors.Dispatching_Domains
|
-- No_Dependence => System.Multiprocessors.Dispatching_Domains
|
||||||
|
|
||||||
if Ada_Version >= Ada_2012 then
|
if Ada_Version >= Ada_2012 then
|
||||||
@ -11350,7 +11346,32 @@ package body Sem_Prag is
|
|||||||
(Unit => Nod,
|
(Unit => Nod,
|
||||||
Warn => Treat_Restrictions_As_Warnings,
|
Warn => Treat_Restrictions_As_Warnings,
|
||||||
Profile => Ravenscar);
|
Profile => Ravenscar);
|
||||||
|
|
||||||
|
-- Set the following restriction which was added to Ada 2020,
|
||||||
|
-- but as a binding interpretation:
|
||||||
|
-- No_Dependence => Ada.Synchronous_Barriers
|
||||||
|
-- for Ravenscar (and therefore for Ravenscar variants) but not
|
||||||
|
-- for Jorvik. The unit Ada.Synchronous_Barriers was introduced
|
||||||
|
-- in Ada2012 (AI05-0174).
|
||||||
|
|
||||||
|
if Profile /= Jorvik then
|
||||||
|
Pref_Id := Make_Identifier (Loc, Name_Find ("ada"));
|
||||||
|
Sel_Id := Make_Identifier (Loc, Name_Find
|
||||||
|
("synchronous_barriers"));
|
||||||
|
|
||||||
|
Nod :=
|
||||||
|
Make_Selected_Component
|
||||||
|
(Sloc => Loc,
|
||||||
|
Prefix => Pref_Id,
|
||||||
|
Selector_Name => Sel_Id);
|
||||||
|
|
||||||
|
Set_Restriction_No_Dependence
|
||||||
|
(Unit => Nod,
|
||||||
|
Warn => Treat_Restrictions_As_Warnings,
|
||||||
|
Profile => Ravenscar);
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
end Set_Ravenscar_Profile;
|
end Set_Ravenscar_Profile;
|
||||||
|
|
||||||
-- Start of processing for Analyze_Pragma
|
-- Start of processing for Analyze_Pragma
|
||||||
|
Loading…
Reference in New Issue
Block a user