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-2021, 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 33with Bindo.Graphs; 34use Bindo.Graphs; 35use Bindo.Graphs.Invocation_Graphs; 36use Bindo.Graphs.Library_Graphs; 37 38package Bindo.Augmentors is 39 40 ------------------------------ 41 -- Library_Graph_Augmentors -- 42 ------------------------------ 43 44 package Library_Graph_Augmentors is 45 procedure Augment_Library_Graph (Inv_Graph : Invocation_Graph); 46 -- Augment the library graph of Inv_Graph with information from 47 -- invocation graph Inv_Graph as follows: 48 -- 49 -- 1) Traverse the invocation graph starting from each elaboration 50 -- procedure of unit Root. 51 -- 52 -- 2) Each time the traversal transitions from one unit into another 53 -- unit Curr, add an invocation edge between predecessor Curr and 54 -- successor Root in the library graph. 55 -- 56 -- 3) Do the above steps for all units with an elaboration procedure. 57 58 end Library_Graph_Augmentors; 59 60end Bindo.Augmentors; 61