From: Robert Dewar Date: Tue, 29 Jul 2014 14:06:20 +0000 (+0000) Subject: exp_ch5.adb, [...]: Minor comment additions. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0677a1c750acae35d74a1d45d95c42d883cd58a6;p=gcc.git exp_ch5.adb, [...]: Minor comment additions. 2014-07-29 Robert Dewar * 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 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 618eaa90495..e55202a064b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2014-07-29 Robert Dewar + + * 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 * exp_ch5.adb (Expand_N_Assignment_Statement): If the target type diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads index bcc22346796..98acec1d605 100644 --- a/gcc/ada/aspects.ads +++ b/gcc/ada/aspects.ads @@ -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 diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index 435f652de29..46e2fb4ed96 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -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)); diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 2152a0a9be6..3c376d19727 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -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; diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index d06361fa009..b61689696b6 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -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