summaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch9.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 16:24:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 16:24:37 +0000
commit4606d5a97a353a2f8437a7cf630b5405cee1d095 (patch)
treee85c08fdecea3c8ab0ac525dc1311885778f9026 /gcc/ada/exp_ch9.ads
parenta03d88529bd3869f487af494484d9b2005e3074c (diff)
downloadgcc-4606d5a97a353a2f8437a7cf630b5405cee1d095.tar.gz
2009-11-30 Ed Schonberg <schonberg@adacore.com>
* exp_ch9.ads (Build_Private_Protected_Declaration): For a protected operation that is only declared in a protected body, create a corresponding subprogram declaration. * exp_ch9.adb (Expand_N_Protected_Body): Create protected body of operation in all cases, including for an operation that is only declared in the body. * sem_ch6.adb: Call Build_Private_Protected_Declaration * exp_ch6.adb (Expand_N_Subprogram_Declaration): For an operation declared in a protected body, create the declaration for the corresponding protected version of the operation. 2009-11-30 Arnaud Charlet <charlet@adacore.com> * gnat1drv.adb (Adjust_Global_Switches): Disable specific expansions for Restrictions pragmas, to avoid tree inconsistencies between compilations with different pragmas. 2009-11-30 Jerome Lambourg <lambourg@adacore.com> * sem_prag.adb (Check_Duplicated_Export_Name): Allow entities exported to CIL to have duplicated export name. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154828 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_ch9.ads')
-rw-r--r--gcc/ada/exp_ch9.ads9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch9.ads b/gcc/ada/exp_ch9.ads
index 61279d4eac5..1bb810690e5 100644
--- a/gcc/ada/exp_ch9.ads
+++ b/gcc/ada/exp_ch9.ads
@@ -81,6 +81,15 @@ package Exp_Ch9 is
-- object at the outer level, but it is much easier to generate one per
-- declarative part.
+ function Build_Private_Protected_Declaration (N : Node_Id) return Entity_Id;
+ -- A subprogram body without a previous spec that appears in a protected
+ -- body must be expanded separately to create a subprogram declaration
+ -- for it, in order to resolve internal calls to it from other protected
+ -- operations. It would seem that no locking version of the operation is
+ -- needed, but in fact, in Ada2005 the subprogram may be used in a call-
+ -- back, and therefore a protected version of the operation must be
+ -- generated as well.
+
function Build_Protected_Sub_Specification
(N : Node_Id;
Prot_Typ : Entity_Id;