+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
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
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));
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;
-
\input texinfo @c -*-texinfo-*-
@c %**start of header
* Aspect Initializes::
* Aspect Inline_Always::
* Aspect Invariant::
+* Aspect Iterable::
* Aspect Linker_Section::
* Aspect Object_Size::
* Aspect Part_Of::
* 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::
@end smallexample
@node Pragma Lock_Free
-@unnumberedsec Pragma Locl_Free
+@unnumberedsec Pragma Lock_Free
@findex Lock_Free
@noindent
Syntax:
* Aspect Initializes::
* Aspect Inline_Always::
* Aspect Invariant::
+* Aspect Iterable::
* Aspect Linker_Section::
* Aspect Lock_Free::
* Aspect Object_Size::
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