Commit 9c41193c by Javier Miranda Committed by Arnaud Charlet

exp_cg.adb, [...]: Add initial support for dispatch table/callgraph info generation.

2010-06-18  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb, exp_cg.ads, exp_disp.adb, gnat1drv.adb: Add initial
	support for dispatch table/callgraph info generation.
	* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r160997
parent 8a45b58c
2010-06-18 Javier Miranda <miranda@adacore.com>
* exp_cg.adb, exp_cg.ads, exp_disp.adb, gnat1drv.adb: Add initial
support for dispatch table/callgraph info generation.
* gcc-interface/Make-lang.in: Update dependencies.
2010-06-18 Robert Dewar <dewar@adacore.com>
* exp_ch6.adb: Minor reformatting.
......
------------------------------------------------------------------------------
-- --
-- GNAT COMPILER COMPONENTS --
-- --
-- E X P _ C G --
-- --
-- S p e c --
-- --
-- Copyright (C) 2010, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING3. If not, go to --
-- http://www.gnu.org/licenses for a complete copy of the license. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc. --
-- --
------------------------------------------------------------------------------
-- This package contains routines used to store and handle nodes required
-- to generate call graph information of dispatching calls.
with Types; use Types;
package Exp_CG is
procedure Generate_CG_Output;
-- Generate in the standard output the information associated with tagged
-- types declaration and dispatching calls
procedure Initialize;
-- Called at the start of compilation to initialize the table that stores
-- the tree nodes used by Generate_Output. This table is required because
-- the format of the output requires fully qualified names (and hence the
-- output must be generated after the source program has been compiled).
procedure Register_CG_Node (N : Node_Id);
-- Register a dispatching call node or the defining entity of a tagged
-- type declaration
end Exp_CG;
......@@ -31,6 +31,7 @@ with Elists; use Elists;
with Errout; use Errout;
with Exp_Atag; use Exp_Atag;
with Exp_Ch7; use Exp_Ch7;
with Exp_CG; use Exp_CG;
with Exp_Dbug; use Exp_Dbug;
with Exp_Tss; use Exp_Tss;
with Exp_Util; use Exp_Util;
......@@ -961,6 +962,10 @@ package body Exp_Disp is
Parameter_Associations => New_Params);
end if;
-- Register the dispatching call in the call graph nodes table
Register_CG_Node (Call_Node);
Rewrite (Call_Node, New_Call);
-- Suppress all checks during the analysis of the expanded code
......@@ -5969,6 +5974,10 @@ package body Exp_Disp is
end;
end if;
-- Register the tagged type in the call graph nodes table
Register_CG_Node (Typ);
return Result;
end Make_DT;
......
......@@ -30,6 +30,7 @@ with Csets; use Csets;
with Debug; use Debug;
with Elists;
with Errout; use Errout;
with Exp_CG;
with Fmap;
with Fname; use Fname;
with Fname.UF; use Fname.UF;
......@@ -596,6 +597,7 @@ begin
Nlists.Initialize;
Sinput.Initialize;
Sem.Initialize;
Exp_CG.Initialize;
Csets.Initialize;
Uintp.Initialize;
Urealp.Initialize;
......@@ -985,6 +987,10 @@ begin
Namet.Unlock;
-- Generate the call-graph output of dispatching calls
Exp_CG.Generate_CG_Output;
-- Validate unchecked conversions (using the values for size and
-- alignment annotated by the backend where possible).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment