exp_ch5.adb, [...]: Minor comment additions.
authorRobert Dewar <dewar@adacore.com>
Tue, 29 Jul 2014 14:06:20 +0000 (14:06 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 29 Jul 2014 14:06:20 +0000 (16:06 +0200)
2014-07-29  Robert Dewar  <dewar@adacore.com>

* exp_ch5.adb, exp_ch9.adb: Minor comment additions.
* gnat_rm.texi: Complete list of implementation aspects.
* aspects.ads: Minor comment clarification.

From-SVN: r213196

gcc/ada/ChangeLog
gcc/ada/aspects.ads
gcc/ada/exp_ch5.adb
gcc/ada/exp_ch9.adb
gcc/ada/gnat_rm.texi

index 618eaa90495321b42963288ca61dc079f5620c93..e55202a064b73244e1ec8ecf83276d390947f5cb 100644 (file)
@@ -1,3 +1,9 @@
+2014-07-29  Robert Dewar  <dewar@adacore.com>
+
+       * exp_ch5.adb, exp_ch9.adb: Minor comment additions.
+       * gnat_rm.texi: Complete list of implementation aspects.
+       * aspects.ads: Minor comment clarification.
+
 2014-07-29  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_ch5.adb (Expand_N_Assignment_Statement): If the target type
index bcc223467969b1e465c15278c23607bebeab0f5d..98acec1d6058686419d90d1fa2ad4be4fb85b5eb 100644 (file)
@@ -194,7 +194,7 @@ package Aspects is
       Aspect_Volatile_Components,
 
       --  Aspects that have a static boolean value but don't correspond to
-      --  pragmas
+      --  pragmas with a single argument that it is the entity in question.
 
       Aspect_Lock_Free);                    -- GNAT
 
index 435f652de292470d0c2898274fddd18fdeec64aa..46e2fb4ed965f0b56e4b9899c20600d2a15dda49 100644 (file)
@@ -2001,6 +2001,13 @@ package body Exp_Ch5 is
       if Is_Access_Type (Typ)
         and then Can_Never_Be_Null (Etype (Lhs))
         and then not Can_Never_Be_Null (Etype (Rhs))
+
+        --  If an actual is an out parameter of a null-excluding access
+        --  type, there is access check on entry, so we set the flag
+        --  Suppress_Assignment_Checks on the generated statement to
+        --  assign the actual to the parameter block, and we do not want
+        --  to generate an additional check at this point.
+
         and then not Suppress_Assignment_Checks (N)
       then
          Apply_Constraint_Check (Rhs, Etype (Lhs));
index 2152a0a9be6e27b6e32cf6415e84a0616522c901..3c376d19727f31159d829c4660c3669e13d3b435 100644 (file)
@@ -4768,6 +4768,12 @@ package body Exp_Ch9 is
                        Make_Assignment_Statement (Loc,
                          Name => N_Var,
                          Expression => Relocate_Node (Actual)));
+
+                     --  If actual is an out parameter of a null-excluding
+                     --  access type, there is access check on entry, so set
+                     --  Suppress_Assignment_Checks on the generated statement
+                     --  that assigns the actual to the parameter block
+
                      Set_Suppress_Assignment_Checks (Last (Stats));
                   end if;
 
index d06361fa009e272aa4cd139f1a0cbe1a0a07e32e..b61689696b691d043085b2ec30fb78146963e1ab 100644 (file)
@@ -1,4 +1,3 @@
-
 \input texinfo   @c -*-texinfo-*-
 
 @c %**start of header
@@ -308,6 +307,7 @@ Implementation Defined Aspects
 * Aspect Initializes::
 * Aspect Inline_Always::
 * Aspect Invariant::
+* Aspect Iterable::
 * Aspect Linker_Section::
 * Aspect Object_Size::
 * Aspect Part_Of::
@@ -369,8 +369,8 @@ Implementation Defined Attributes
 * Attribute Implicit_Dereference::
 * Attribute Integer_Value::
 * Attribute Invalid_Value::
-* Attribute Iterator_Element::
 * Attribute Iterable::
+* Attribute Iterator_Element::
 * Attribute Large::
 * Attribute Library_Level::
 * Attribute Lock_Free::
@@ -4493,7 +4493,7 @@ end IO_Card;
 @end smallexample
 
 @node Pragma Lock_Free
-@unnumberedsec Pragma Locl_Free
+@unnumberedsec Pragma Lock_Free
 @findex Lock_Free
 @noindent
 Syntax:
@@ -8122,6 +8122,7 @@ clause.
 * Aspect Initializes::
 * Aspect Inline_Always::
 * Aspect Invariant::
+* Aspect Iterable::
 * Aspect Linker_Section::
 * Aspect Lock_Free::
 * Aspect Object_Size::
@@ -8344,6 +8345,12 @@ This aspect is equivalent to pragma @code{Invariant}. It is a
 synonym for the language defined aspect @code{Type_Invariant} except
 that it is separately controllable using pragma @code{Assertion_Policy}.
 
+@node Aspect Iterable
+@unnumberedsec Aspect Iterable
+@findex Iterable
+@noindent
+PLEASE ADD DOCUMENTATION HERE???
+
 @node Aspect Linker_Section
 @unnumberedsec Aspect Linker_Section
 @findex Linker_Section