aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog7
-rw-r--r--gcc/ada/sem_ch9.adb8
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 6f04f77..c875ac3 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2019-07-05 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
+ accept statement for an enclosing entry abandon analysis to
+ prevent scope mismatches and potential infinite loops in
+ compiler.
+
2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
* ali.adb (For_Each_Invocation_Construct,
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index a71c35c..19fff57 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -883,7 +883,13 @@ package body Sem_Ch9 is
exit when Task_Nam = Scope_Stack.Table (J).Entity;
if Entry_Nam = Scope_Stack.Table (J).Entity then
- Error_Msg_N ("duplicate accept statement for same entry", N);
+ Error_Msg_N
+ ("duplicate accept statement for same entry (RM 9.5.2 (15))", N);
+
+ -- Do not continue analysis of accept statement, to prevent
+ -- cascaded errors.
+
+ return;
end if;
end loop;