From bb6a856baf496a1b6fb5e6aa481776cdf2a399ef Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Tue, 31 Jul 2018 09:55:37 +0000 Subject: [PATCH] [Ada] Replace low-level calls to Ekind with high-level calls to Is_Formal High-level wrappers are easier to read. This change came up while reading some code related to GNATprove, but then uniformly applied to the entire frontend. For the few remaining membership tests that could be replaced by Is_Formal it is not obvious whether the high-level routine makes the code better. 2018-07-31 Piotr Trojanek gcc/ada/ * exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb, repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests with a wrapper routine. From-SVN: r263093 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/exp_aggr.adb | 2 +- gcc/ada/exp_ch4.adb | 2 +- gcc/ada/exp_ch6.adb | 4 ++-- gcc/ada/lib-xref.adb | 2 +- gcc/ada/repinfo.adb | 2 +- gcc/ada/sem_ch9.adb | 2 +- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index ed00e5450cf..861ea47fcb5 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2018-07-31 Piotr Trojanek + + * exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb, + repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests + with a wrapper routine. + 2018-07-31 Piotr Trojanek * ali.adb (Known_ALI_Lines): Remove 'F' as a prefix for lines diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index 65a06de303b..9d9ab6a63f0 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -7278,7 +7278,7 @@ package body Exp_Aggr is (Nkind (Expr_Q) = N_Type_Conversion or else (Is_Entity_Name (Expr_Q) - and then Ekind (Entity (Expr_Q)) in Formal_Kind)) + and then Is_Formal (Entity (Expr_Q)))) and then Tagged_Type_Expansion then Static_Components := False; diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 8dad953025b..b08cf37b600 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -12547,7 +12547,7 @@ package body Exp_Ch4 is Sel_Comp := Parent (Sel_Comp); end loop; - return Ekind (Entity (Prefix (Sel_Comp))) in Formal_Kind; + return Is_Formal (Entity (Prefix (Sel_Comp))); end Prefix_Is_Formal_Parameter; -- Start of processing for Has_Inferable_Discriminants diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index ef6406d203e..2ac5db67d54 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -6799,7 +6799,7 @@ package body Exp_Ch6 is and then (Nkind_In (Exp, N_Type_Conversion, N_Unchecked_Type_Conversion) or else (Is_Entity_Name (Exp) - and then Ekind (Entity (Exp)) in Formal_Kind)) + and then Is_Formal (Entity (Exp)))) then -- When the return type is limited, perform a check that the tag of -- the result is the same as the tag of the return type. @@ -6877,7 +6877,7 @@ package body Exp_Ch6 is or else Nkind_In (Exp, N_Type_Conversion, N_Unchecked_Type_Conversion) or else (Is_Entity_Name (Exp) - and then Ekind (Entity (Exp)) in Formal_Kind) + and then Is_Formal (Entity (Exp))) or else Scope_Depth (Enclosing_Dynamic_Scope (Etype (Exp))) > Scope_Depth (Enclosing_Dynamic_Scope (Scope_Id))) then diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb index eaa7aa64c49..b3ff4669f27 100644 --- a/gcc/ada/lib-xref.adb +++ b/gcc/ada/lib-xref.adb @@ -1034,7 +1034,7 @@ package body Lib.Xref is -- parameters may end up being marked as not coming from source -- although they are. Take these into account specially. - elsif GNATprove_Mode and then Ekind (E) in Formal_Kind then + elsif GNATprove_Mode and then Is_Formal (E) then Ent := E; -- Entity does not come from source, but is a derived subprogram and diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb index 9b10a38a97d..b2bc9ca40d3 100644 --- a/gcc/ada/repinfo.adb +++ b/gcc/ada/repinfo.adb @@ -428,7 +428,7 @@ package body Repinfo is List_Entities (E, Bytes_Big_Endian, True); - elsif Ekind (E) in Formal_Kind and then In_Subprogram then + elsif Is_Formal (E) and then In_Subprogram then null; elsif Ekind_In (E, E_Entry, diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb index b049930a176..09195560f48 100644 --- a/gcc/ada/sem_ch9.adb +++ b/gcc/ada/sem_ch9.adb @@ -2358,7 +2358,7 @@ package body Sem_Ch9 is if Object_Access_Level (Target_Obj) >= Scope_Depth (Outer_Ent) and then (not Is_Entity_Name (Target_Obj) - or else Ekind (Entity (Target_Obj)) not in Formal_Kind + or else not Is_Formal (Entity (Target_Obj)) or else Enclosing /= Scope (Entity (Target_Obj))) then Error_Msg_N -- 2.30.2