aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2018-06-11 09:17:45 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-06-11 09:17:45 +0000
commitacc257bbf0fe5cc6560d8fe1607d1be64528a96f (patch)
tree014db8c7eae722bd15cacfc3cba00dfa01251afe
parentd6cb71164c56dd1b1f53acbb08f9fd5debc533df (diff)
downloadgcc-acc257bbf0fe5cc6560d8fe1607d1be64528a96f.zip
gcc-acc257bbf0fe5cc6560d8fe1607d1be64528a96f.tar.gz
gcc-acc257bbf0fe5cc6560d8fe1607d1be64528a96f.tar.bz2
[Ada] Unnesting: robustify analysis of block statements
2018-06-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Add guard. From-SVN: r261409
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/exp_ch7.adb10
2 files changed, 9 insertions, 5 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index d0722f7..b8a5ea4 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,9 @@
2018-06-11 Ed Schonberg <schonberg@adacore.com>
+ * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Add guard.
+
+2018-06-11 Ed Schonberg <schonberg@adacore.com>
+
* exp_unst.adb (Visit_Node): Skip generic associations.
2018-06-11 Arnaud Charlet <charlet@adacore.com>
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index c3707bb..663d974 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -4002,10 +4002,8 @@ package body Exp_Ch7 is
then
Stat := First (Statements (Handled_Statement_Sequence (N)));
while Present (Stat) loop
- if Nkind (Stat) = N_Block_Statement then
- exit;
- end if;
-
+ exit when Nkind (Stat) = N_Block_Statement
+ and then Present (Identifier (Stat));
Next (Stat);
end loop;
@@ -4046,7 +4044,9 @@ package body Exp_Ch7 is
First (Statements (Handled_Statement_Sequence (Elab_Body)));
while Present (Stat) loop
- if Nkind (Stat) = N_Block_Statement then
+ if Nkind (Stat) = N_Block_Statement
+ and then Present (Identifier (Stat))
+ then
Set_Scope (Entity (Identifier (Stat)), Elab_Proc);
end if;