From 6af9261c73519a4c3e1a26376dc0b156ecd4aad6 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Mon, 28 May 2018 08:55:57 +0000 Subject: [PATCH] [Ada] Unnesting: allow uplevel references to exceptions 2018-05-28 Ed Schonberg gcc/ada/ * einfo.ads, einfo.adb: Exceptions can be uplevel references, and thus they can appear as components of activation records. * exp_unst.adb (Visit_Node): A reference to an exception may be an uplevel reference. From-SVN: r260840 --- gcc/ada/ChangeLog | 7 +++++++ gcc/ada/einfo.adb | 2 ++ gcc/ada/einfo.ads | 1 + gcc/ada/exp_unst.adb | 5 +++-- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 79df7a63e14..91ea8ec63cc 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2018-05-28 Ed Schonberg + + * einfo.ads, einfo.adb: Exceptions can be uplevel references, and thus + they can appear as components of activation records. + * exp_unst.adb (Visit_Node): A reference to an exception may be an + uplevel reference. + 2018-05-28 Eric Botcazou * exp_ch4.adb (Expand_Composite_Equality): Compute whether the size diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb index 8ff9562b975..fd77d411724 100644 --- a/gcc/ada/einfo.adb +++ b/gcc/ada/einfo.adb @@ -744,6 +744,7 @@ package body Einfo is begin pragma Assert (Ekind_In (Id, E_Constant, E_Discriminant, + E_Exception, E_In_Parameter, E_In_Out_Parameter, E_Loop_Parameter, @@ -3958,6 +3959,7 @@ package body Einfo is begin pragma Assert (Ekind_In (Id, E_Constant, E_Discriminant, + E_Exception, E_In_Parameter, E_In_Out_Parameter, E_Loop_Parameter, diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index 78504bb9a7b..665d5786b62 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -6106,6 +6106,7 @@ package Einfo is -- Renamed_Entity (Node18) -- Register_Exception_Call (Node20) -- Interface_Name (Node21) + -- Activation_Record_Component (Node31) -- Discard_Names (Flag88) -- Is_Raised (Flag224) diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb index f6d76503fe0..81f2a61cfb9 100644 --- a/gcc/ada/exp_unst.adb +++ b/gcc/ada/exp_unst.adb @@ -798,9 +798,10 @@ package body Exp_Unst is and then Chars (Enclosing_Subprogram (Ent)) /= Name_uParent and then - -- Constants and variables are interesting + -- Constants, variables and exceptions are potentially + -- uplevel references to global declarations. - (Ekind_In (Ent, E_Constant, E_Variable) + (Ekind_In (Ent, E_Constant, E_Exception, E_Variable) -- Formals are interesting, but not if being used as mere -- names of parameters for name notation calls. -- 2.30.2