From cadf64d1d568ce60f0a0ac6014e6ad295b3448cc Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Thu, 13 Dec 2007 11:28:48 +0100 Subject: [PATCH] restrict.ads, [...] (Check_Implicit_Dynamic_Code_Allowed): New procedure to be called from the back end to check the... 2007-12-06 Bob Duff * 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 --- gcc/ada/restrict.adb | 21 ++++++++++----------- gcc/ada/restrict.ads | 7 +++++++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb index ac1d254f85ea..85134080835d 100644 --- a/gcc/ada/restrict.adb +++ b/gcc/ada/restrict.adb @@ -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 -- ---------------------------------- diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads index 11e7075685d2..e82449e59330 100644 --- a/gcc/ada/restrict.ads +++ b/gcc/ada/restrict.ads @@ -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. -- 2.47.2