standard_and_implementation_defined_restrictions.rst, [...]: Update documentation.
authorArnaud Charlet <charlet@adacore.com>
Tue, 19 Apr 2016 13:30:03 +0000 (13:30 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 19 Apr 2016 13:30:03 +0000 (15:30 +0200)
        * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
        gnat_rm.texi: Update documentation.

From-SVN: r235205

gcc/ada/ChangeLog
gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
gcc/ada/gnat_rm.texi

index 5fcbdc62d13b4acd97273adb42e53564ef1e4371..20f7ed2a33f0d8be3354193104c20eedecf554f1 100644 (file)
@@ -1,3 +1,8 @@
+2016-04-19  Arnaud Charlet  <charlet@adacore.com>
+
+       * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
+       gnat_rm.texi: Update documentation.
+
 2016-04-19  Olivier Hainque  <hainque@adacore.com>
 
        * par_sco.adb (Traverse_One, case N_Case_Statement):
index f338f0f2f4d5c01089f76d8576aaa53dc9bfc8ed..82a7544a8967d6ec3f9f38d33d5ef15c713757ba 100644 (file)
@@ -524,19 +524,15 @@ No_Multiple_Elaboration
 -----------------------
 .. index:: No_Multiple_Elaboration
 
-[GNAT] Normally each package contains a 16-bit counter used to check for access
-before elaboration, and to control multiple elaboration attempts.
-This counter is eliminated for units compiled with the static model
-of elaboration if restriction `No_Elaboration_Code`
-is active but because of
-the need to check for multiple elaboration in the general case, these
-counters cannot be eliminated if elaboration code may be present. The
-restriction `No_Multiple_Elaboration`
-allows suppression of these counters
-in static elaboration units even if they do have elaboration code. If this
-restriction is used, then the situations in which multiple elaboration is
-possible, including non-Ada main programs, and Stand Alone libraries, are not
-permitted, and will be diagnosed by the binder.
+[GNAT] When this restriction is active, we are not requesting control-flow
+preservation with -fpreserve-control-flow and the static elaboration model is
+used, the compiler is allowed to suppress the elaboration counter normally
+associated with the unit, even if the unit has elaboration code. This counter
+is typically used to check for access before elaboration and to control
+multiple elaboration attempts. If the restriction is used, then the
+situations in which multiple elaboration is possible, including non-Ada main
+programs and Stand Alone libraries, are not permitted and will be diagnosed
+by the binder.
 
 No_Nested_Finalization
 ----------------------
@@ -880,6 +876,12 @@ Note that this the implementation of this restriction requires full
 code generation. If it is used in conjunction with "semantics only"
 checking, then some cases of violations may be missed.
 
+When this restriction is active, we are not requesting control-flow
+preservation with -fpreserve-control-flow and the static elaboration model is
+used, the compiler is allowed to suppress the elaboration counter normally
+associated with the unit, used to check for access before elaboration and to
+control.
+
 No_Dynamic_Sized_Objects
 ------------------------
 .. index:: No_Dynamic_Sized_Objects
index 405aa5a26f2a74dd6dbea572945a44717a4be192..4201a56bd80138be043d700d4cce10fb2b8c275f 100644 (file)
@@ -21,7 +21,7 @@
 
 @copying
 @quotation
-GNAT Reference Manual , November 18, 2015
+GNAT Reference Manual , April 19, 2016
 
 AdaCore
 
@@ -12112,19 +12112,15 @@ Long_Integer'Size.
 
 @geindex No_Multiple_Elaboration
 
-[GNAT] Normally each package contains a 16-bit counter used to check for access
-before elaboration, and to control multiple elaboration attempts.
-This counter is eliminated for units compiled with the static model
-of elaboration if restriction @cite{No_Elaboration_Code}
-is active but because of
-the need to check for multiple elaboration in the general case, these
-counters cannot be eliminated if elaboration code may be present. The
-restriction @cite{No_Multiple_Elaboration}
-allows suppression of these counters
-in static elaboration units even if they do have elaboration code. If this
-restriction is used, then the situations in which multiple elaboration is
-possible, including non-Ada main programs, and Stand Alone libraries, are not
-permitted, and will be diagnosed by the binder.
+[GNAT] When this restriction is active, we are not requesting control-flow
+preservation with -fpreserve-control-flow and the static elaboration model is
+used, the compiler is allowed to suppress the elaboration counter normally
+associated with the unit, even if the unit has elaboration code. This counter
+is typically used to check for access before elaboration and to control
+multiple elaboration attempts. If the restriction is used, then the
+situations in which multiple elaboration is possible, including non-Ada main
+programs and Stand Alone libraries, are not permitted and will be diagnosed
+by the binder.
 
 @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
 @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{19e}
@@ -12602,6 +12598,12 @@ Note that this the implementation of this restriction requires full
 code generation. If it is used in conjunction with "semantics only"
 checking, then some cases of violations may be missed.
 
+When this restriction is active, we are not requesting control-flow
+preservation with -fpreserve-control-flow and the static elaboration model is
+used, the compiler is allowed to suppress the elaboration counter normally
+associated with the unit, used to check for access before elaboration and to
+control.
+
 @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Elaboration_Code,Program Unit Level Restrictions
 @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{1bf}
 @subsection No_Dynamic_Sized_Objects