[Ada] Adapt new extended traversal of AST to have optional part
authorYannick Moy <moy@adacore.com>
Mon, 12 Aug 2019 08:59:47 +0000 (08:59 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 12 Aug 2019 08:59:47 +0000 (08:59 +0000)
The new extended traversal of the AST for GNATprove use now optionally
traverses the ranges under Itypes, based on a formal parameter.

There is no impact on compilation.

2019-08-12  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_util.adb, sem_util.ads (Traverse_More_Func,
Traverse_More_Proc): Add formal parameter for Itypes traversal.

From-SVN: r274291

gcc/ada/ChangeLog
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads

index ca2030d95fcd935193c73c4d3f775ef1227b0beb..5e8fd9e1b59703f631e213b750dbe50bc431dbb8 100644 (file)
@@ -1,3 +1,8 @@
+2019-08-12  Yannick Moy  <moy@adacore.com>
+
+       * sem_util.adb, sem_util.ads (Traverse_More_Func,
+       Traverse_More_Proc): Add formal parameter for Itypes traversal.
+
 2019-08-12  Yannick Moy  <moy@adacore.com>
 
        * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New
index acc257cc3193bdbb0eaa4fff1cb3aeb70acc03a9..b56fa867bb604d82375dcd0442f50930da89cfdc 100644 (file)
@@ -25565,11 +25565,13 @@ package body Sem_Util is
                null;
          end case;
 
-         --  Then process unattached nodes which come from Itypes. This only
-         --  concerns currently ranges of scalar (possibly as index) types.
-         --  This traversal is protected against looping with Processing_Itype.
+         --  If Process_Itypes is True, process unattached nodes which come
+         --  from Itypes. This only concerns currently ranges of scalar
+         --  (possibly as index) types. This traversal is protected against
+         --  looping with Processing_Itype.
 
-         if not Processing_Itype
+         if Process_Itypes
+           and then not Processing_Itype
            and then Nkind (Node) in N_Has_Etype
            and then Present (Etype (Node))
            and then Is_Itype (Etype (Node))
@@ -25628,7 +25630,7 @@ package body Sem_Util is
    ------------------------
 
    procedure Traverse_More_Proc (Node : Node_Id) is
-      function Traverse is new Traverse_More_Func (Process);
+      function Traverse is new Traverse_More_Func (Process, Process_Itypes);
       Discard : Traverse_Final_Result;
       pragma Warnings (Off, Discard);
    begin
index 478f57073025b8eaabfadac4544f352d1ac99d5a..2c1f8a8be5bc22f4f7ce73e519ff2c1505425d7c 100644 (file)
@@ -2814,14 +2814,17 @@ package Sem_Util is
 
    generic
       with function Process (N : Node_Id) return Traverse_Result is <>;
+      Process_Itypes : Boolean := False;
    function Traverse_More_Func (Node : Node_Id) return Traverse_Final_Result;
    --  This is a version of Atree.Traverse_Func that not only traverses
    --  syntactic children of nodes, but also semantic children which are
    --  logically children of the node. This concerns currently lists of
    --  action nodes and ranges under Itypes, both inserted by the compiler.
+   --  Itypes are only traversed when Process_Itypes is True.
 
    generic
       with function Process (N : Node_Id) return Traverse_Result is <>;
+      Process_Itypes : Boolean := False;
    procedure Traverse_More_Proc (Node : Node_Id);
    pragma Inline (Traverse_More_Proc);
    --  This is the same as Traverse_More_Func except that no result is