aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2014-07-29 14:06:20 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2014-07-29 16:06:20 +0200
commit0677a1c750acae35d74a1d45d95c42d883cd58a6 (patch)
treeda5ba93a5a6ca466899d415a599ede72f05785d6
parenta2cc9797dfc084b28934de307d1e0254753121f8 (diff)
downloadgcc-0677a1c750acae35d74a1d45d95c42d883cd58a6.zip
gcc-0677a1c750acae35d74a1d45d95c42d883cd58a6.tar.gz
gcc-0677a1c750acae35d74a1d45d95c42d883cd58a6.tar.bz2
exp_ch5.adb, [...]: Minor comment additions.
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
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/aspects.ads2
-rw-r--r--gcc/ada/exp_ch5.adb7
-rw-r--r--gcc/ada/exp_ch9.adb6
-rw-r--r--gcc/ada/gnat_rm.texi13
5 files changed, 30 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 618eaa9..e55202a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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
diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads
index bcc2234..98acec1 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 435f652..46e2fb4 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 2152a0a..3c376d1 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 d06361f..b616896 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