From 977ff5e02c6d2f9bfdabcf8b4e98b81e2d83e849 Mon Sep 17 00:00:00 2001 From: gingold Date: Sat, 24 Sep 2005 05:10:24 +0000 Subject: First import from sources --- translate/translation.ads | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 translate/translation.ads (limited to 'translate/translation.ads') diff --git a/translate/translation.ads b/translate/translation.ads new file mode 100644 index 000000000..2b885a8da --- /dev/null +++ b/translate/translation.ads @@ -0,0 +1,96 @@ +-- Iir to ortho translator. +-- Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold +-- +-- GHDL is free software; you can redistribute it and/or modify it under +-- the terms of the GNU General Public License as published by the Free +-- Software Foundation; either version 2, or (at your option) any later +-- version. +-- +-- GHDL is distributed in the hope that it will be useful, but WITHOUT 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 +-- along with GCC; see the file COPYING. If not, write to the Free +-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA +-- 02111-1307, USA. +with Iirs; use Iirs; +with Ortho_Nodes; +with Ortho_Ident; use Ortho_Ident; +with Types; use Types; + +package Translation is + -- Initialize the package: create internal nodes. + procedure Initialize; + + -- Translate (generate code) for design unit UNIT. + -- If MAIN is true, the unit is really the unit being compiled (not an + -- external unit). Code shouldn't be generated for external units. + procedure Translate (Unit : Iir_Design_Unit; Main : Boolean); + + -- Translate std.standard. + procedure Translate_Standard (Main : Boolean); + + -- Get the ortho node for subprogram declaration DECL. + function Get_Ortho_Decl (Subprg : Iir) return Ortho_Nodes.O_Dnode; + + -- Get the internal _RESOLV function for FUNC. + function Get_Resolv_Ortho_Decl (Func : Iir) return Ortho_Nodes.O_Dnode; + + procedure Finalize; + + package Chap12 is + -- Primary unit + secondary unit (architecture name which may be null) + -- to elaborate. + procedure Elaborate (Primary : String; + Secondary : String; + Filelist : String; + Whole : Boolean); + end Chap12; + + -- If set, generate Run-Time Information nodes. + Flag_Rti : Boolean := True; + + -- If set, do not generate 64 bits integer types and operations. + Flag_Only_32b : Boolean := False; + + -- If set, do not generate code for unused subprograms. + -- Be careful: unless you are in whole compilation mode, this + -- flag shouldn't be set for packages and entities. + Flag_Discard_Unused : Boolean := False; + + -- If set, do not generate code for unused implicit subprograms. + Flag_Discard_Unused_Implicit : Boolean := False; + + type Foreign_Kind_Type is (Foreign_Unknown, + Foreign_Vhpidirect, + Foreign_Intrinsic); + + type Foreign_Info_Type (Kind : Foreign_Kind_Type := Foreign_Unknown) + is record + Subprg : O_Ident; + + case Kind is + when Foreign_Unknown => + null; + when Foreign_Vhpidirect => + Lib : Name_Id; + when Foreign_Intrinsic => + null; + end case; + end record; + + Foreign_Bad : constant Foreign_Info_Type := (Kind => Foreign_Unknown, + Subprg => O_Ident_Nul); + + -- Return a foreign_info for DECL. + -- Can generate error messages, if the attribute expression is ill-formed. + -- If EXTRACT_NAME is set, internal fields of foreign_info are set. + -- Otherwise, only KIND discriminent is set. + -- EXTRACT_NAME should be set only inside translation itself, since the + -- name can be based on the prefix. + function Translate_Foreign_Id (Decl : Iir; Extract_Name : Boolean) + return Foreign_Info_Type; + +end Translation; -- cgit v1.2.3