aboutsummaryrefslogtreecommitdiffstats
path: root/ortho/gcc34/ortho_gcc.private.ads
diff options
context:
space:
mode:
Diffstat (limited to 'ortho/gcc34/ortho_gcc.private.ads')
-rw-r--r--ortho/gcc34/ortho_gcc.private.ads122
1 files changed, 122 insertions, 0 deletions
diff --git a/ortho/gcc34/ortho_gcc.private.ads b/ortho/gcc34/ortho_gcc.private.ads
new file mode 100644
index 000000000..c4a0135e1
--- /dev/null
+++ b/ortho/gcc34/ortho_gcc.private.ads
@@ -0,0 +1,122 @@
+-- Ortho implementation for GCC.
+-- 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 Agcc.Trees; use Agcc.Trees;
+
+package Ortho_Nodes is
+ -- PUBLIC PART is defined in ortho_nodes.common.ads
+ type O_Cnode is private;
+ type O_Dnode is private;
+ type O_Enode is private;
+ type O_Fnode is private;
+ type O_Lnode is private;
+ type O_Tnode is private;
+ type O_Snode is private;
+
+ -- Alloca builtin, to be set during initialization.
+ Alloca_Function_Ptr : Tree;
+
+ -- Must be called during initialization, before use of any subprograms.
+ procedure Init;
+private
+ type O_Cnode is new Tree;
+ type O_Dnode is new Tree;
+ type O_Enode is new Tree;
+ type O_Fnode is new Tree;
+ type O_Lnode is new Tree;
+ type O_Tnode is new Tree;
+ type O_Snode is new Nesting;
+
+ O_Cnode_Null : constant O_Cnode := O_Cnode (NULL_TREE);
+ O_Dnode_Null : constant O_Dnode := O_Dnode (NULL_TREE);
+ O_Enode_Null : constant O_Enode := O_Enode (NULL_TREE);
+ O_Fnode_Null : constant O_Fnode := O_Fnode (NULL_TREE);
+ O_Lnode_Null : constant O_Lnode := O_Lnode (NULL_TREE);
+ O_Tnode_Null : constant O_Tnode := O_Tnode (NULL_TREE);
+ O_Snode_Null : constant O_Snode := O_Snode (Nesting_Null);
+
+
+ -- Efficiently append element EL to a chain.
+ -- FIRST is the first element of the chain (must NULL_TREE if the chain
+ -- is empty),
+ -- LAST is the last element of the chain (idem).
+ type Chain_Constr_Type is record
+ First : Tree;
+ Last : Tree;
+ end record;
+ procedure Chain_Init (Constr : out Chain_Constr_Type);
+ procedure Chain_Append (Constr : in out Chain_Constr_Type; El : Tree);
+
+ -- Efficiently append element EL to a list.
+ type List_Constr_Type is record
+ First : Tree;
+ Last : Tree;
+ end record;
+ procedure List_Init (Constr : out List_Constr_Type);
+ procedure List_Append (Constr : in out List_Constr_Type; El : Tree);
+
+ type O_Inter_List is record
+ Ident : O_Ident;
+ Storage : O_Storage;
+ -- Return type.
+ Rtype : O_Tnode;
+ -- List of parameter types.
+ Param_List : List_Constr_Type;
+ -- Chain of parameters declarations.
+ Param_Chain : Chain_Constr_Type;
+ end record;
+
+ type O_Element_List is record
+ Res : Tree;
+ Chain : Chain_Constr_Type;
+ end record;
+
+ type O_Case_Block is record
+ Expr : Tree;
+ First : Boolean;
+ Label : Tree;
+ end record;
+
+ type O_If_Block is record
+ null;
+ end record;
+
+ type O_Aggr_List is record
+ Atype : Tree;
+ Chain : Chain_Constr_Type;
+ end record;
+
+ type O_Record_Aggr_List is new O_Aggr_List;
+ type O_Array_Aggr_List is new O_Aggr_List;
+
+ type O_Assoc_List is record
+ Subprg : Tree;
+ List : List_Constr_Type;
+ end record;
+
+ type O_Enum_List is record
+ -- The enumeral_type node.
+ Res : Tree;
+ -- Chain of literals.
+ Chain : Chain_Constr_Type;
+ -- Numeral value (from 0 to nbr - 1) of the next literal to be declared.
+ Num : Natural;
+ -- Size of the enumeration type.
+ Size : Natural;
+ end record;
+
+end Ortho_Nodes;