diff options
author | Ed Schonberg <schonberg@adacore.com> | 2018-06-11 09:17:45 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-06-11 09:17:45 +0000 |
commit | acc257bbf0fe5cc6560d8fe1607d1be64528a96f (patch) | |
tree | 014db8c7eae722bd15cacfc3cba00dfa01251afe | |
parent | d6cb71164c56dd1b1f53acbb08f9fd5debc533df (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/exp_ch7.adb | 10 |
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; |