X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=gcc%2Fada%2Finline.ads;fp=gcc%2Fada%2Finline.ads;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=8386663f6e38ccf2e7ca27d72025bf2de33e73cc;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/gcc/ada/inline.ads b/gcc/ada/inline.ads deleted file mode 100644 index 8386663f..00000000 --- a/gcc/ada/inline.ads +++ /dev/null @@ -1,134 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT COMPILER COMPONENTS -- --- -- --- I N L I N E -- --- -- --- S p e c -- --- -- --- $Revision: 1.1.16.1 $ --- -- --- Copyright (C) 1992-2001 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 2, 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 COPYING. If not, write -- --- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- --- MA 02111-1307, USA. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This module handles two kinds of inlining activity: - --- a) Instantiation of generic bodies. This is done unconditionally, after --- analysis and expansion of the main unit. - --- b) Compilation of unit bodies that contain the bodies of inlined sub- --- programs. This is done only if inlining is enabled (-gnatn). Full inlining --- requires that a) an b) be mutually recursive, because each step may --- generate another generic expansion and further inlined calls. For now each --- of them uses a workpile algorithm, but they are called independently from --- Frontend, and thus are not mutually recursive. - -with Alloc; -with Table; -with Types; use Types; - -package Inline is - - -------------------------------- - -- Generic Body Instantiation -- - -------------------------------- - - -- The bodies of generic instantiations are built after semantic analysis - -- of the main unit is complete. Generic instantiations are saved in a - -- global data structure, and the bodies constructed by means of a separate - -- analysis and expansion step. - - -- See full description in body of Sem_Ch12 for details - - type Pending_Body_Info is record - Inst_Node : Node_Id; - -- Node for instantiation that requires the body - - Act_Decl : Node_Id; - -- Declaration for package or subprogram spec for instantiation - - Expander_Status : Boolean; - -- If the body is instantiated only for semantic checking, expansion - -- must be inhibited. - - Current_Sem_Unit : Unit_Number_Type; - -- The semantic unit within which the instantiation is found. Must - -- be restored when compiling the body, to insure that internal enti- - -- ties use the same counter and are unique over spec and body. - end record; - - package Pending_Instantiations is new Table.Table ( - Table_Component_Type => Pending_Body_Info, - Table_Index_Type => Int, - Table_Low_Bound => 0, - Table_Initial => Alloc.Pending_Instantiations_Initial, - Table_Increment => Alloc.Pending_Instantiations_Increment, - Table_Name => "Pending_Instantiations"); - - -- The following table records subprograms and packages for which - -- generation of subprogram descriptors must be delayed. - - package Pending_Descriptor is new Table.Table ( - Table_Component_Type => Entity_Id, - Table_Index_Type => Int, - Table_Low_Bound => 0, - Table_Initial => Alloc.Pending_Instantiations_Initial, - Table_Increment => Alloc.Pending_Instantiations_Increment, - Table_Name => "Pending_Descriptor"); - - Analyzing_Inlined_Bodies : Boolean; - -- This flag is set False by the call to Initialize, and then is set - -- True by the call to Analyze_Inlined_Bodies. It is used to suppress - -- generation of subprogram descriptors for inlined bodies. - - ----------------- - -- Subprograms -- - ----------------- - - procedure Initialize; - -- Initialize internal tables - - procedure Lock; - -- Lock internal tables before calling backend - - procedure Instantiate_Bodies; - -- This procedure is called after semantic analysis is complete, to - -- instantiate the bodies of generic instantiations that appear in the - -- compilation unit. - - procedure Add_Inlined_Body (E : Entity_Id); - -- E is an inlined subprogram appearing in a call, either explicitly, or - -- a discriminant check for which gigi builds a call. Add E's enclosing - -- unit to Inlined_Bodies so that body of E can be subsequently retrieved - -- and analyzed. - - procedure Analyze_Inlined_Bodies; - -- At end of compilation, analyze the bodies of all units that contain - -- inlined subprograms that are actually called. - - procedure Check_Body_For_Inlining (N : Node_Id; P : Entity_Id); - -- If front-end inlining is enabled and a package declaration contains - -- inlined subprograms, load and compile the package body to collect the - -- bodies of these subprograms, so they are available to inline calls. - -- N is the compilation unit for the package. - - procedure Remove_Dead_Instance (N : Node_Id); - -- If an instantiation appears in unreachable code, delete the pending - -- body instance. - -end Inline;