aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch4.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2013-04-24 16:38:50 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2013-04-24 16:38:50 +0200
commit24778dbb9a732e8c626807b1a5f4bfe8cec09a58 (patch)
tree5d9560ad2ff07bd6a8cc33c873fd6dcf04cff4a0 /gcc/ada/sem_ch4.adb
parent8a8ac7e3bd0d316ec3f809e29574e9900847d26a (diff)
downloadgcc-24778dbb9a732e8c626807b1a5f4bfe8cec09a58.zip
gcc-24778dbb9a732e8c626807b1a5f4bfe8cec09a58.tar.gz
gcc-24778dbb9a732e8c626807b1a5f4bfe8cec09a58.tar.bz2
[multiple changes]
2013-04-24 Ed Schonberg <schonberg@adacore.com> * sem_ch7.adb (Swap_Private_Dependents): New internal routine to Install_Private_Declarations, to make the installation of private dependents recursive in the presence of child units. * sem_ch3.adb (Build_Discriminated_Subtype): Initialize properly the Private_Dependents of a private subtype. 2013-04-24 Hristian Kirtchev <kirtchev@adacore.com> * exp_attr.adb (Expand_Loop_Entry_Attribute): Update the retrieval of the block declarations. * par-ch4.adb (P_Name): Let the name parsing machinery create a sequence of nested indexed components for attribute Loop_Entry. * sem_attr.adb (Analyze_Attribute): Add local constant Context. Reimplement part of the analysis of attribute Loop_Entry. (Convert_To_Indexed_Component): Removed. * sem_ch4.adb (Analyze_Indexed_Component_Form): Do not analyze an indexed component after it has been rewritten into attribute Loop_Entry. From-SVN: r198240
Diffstat (limited to 'gcc/ada/sem_ch4.adb')
-rw-r--r--gcc/ada/sem_ch4.adb14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index e78ce33..ae69805 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -2388,12 +2388,20 @@ package body Sem_Ch4 is
Analyze (P);
+ -- If P is an explicit dereference whose prefix is of a remote access-
+ -- to-subprogram type, then N has already been rewritten as a subprogram
+ -- call and analyzed.
+
if Nkind (N) in N_Subprogram_Call then
+ return;
- -- If P is an explicit dereference whose prefix is of a
- -- remote access-to-subprogram type, then N has already
- -- been rewritten as a subprogram call and analyzed.
+ -- When the prefix is attribute 'Loop_Entry and the sole expression of
+ -- the indexed component denotes a loop name, the indexed form is turned
+ -- into an attribute reference.
+ elsif Nkind (N) = N_Attribute_Reference
+ and then Attribute_Name (N) = Name_Loop_Entry
+ then
return;
end if;