145
|
1 ------------------------------------------------------------------------------
|
|
2 -- --
|
|
3 -- GNAT COMPILER COMPONENTS --
|
|
4 -- --
|
|
5 -- B I N D O . A U G M E N T O R S --
|
|
6 -- --
|
|
7 -- S p e c --
|
|
8 -- --
|
|
9 -- Copyright (C) 2019, Free Software Foundation, Inc. --
|
|
10 -- --
|
|
11 -- GNAT is free software; you can redistribute it and/or modify it under --
|
|
12 -- terms of the GNU General Public License as published by the Free Soft- --
|
|
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
|
|
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
|
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
|
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
|
|
17 -- for more details. You should have received a copy of the GNU General --
|
|
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
|
|
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
|
|
20 -- --
|
|
21 -- GNAT was originally developed by the GNAT team at New York University. --
|
|
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
|
|
23 -- --
|
|
24 ------------------------------------------------------------------------------
|
|
25
|
|
26 -- For full architecture, see unit Bindo.
|
|
27
|
|
28 -- The following unit contains facilities to enhance the library graph, which
|
|
29 -- reflects source dependencies between units, with information obtained from
|
|
30 -- the invocation graph, which reflects all activations of tasks, calls, and
|
|
31 -- instantiations within units.
|
|
32
|
|
33 with Bindo.Graphs;
|
|
34 use Bindo.Graphs;
|
|
35 use Bindo.Graphs.Invocation_Graphs;
|
|
36 use Bindo.Graphs.Library_Graphs;
|
|
37
|
|
38 package Bindo.Augmentors is
|
|
39
|
|
40 ------------------------------
|
|
41 -- Library_Graph_Augmentors --
|
|
42 ------------------------------
|
|
43
|
|
44 package Library_Graph_Augmentors is
|
|
45 procedure Augment_Library_Graph
|
|
46 (Inv_Graph : Invocation_Graph;
|
|
47 Lib_Graph : Library_Graph);
|
|
48 -- Augment library graph Lib_Graph with information from invocation
|
|
49 -- graph Inv_Graph as follows:
|
|
50 --
|
|
51 -- 1) Traverse the invocation graph starting from each elaboration
|
|
52 -- procedure of unit Root.
|
|
53 --
|
|
54 -- 2) Each time the traversal transitions from one unit into another
|
|
55 -- unit Curr, add an invocation edge between predecessor Curr and
|
|
56 -- successor Root in the library graph.
|
|
57 --
|
|
58 -- 3) Do the above steps for all units with an elaboration procedure.
|
|
59
|
|
60 end Library_Graph_Augmentors;
|
|
61
|
|
62 end Bindo.Augmentors;
|