restrict.ads, [...] (Check_Implicit_Dynamic_Code_Allowed): New procedure to be called from the back end to check the...

2007-12-06  Bob Duff  <duff@adacore.com>

	* restrict.ads, restrict.adb (Check_Implicit_Dynamic_Code_Allowed): New
	procedure to be called from the back end to check the
	No_Implicit_Dynamic_Code restriction.

From-SVN: r130847
This commit is contained in:
Bob Duff 2007-12-13 11:28:48 +01:00 committed by Arnaud Charlet
parent 6c1f47ee4b
commit cadf64d1d5
2 changed files with 17 additions and 11 deletions

View File

@ -101,19 +101,18 @@ package body Restrict is
procedure Check_Elaboration_Code_Allowed (N : Node_Id) is
begin
-- Avoid calling Namet.Unlock/Lock except when there is an error.
-- Even in the error case it is a bit dubious, either gigi needs
-- the table locked or it does not! ???
if Restrictions.Set (No_Elaboration_Code)
and then not Suppress_Restriction_Message (N)
then
Namet.Unlock;
Check_Restriction (No_Elaboration_Code, N);
Namet.Lock;
end if;
Check_Restriction (No_Elaboration_Code, N);
end Check_Elaboration_Code_Allowed;
-----------------------------------------
-- Check_Implicit_Dynamic_Code_Allowed --
-----------------------------------------
procedure Check_Implicit_Dynamic_Code_Allowed (N : Node_Id) is
begin
Check_Restriction (No_Implicit_Dynamic_Code, N);
end Check_Implicit_Dynamic_Code_Allowed;
----------------------------------
-- Check_No_Implicit_Heap_Alloc --
----------------------------------

View File

@ -207,6 +207,13 @@ package Restrict is
-- an elaboration routine. If elaboration code is not allowed, an error
-- message is posted on the node given as argument.
procedure Check_Implicit_Dynamic_Code_Allowed (N : Node_Id);
-- Tests to see if dynamic code generation (dynamically generated
-- trampolines, in particular) is allowed by the current restrictions
-- settings. This function is called by Gigi when it needs to generate code
-- that generates a trampoline. If not allowed, an error message is posted
-- on the node given as argument.
procedure Check_No_Implicit_Heap_Alloc (N : Node_Id);
-- Equivalent to Check_Restriction (No_Implicit_Heap_Allocations, N).
-- Provided for easy use by back end, which has to check this restriction.