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.

Tested on x86_64-pc-linux-gnu, committed on trunk

2018-07-31  Piotr Trojanek  <troja...@adacore.com>

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.
--- gcc/ada/exp_aggr.adb
+++ 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;

--- gcc/ada/exp_ch4.adb
+++ 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

--- gcc/ada/exp_ch6.adb
+++ 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

--- gcc/ada/lib-xref.adb
+++ 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

--- gcc/ada/repinfo.adb
+++ 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,

--- gcc/ada/sem_ch9.adb
+++ 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

Reply via email to