aboutsummaryrefslogtreecommitdiffstats
path: root/nodes.ads
diff options
context:
space:
mode:
Diffstat (limited to 'nodes.ads')
-rw-r--r--nodes.ads862
1 files changed, 862 insertions, 0 deletions
diff --git a/nodes.ads b/nodes.ads
new file mode 100644
index 000000000..4fc3f1398
--- /dev/null
+++ b/nodes.ads
@@ -0,0 +1,862 @@
+-- Internal node type and operations.
+-- 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 Types; use Types;
+
+package Nodes is
+ type Node_Type is new Int32;
+ for Node_Type'Size use 32;
+
+ Null_Node : constant Node_Type := 0;
+ Error_Node : constant Node_Type := 1;
+
+ -- A simple type that needs only 2 bits.
+ type Bit2_Type is range 0 .. 2 ** 2 - 1;
+ type Bit3_Type is range 0 .. 2 ** 3 - 1;
+
+ type Kind_Type is range 0 .. 255;
+
+ -- Format of a node.
+ type Format_Type is
+ (
+ Format_Short,
+ Format_Medium,
+ Format_Fp,
+ Format_Int
+ );
+
+ -- Future layout: (rem)
+ -- Format: 0 bits 32
+ -- Nkind: 16 bits 16
+ -- Flags: 8*1 bits 8
+ -- State: 2*2 bits 4
+ -- Odigit is to be removed.
+
+ -- Future layout (2):(rem)
+ -- Format: 2 bits 30
+ -- Nkind: 8 bits 22 (vhdl: 216 nodes)
+ -- Flags: 8*1 bits 14
+ -- State: 2*2 bits 10
+ -- Lang: 2 bits 8
+ -- Odigit: 1*3 bits 5
+
+ -- Common fields are:
+ -- Flag1 : Boolean
+ -- Flag2 : Boolean
+ -- Flag3 : Boolean
+ -- Flag4 : Boolean
+ -- Flag5 : Boolean
+ -- Flag6 : Boolean
+ -- Nkind : Kind_Type
+ -- State1 : Bit2_Type
+ -- State2 : Bit2_Type
+ -- Location : Location_Type
+ -- Field0 : Iir
+ -- Field1 : Iir
+ -- Field2 : Iir
+ -- Field3 : Iir
+
+ -- Fields of Format_Fp:
+ -- Fp64 : Iir_Fp64
+
+ -- Fields of Format_Int:
+ -- Int64 : Iir_Int64
+
+ -- Fields of Format_Short:
+ -- Field4 : Iir
+ -- Field5 : Iir
+
+ -- Fields of Format_Medium:
+ -- Odigit1 : Bit3_Type
+ -- Odigit2 : Bit3_Type
+ -- State3 : Bit2_Type
+ -- State4 : Bit2_Type
+ -- Field4 : Iir
+ -- Field5 : Iir
+ -- Field6 : Iir (location)
+ -- Field7 : Iir (field0)
+ -- Field8 : Iir (field1)
+ -- Field9 : Iir (field2)
+ -- Field10 : Iir (field3)
+ -- Field11 : Iir (field4)
+ -- Field12 : Iir (field5)
+
+ function Create_Node (Format : Format_Type) return Node_Type;
+ procedure Free_Node (N : Node_Type);
+
+ function Get_Nkind (N : Node_Type) return Kind_Type;
+ pragma Inline (Get_Nkind);
+ procedure Set_Nkind (N : Node_Type; Kind : Kind_Type);
+ pragma Inline (Set_Nkind);
+
+ function Get_Location (N: Node_Type) return Location_Type;
+ pragma Inline (Get_Location);
+ procedure Set_Location (N : Node_Type; Location: Location_Type);
+ pragma Inline (Set_Location);
+
+ function Get_Field0 (N : Node_Type) return Node_Type;
+ pragma Inline (Get_Field0);
+ procedure Set_Field0 (N : Node_Type; V : Node_Type);
+ pragma Inline (Set_Field0);
+
+ function Get_Field1 (N : Node_Type) return Node_Type;
+ pragma Inline (Get_Field1);
+ procedure Set_Field1 (N : Node_Type; V : Node_Type);
+ pragma Inline (Set_Field1);
+
+ function Get_Field2 (N : Node_Type) return Node_Type;
+ pragma Inline (Get_Field2);
+ procedure Set_Field2 (N : Node_Type; V : Node_Type);
+ pragma Inline (Set_Field2);
+
+ function Get_Field3 (N : Node_Type) return Node_Type;
+ pragma Inline (Get_Field3);
+ procedure Set_Field3 (N : Node_Type; V : Node_Type);
+ pragma Inline (Set_Field3);
+
+ function Get_Field4 (N : Node_Type) return Node_Type;
+ pragma Inline (Get_Field4);
+ procedure Set_Field4 (N : Node_Type; V : Node_Type);
+ pragma Inline (Set_Field4);
+
+
+ function Get_Field5 (N : Node_Type) return Node_Type;
+ pragma Inline (Get_Field5);
+ procedure Set_Field5 (N : Node_Type; V : Node_Type);
+ pragma Inline (Set_Field5);
+
+ function Get_Field6 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field6);
+ procedure Set_Field6 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field6);
+
+ function Get_Field7 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field7);
+ procedure Set_Field7 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field7);
+
+ function Get_Field8 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field8);
+ procedure Set_Field8 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field8);
+
+ function Get_Field9 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field9);
+ procedure Set_Field9 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field9);
+
+ function Get_Field10 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field10);
+ procedure Set_Field10 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field10);
+
+ function Get_Field11 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field11);
+ procedure Set_Field11 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field11);
+
+ function Get_Field12 (N: Node_Type) return Node_Type;
+ pragma Inline (Get_Field12);
+ procedure Set_Field12 (N: Node_Type; Val: Node_Type);
+ pragma Inline (Set_Field12);
+
+
+ function Get_Flag1 (N : Node_Type) return Boolean;
+ pragma Inline (Get_Flag1);
+ procedure Set_Flag1 (N : Node_Type; V : Boolean);
+ pragma Inline (Set_Flag1);
+
+ function Get_Flag2 (N : Node_Type) return Boolean;
+ pragma Inline (Get_Flag2);
+ procedure Set_Flag2 (N : Node_Type; V : Boolean);
+ pragma Inline (Set_Flag2);
+
+ function Get_Flag3 (N : Node_Type) return Boolean;
+ pragma Inline (Get_Flag3);
+ procedure Set_Flag3 (N : Node_Type; V : Boolean);
+ pragma Inline (Set_Flag3);
+
+ function Get_Flag4 (N : Node_Type) return Boolean;
+ pragma Inline (Get_Flag4);
+ procedure Set_Flag4 (N : Node_Type; V : Boolean);
+ pragma Inline (Set_Flag4);
+
+ function Get_Flag5 (N : Node_Type) return Boolean;
+ pragma Inline (Get_Flag5);
+ procedure Set_Flag5 (N : Node_Type; V : Boolean);
+ pragma Inline (Set_Flag5);
+
+ function Get_Flag6 (N : Node_Type) return Boolean;
+ pragma Inline (Get_Flag6);
+ procedure Set_Flag6 (N : Node_Type; V : Boolean);
+ pragma Inline (Set_Flag6);
+
+
+ function Get_State1 (N : Node_Type) return Bit2_Type;
+ pragma Inline (Get_State1);
+ procedure Set_State1 (N : Node_Type; V : Bit2_Type);
+ pragma Inline (Set_State1);
+
+ function Get_State2 (N : Node_Type) return Bit2_Type;
+ pragma Inline (Get_State2);
+ procedure Set_State2 (N : Node_Type; V : Bit2_Type);
+ pragma Inline (Set_State2);
+
+ function Get_State3 (N : Node_Type) return Bit2_Type;
+ pragma Inline (Get_State3);
+ procedure Set_State3 (N : Node_Type; V : Bit2_Type);
+ pragma Inline (Set_State3);
+
+ function Get_State4 (N : Node_Type) return Bit2_Type;
+ pragma Inline (Get_State4);
+ procedure Set_State4 (N : Node_Type; V : Bit2_Type);
+ pragma Inline (Set_State4);
+
+
+ function Get_Odigit1 (N : Node_Type) return Bit3_Type;
+ pragma Inline (Get_Odigit1);
+ procedure Set_Odigit1 (N : Node_Type; V : Bit3_Type);
+ pragma Inline (Set_Odigit1);
+
+ function Get_Odigit2 (N : Node_Type) return Bit3_Type;
+ pragma Inline (Get_Odigit2);
+ procedure Set_Odigit2 (N : Node_Type; V : Bit3_Type);
+ pragma Inline (Set_Odigit2);
+
+
+ function Get_Fp64 (N : Node_Type) return Iir_Fp64;
+ pragma Inline (Get_Fp64);
+ procedure Set_Fp64 (N : Node_Type; V : Iir_Fp64);
+ pragma Inline (Set_Fp64);
+
+ function Get_Int64 (N : Node_Type) return Iir_Int64;
+ pragma Inline (Get_Int64);
+ procedure Set_Int64 (N : Node_Type; V : Iir_Int64);
+ pragma Inline (Set_Int64);
+
+ -- Get the last node allocated.
+ function Get_Last_Node return Node_Type;
+ pragma Inline (Get_Last_Node);
+
+ -- Free all and reinit.
+ procedure Initialize;
+private
+ type Node_Record (Format : Format_Type := Format_Short) is record
+
+ -- Usages of Flag1:
+ -- seen_flag for iir_kind_process_statement
+ -- seen_flag for iir_kind_sensitized_process_statement
+ -- seen_flag for iir_kinds_procedure_specification
+ -- seen_flag for iir_kinds_function_specification
+ -- seen_flag for iir_kind_design_file
+ -- deferred_declaration_flag for iir_kind_constant_declaration
+ -- loaded_flag for iir_kind_design_unit
+ -- resolved_flag for iir_kinds_type_definition
+ -- need_body for iir_kind_package_declaration
+ -- whole_association_flag for iir_kind_association_element_by_expression
+ -- has_disconnect_flag for iir_kind_signal_declaration
+ Flag1 : Boolean := False;
+
+ -- Usages of Flag2:
+ -- pure_flag for iir_kinds_function_specification
+ -- passive_flag for iir_kinds_process_statement
+ -- shared_flag for iir_kind_variable_declaration
+ -- aggr_others_flag for iir_kind_aggregate_info
+ -- signal_type_flag for iir_kinds_type_definition
+ Flag2 : Boolean := False;
+
+ -- Usages of Flag3:
+ -- (postponed_flag for iir_kinds_process_statement)
+ -- elab_flag for iir_kind_design_file
+ -- elab_flag for iir_kind_design_unit
+ -- dynamic_flag for iir_kind_aggregate_info
+ -- text_file_flag for iir_kind_file_type_definition
+ -- foreign_flag for iir_kind_architecture_declaration
+ -- foreign_flag for iir_kinds_function_specification
+ -- foreign_flag for iir_kinds_procedure_specification
+ Flag3 : Boolean := False;
+
+ -- Usages of Flag4:
+ -- visible_flag for iir_kind_type_declaration
+ -- aggr_named_flag for iir_kind_aggregate_info
+ Flag4 : Boolean := False;
+
+ -- Usages of Flag5:
+ -- is_within_flag for named entities
+ Flag5 : Boolean := False;
+
+ -- Usages of Flag6:
+ Flag6 : Boolean := False;
+
+ -- Kind field use 8 bits.
+ -- So, on 32 bits systems, there are 24 bits left.
+ -- + 8 (8 * 1)
+ -- + 10 (5 * 2)
+ -- + 6 (2 * 3)
+ -- = 24
+
+ Kind : Kind_Type;
+
+ -- expr_staticness for iir_kind_string_literal
+ -- expr_staticness for iir_kind_bit_string_literal
+ -- expr_staticness for iir_kind_integer_literal
+ -- expr_staticness for iir_kind_floating_point_literal
+ -- expr_staticness for iir_kind_physical_int_literal
+ -- expr_staticness for iir_kind_physical_fp_literal
+ -- expr_staticness for iir_kind_enumeration_literal
+ -- expr_staticness for iir_kind_monadic_operator
+ -- expr_staticness for iir_kind_dyadic_operator
+ -- expr_staticness for iir_kinds_name
+ -- expr_staticness for iir_kinds_alias_declaration
+ -- expr_staticness for iir_kind_constant_declaration
+ -- expr_staticness for iir_kind_iterator_declaration
+ -- expr_staticness for iir_kind_constant_interface_declaration
+ -- expr_staticness for iir_kind_aggregate
+ -- expr_staticness for iir_kind_qualified_expression
+ -- expr_staticness for iir_kind_type_conversion
+ -- expr_staticness for iir_kind_length_array_attribute
+ -- expr_staticness for iir_kind_low_type_attribute
+ -- expr_staticness for iir_kind_high_type_attribute
+ -- expr_staticness for iir_kind_left_type_attribute
+ -- expr_staticness for iir_kind_right_type_attribute
+ -- expr_staticness for iir_kind_pos_attribute
+ -- expr_staticness for iir_kind_val_attribute
+ -- expr_staticness for iir_kind_event_attribute
+ -- expr_staticness for iir_kind_last_value_attribute
+ -- expr_staticness for iir_kind_last_active_attribute
+ -- expr_staticness for iir_kind_active_attribute
+ -- expr_staticness for iir_kind_range_expression
+ -- expr_staticness for iir_kind_selected_element
+ -- expr_staticness for iir_kind_function_call
+ -- expr_staticness for iir_kind_attribute_value
+ -- expr_staticness for iir_kind_signal_declaration
+ -- expr_staticness for iir_kind_guard_signal_declaration
+ -- expr_staticness for iir_kind_variable_declaration
+ -- expr_staticness for iir_kind_file_declaration
+ -- expr_staticness for iir_kinds_discrete_type_attribute
+ -- type_staticness for iir_kinds_type_and_subtype_definition
+ State1 : Bit2_Type := 0;
+
+ -- name_staticness for iir_kinds_name
+ -- name_staticness for iir_kind_object_alias_declaration
+ -- name_staticness for iir_kind_selected_element
+ -- name_staticness for iir_kind_selected_by_all_name
+ -- choice_staticness for iir_kind_choice_by_range
+ -- choice_staticness for iir_kind_choice_by_expression
+ State2 : Bit2_Type := 0;
+
+ -- Usages of State3:
+ -- purity_state for iir_kind_process_statement
+ -- purity_state for iir_kind_sensitized_process_statement
+ -- purity_state for iir_kinds_procedure_specification
+ -- purity_state for iir_kinds_function_specification
+ State3 : Bit2_Type := 0;
+
+ -- Usages of State4:
+ -- wait_state for iir_kind_process_statement
+ -- wait_state for iir_kind_sensitized_process_statement
+ -- wait_state for iir_kinds_procedure_specification
+ -- wait_state for iir_kinds_function_specification
+ State4 : Bit2_Type := 0;
+
+ -- 2bits fields (4 -> 8 bits)
+ -- Usages of State5:
+ -- passive_state for iir_kind_process_statement
+ -- passive_state for iir_kind_sensitized_process_statement
+ -- passive_state for iir_kinds_procedure_specification
+ -- passive_state for iir_kinds_function_specification
+ -- signal_kind for iir_kind_signal_declaration
+ -- signal_kind for iir_kind_guard_signal_declaration
+ -- signal_kind for iir_kind_signal_interface_declaration
+ -- direction for iir_kind_range_expression
+ -- direction for iir_kind_file_declaration
+ -- guarded_target_flag for iir_kind_concurrent_conditional_signal_assign
+ -- guarded_target_flag for iir_kind_selected_conditional_signal_assign
+ -- guarded_target_flag for iir_kind_signal_assignment_statement
+ Unused_State5 : Bit2_Type := 0;
+
+ -- 3bits fields (1 -> 3 bits)
+ -- Usages of odigit1:
+ -- lexical_layout for iir_kinds_interface_declaration
+ Odigit1 : Bit3_Type := 0;
+
+ -- Usage of odigit2:
+ -- iir_mode for iir_kind_signal_interface_declaration
+ -- iir_mode for iir_kind_constant_interface_declaration
+ -- iir_mode for iir_kind_variable_interface_declaration
+ -- iir_mode for iir_kind_file_interface_declaration
+ Odigit2 : Bit3_Type := 0;
+
+ -- Location.
+ Location: Location_Type := Location_Nil;
+
+ -- The parent node.
+ -- parent for iir_kind_if_statement
+ -- parent for iir_kind_elsif_statement
+ -- parent for iir_kind_for_loop_statement
+ -- parent for iir_kind_while_loop_statement
+ -- parent for iir_kind_case_statement
+ -- parent for iir_kind_exit_statement
+ -- parent for iir_kind_next_statement
+ -- parent (library_declaration) for iir_kind_design_file
+ -- parent (design_unit_list) for iir_kind_design_file
+ -- interface_parent for iir_kind_signal_interface_declaration
+ -- interface_parent for iir_kind_constant_interface_declaration
+ -- interface_parent for iir_kind_variable_interface_declaration
+ -- interface_parent for iir_kind_file_interface_declaration
+ Field0 : Node_Type := Null_Node;
+
+ -- usages of field1:
+ -- type for iir_kind_character_literal
+ -- type for iir_kind_type_computed_literal
+ -- type for iir_kind_integer_literal
+ -- type for iir_kind_floating_point_literal
+ -- type for iir_type_declaration.
+ -- type for iir_subtype_declaration.
+ -- type for iir_kind_identifier
+ -- type for iir_kind_string_literal
+ -- type for iir_kind_bit_string_literal
+ -- type for iir_kind_base_attribute
+ -- list_element for iir_kinds_list
+ -- port_chain for iir_kind_entity_declaration
+ -- port_chain for iir_kind_component_declaration
+ -- port_chain for iir_kind_block_header
+ -- entity for iir_kind_architecture_declaration
+ -- entity for iir_kind_configuration_declaration
+ -- entity for iir_kind_entity_aspect_entity
+ -- package for iir_kind_package_body
+ -- primary_units(iir_library_unit_list) for iir_kind_library_declaration
+ -- selected_name for iir_kind_use_clause
+ -- type_declaration for iir_kinds_type_definition
+ -- type_definition for iir_kind_signal_declaration
+ -- type_definition for iir_kind_guard_signal_declaration
+ -- type_definition for iir_kind_signal_interface_declaration.
+ -- type_definition for iir_kind_variable_declaration
+ -- type_definition for iir_kind_variable_interface_declaration.
+ -- type_definition for iir_kind_constant_declaration
+ -- type_definition for iir_kind_iterator_declaration
+ -- type_definition for iir_kind_constant_interface_declaration.
+ -- type_definition for iir_kind_file_declaration
+ -- type_definition for iir_kind_file_interface_declaration.
+ -- type_definition for iir_kind_enumeration_literal
+ -- type_definition for iir_kind_unit_declaration
+ -- type_definition for iir_kind_component_port
+ -- type_definition for iir_kind_element_declaration
+ -- type_definition for iir_kinds_attribute_declaration
+ -- type_definition for iir_kinds_attribute
+ -- type_definition for iir_kinds_name
+ -- type_definition for iir_kind_return_statement
+ -- type_definition for iir_kind_aggregate
+ -- type_definition for iir_kind_physical_int_literal
+ -- type_definition for iir_kind_physical_fp_literal
+ -- type_definition for iir_kind_object_alias_declaration
+ -- type_definition for iir_kind_null_literal
+ -- type_definition for iir_kind_qualified_expression
+ -- type_definition for iir_kind_type_conversion
+ -- type_definition for iir_kind_function_call
+ -- type_definition for iir_kind_allocator_by_expression
+ -- type_definition for iir_kind_allocator_by_subtype
+ -- type_definition for iir_kind_attribute_value
+ -- type_definition for iir_kind_selected_element
+ -- type_definition for iir_kind_implicit_dereference.
+ -- type_definition for iir_kind_disconnection_specification
+ -- type_definition for iir_kinds_monadic_operator
+ -- type_definition for iir_kinds_dyadic_operator
+ -- null_iir for iir_kind_signal_assignment_statement
+ -- null_iir for iir_kind_variable_assignment_statement
+ -- we_value for iir_kind_waveform_element
+ -- condition for iir_kind_conditional_waveform
+ -- condition for iir_kind_if_statement
+ -- condition for iir_kind_elsif
+ -- condition for iir_kind_while_loop_statement
+ -- condition for iir_kind_next_statement
+ -- condition for iir_kind_exit_statement
+ -- design_unit_chain for iir_kind_design_file
+ -- formal for iir_kinds_association_element
+ -- iterator_scheme for iir_kind_for_loop_statement
+ -- associated for iir_kinds_association_by_choice
+ -- context_items for iir_kind_design_unit
+ -- design_file_chain for iir_kind_library_declaration
+ -- proxy for iir_kind_proxy
+ -- selected_waveform_l for iir_kind_concurrent_selected_signal_assignment
+ -- block_specification for iir_kind_block_configuration
+ -- instantiation_list for iir_kind_component_configuration
+ -- instantiation_list for iir_kind_configuration_specification
+ -- component_configuration for iir_kind_component_instantiation_statement
+ -- configuration for iir_kind_entity_aspect_configuration
+ -- guard_decl for iir_kind_block_statement
+ -- entity_class_entry_chain for iir_kind_group_template_declaration
+ -- group_constituent_chain for iir_kind_group_declaration
+ -- entity_name_list for iir_kind_attribute_specification
+ -- generate_block_configuration for iir_kind_generate_statement
+ -- type_declarator for Iir_Kind_Enumeration_Type_Definition
+ -- type_declarator for Iir_Kind_Enumeration_Subtype_Definition
+ -- type_declarator for Iir_Kind_Integer_Type_Definition
+ -- type_declarator for Iir_Kind_Integer_Subtype_Definition
+ -- type_declarator for Iir_Kind_Floating_Type_Definition
+ -- type_declarator for Iir_Kind_Floating_Subtype_Definition
+ -- type_declarator for Iir_Kind_Physical_Type_Definition
+ -- type_declarator for Iir_Kind_Physical_Subtype_Definition
+ -- type_declarator for Iir_Kind_Record_Type_Definition
+ -- type_declarator for Iir_Kind_Record_Subtype_Definition
+ -- type_declarator for Iir_Kind_Array_Type_Definition
+ -- type_declarator for Iir_Kind_Array_Subtype_Definition
+ -- type_declarator for Iir_Kind_Unconstrained_Array_Subtype_Definition
+ -- type_declarator for Iir_Kind_Access_Type_Definition
+ -- type_declarator for Iir_Kind_Access_Subtype_Definition
+ -- type_declarator for Iir_Kind_Incomplete_Type_Definition
+ -- type_declarator for Iir_Kind_File_Type_Definition
+ -- return_type for iir_kind_function_specification
+ -- return_type for iir_kind_function_spec_body
+ -- return_type for iir_kind_implicit_function_declaration
+ -- default_entity_aspect for iir_kind_binding_indication
+ -- sub_aggregate_info for iir_kind_aggregate_info
+ Field1: Node_Type := Null_Node;
+
+ -- usages of field2:
+ -- concurrent_statement_list for iir_kind_architecture_declaration
+ -- concurrent_statement_list for iir_kind_block_statement
+ -- concurrent_statement_list for iir_kind_entity_declaration
+ -- concurrent_statement_list for iir_kind_generate_statement
+ -- block_configuration for iir_kind_configuration_declaration
+ -- block_configuration for iir_kind_component_configuration
+ -- subprogram_body for iir_kind_function_specification
+ -- subprogram_body for iir_kind_procedure_specification
+ -- range_constraint for iir_kind_integer_subtype_definition
+ -- range_constraint for iir_kind_floating_subtype_definition
+ -- range_constraint for iir_kind_subtype_definition
+ -- range_constraint for iir_kind_enumeration_subtype_definition
+ -- range_constraint for iir_kind_physical_subtype_definition
+ -- range_constraint for iir_kind_enumeration_type_definition
+ -- left_limit for iir_kind_range_expression
+ -- designated_type for iir_kind_access_type_definition
+ -- index_subtype for iir_array_type_definition
+ -- index_subtype for iir_array_subtype_definition
+ -- suffix for iir_kinds_attribute
+ -- suffix for iir_kind_user_attribute
+ -- suffix for iir_kind_slice_name
+ -- selected_element for iir_kind_selected_element
+ -- parameter for iir_kind_val_attribute
+ -- parameter for iir_kind_pos_attribute
+ -- parameter for iir_kind_delayed_attribute
+ -- parameter for iir_kind_stable_attribute
+ -- parameter for iir_kind_quiet_attribute
+ -- parameter for iir_kind_attribute
+ -- index_list for iir_kind_indexed_name
+ -- index_list for iir_kind_array_type_definition
+ -- index_list for iir_kind_array_subtype_definition
+ -- target for iir_kind_signal_assignment_statement
+ -- target for iir_kind_variable_assignment_statement
+ -- time for iir_kind_waveform_element
+ -- target for iir_kind_concurrent_conditional_signal_assignment
+ -- target for iir_kind_concurrent_selected_signal_assignment
+ -- assertion_condition for iir_kind_concurrent_assertion_statement
+ -- assertion_condition for iir_kind_assertion_statement
+ -- null_iir for iir_kind_conditional_waveform
+ -- sequential_statement_chain for iir_kind_if_statement
+ -- sequential_statement_chain for iir_kind_elsif
+ -- sequential_statement_chain for iir_kind_sensitized_process_statement
+ -- sequential_statement_chain for iir_kind_process_statement
+ -- sequential_statement_chain for iir_kind_for_loop_statement
+ -- sequential_statement_chain for iir_kind_while_loop_statement
+ -- sequential_statement_chain for iir_kind_function_Body
+ -- sequential_statement_chain for iir_kind_function_Spec_Body
+ -- sequential_statement_chain for iir_kind_procedure_Body
+ -- sequential_statement_chain for iir_kind_procedure_Spec_Body
+ -- name for iir_kind_object_alias_declaration
+ -- name for iir_kind_physical_int_literal
+ -- name for iir_kind_physical_fp_literal
+ -- name for iir_kind_association_choice_by_name
+ -- name for iir_kind_group_declaration
+ -- default_value for iir_kind_signal_declaration
+ -- default_value for iir_kind_guard_signal_declaration
+ -- default_value for iir_kind_variable_declaration
+ -- default_value for iir_kind_constant_declaration
+ -- default_value for iir_kind_signal_interface_declaration
+ -- default_value for iir_kind_variable_interface_declaration
+ -- default_value for iir_kind_constant_interface_declaration
+ -- default_value for iir_kind_file_interface_declaration
+ -- guard_expression for iir_kind_guard_signal_declaration
+ -- operand for iir_kinds_monadic_operator
+ -- left for iir_kinds_dyadic_operator
+ -- actual for iir_kind_association_element_by_expression
+ -- instantiated_unit for Iir_Kind_Component_Instantiation_Statement
+ -- parameter_association_chain for iir_kind_function_call
+ -- parameter_association_chain for iir_kind_procedure_call
+ -- parameter_association_chain for iir_kind_concurrent_procedure_call_st.
+ -- library_unit for iir_kind_design_unit
+ -- multiplier for iir_kind_unit_declaration
+ -- primary_unit for iir_kind_physical_type_definition
+ -- condition_clause for iir_kind_wait_statement
+ -- element_declaration_list for iir_kind_record_type_definition
+ -- loop for iir_kind_exit_statement
+ -- loop for iir_kind_next_statement
+ -- file_logical_name for iir_kind_file_declaration
+ -- configuration_item_chain for iir_kind_block_configuration
+ -- architecture for iir_kind_entity_aspect_entity
+ -- library_declaration for iir_kind_library_clause
+ -- attribute_designator for iir_kind_attribute_specification
+ -- attribute_specification for iir_kind_attribute_value
+ -- signal_list for iir_kind_disconnection_specification
+ -- generation_scheme for iir_kind_generate_statement
+ -- incomplete_type_List for iir_kind_incomplete_type_definition
+ -- file_time_stamp for iir_kind_design_file
+ -- default_generic_map_aspect_list for iir_kind_binding_indication
+ -- aggr_low_limit for iir_kind_aggregate_info
+ -- enumeration_decl for iir_kind_enumeration_literal
+ -- simple_aggregate_list for iir_kind_simple_aggregate
+ Field2: Node_Type := Null_Node;
+
+ -- Usages of field3:
+ -- dependence_list for iir_kind_design_unit
+ -- block_statement for iir_kind_signal_declaration
+ -- block_statement for iir_kind_guard_signal_declaration
+ -- subprogram_declaration for iir_kind_function_Spec_Body
+ -- subprogram_declaration for iir_kind_function_Body
+ -- subprogram_declaration for iir_kind_Procedure_Spec_Body
+ -- subprogram_declaration for iir_kind_Procedure_Body
+ -- body for iir_kind_function_specification
+ -- body for iir_kind_procedure_specification
+ -- declaration_list for iir_kind_entity_declaration
+ -- declaration_list for iir_kind_architecture_declaration
+ -- declaration_list for iir_kind_configuration_declaration
+ -- declaration_list for iir_kind_block_statement
+ -- declaration_list for iir_kind_package_declaration
+ -- declaration_list for iir_kind_package_body
+ -- declaration_list for iir_kind_sensitized_process_statement
+ -- declaration_list for iir_kind_process_statement
+ -- declaration_list for iir_kind_block_configuration
+ -- declaration_list for iir_kind_generate_statement
+ -- enumeration_literal_list for iir_enumeration_type_definition
+ -- right_limit for iir_kind_range_expression
+ -- element_subtype for iir_array_type_definition
+ -- element_subtype for iir_array_subtype_definition
+ -- report_expression for iir_kind_concurrent_assertion_statement
+ -- report_expression for iir_kind_assertion_statement
+ -- report_expression for iir_kind_report_statement
+ -- waveform_chain for iir_kind_signal_assignment_statement
+ -- conditional_waveform_chain for iir_kind_conc_conditional_signal_assign
+ -- waveform_chain for iir_kind_conditional_waveform
+ -- else_clause for iir_kind_if_statement
+ -- else_clause for iir_kind_elsif
+ -- expression of iir_kind_concurrent_selected_signal_assignment
+ -- expression of iir_kind_variable_assignment_statement
+ -- prefix for iir_kinds_attribute
+ -- prefix for iir_kind_indexed_name
+ -- prefix for iir_kind_slice_name
+ -- prefix for iir_kind_selected_name
+ -- prefix for iir_kind_selected_by_all_name
+ -- prefix for iir_kind_parenthesis_name
+ -- prefix for iir_kind_selected_element
+ -- prefix for iir_kind_implicit_dereference
+ -- port_map_aspect for Iir_Kind_Component_Instantiation_Statement
+ -- port_map_aspect for Iir_Kind_binding_indication
+ -- port_map_aspect for Iir_Kind_block_header
+ -- binding_indication for iir_kind_Component_configuration
+ -- binding_indication for Iir_Kind_Configuration_specifiation
+ -- expression for iir_kind_return_statement
+ -- expression for iir_kind_association_choice_by_expression
+ -- expression for iir_kind_case_statement
+ -- expression for iir_kind_qualified_expression
+ -- expression for iir_kind_type_conversion
+ -- expression for iir_kind_allocator_by_expression
+ -- expression for iir_kind_allocator_by_subtype
+ -- expression for iir_kind_attribute_specification
+ -- expression for iir_kind_disconnection_specification
+ -- unit_chain for iir_kind_physical_type_definition
+ -- timeout_clause for iir_kind_wait_statement
+ -- file_open_kind for iir_kind_file_declaration
+ -- designated_entity for iir_kind_attribute_value
+ -- associated_formal for iir_kinds_association_element
+ -- deferred_declaration for iir_kind_constant_declaration
+ -- literal_origin for iir_kind_character_literal
+ -- literal_origin for iir_kind_string_literal
+ -- literal_origin for iir_kind_bit_string_literal
+ -- literal_origin for iir_kind_integer_literal
+ -- literal_origin for iir_kind_floating_point_literal
+ -- literal_origin for iir_kind_physical_int_literal
+ -- literal_origin for iir_kind_physical_fp_literal
+ -- literal_origin for iir_kind_enumeration_literal
+ -- analysis_time_stamp for iir_kind_design_file
+ -- aggr_high_limit for iir_kind_aggregate_info
+ -- aggregate_info for iir_kind_aggregate
+ -- implementation for iir_kind_function_call
+ -- implementation for iir_kind_procedure_call
+ -- implementation for iir_kind_concurrent_procedure_call_statement
+ -- implementation for iir_kind_dyadic_operator
+ -- implementation for iir_kind_monadic_operator
+ Field3: Node_Type := Null_Node;
+
+ -- Usages of field4:
+ -- design_file for iir_kind_design_unit
+ -- generic_chain for iir_kind_entity_declaration
+ -- generic_chain for iir_kind_component_declaration
+ -- generic_chain for iir_kind_block_header
+ -- base_type for iir_kind_integer_type_definition
+ -- base_type for iir_kind_integer_subtype_definition
+ -- base_type for iir_kind_floating_type_definition
+ -- base_type for iir_kind_floating_subtype_definition
+ -- base_type for iir_kind_subtype_definition
+ -- base_type for iir_kind_enumeration_type_definition
+ -- base_type for iir_kind_enumeration_subtype_definition
+ -- base_type for iir_kind_array_type_definition
+ -- base_type for iir_kind_array_subtype_definition
+ -- base_type for iir_kind_unconstrained_array_subtype_definition
+ -- base_type for iir_kind_range_attribute
+ -- base_type for iir_kind_physical_type_definition
+ -- base_type for iir_kind_physical_subtype_definition
+ -- base_type for iir_kind_record_type_definition
+ -- base_type for iir_kind_record_subtype_definition
+ -- base_type for iir_kind_access_type_definition
+ -- base_type for iir_kind_access_subtype_definition
+ -- base_type for iir_kind_incomplete_type_definition
+ -- base_type for iir_kind_file_type_definition
+ -- severity_expression for iir_kind_concurrent_assertion_statement
+ -- severity_expression for iir_kind_assertion_statement
+ -- severity_expression for iir_kind_report_statement
+ -- sensitivity_list for iir_kind_sensitized_process_statement
+ -- sensitivity_list for iir_kind_wait_statement
+ -- name_value of iir_kind_simple_name
+ -- association_chain for iir_kind_association_element_by_individual
+ -- association_chain for iir_kind_parenthesis_name
+ -- association_choices_list for iir_kind_aggregate
+ -- association_choices_list for iir_kind_case_statement
+ -- guard for iir_kind_concurrent_conditional_signal_assignment
+ -- guard for iir_kind_concurrent_selected_signal_assignment
+ -- entity_aspect for iir_kind_binding_indication
+ -- default_binding_indicat for iir_kind_component_instantiation_statement
+ -- component_name for iir_kind_component_configuration
+ -- component_name for iir_kind_configuration_specification
+ -- prev_block_configuration for iir_kind_block_configuration
+ -- interface_declaration for iir_kind_function_Specification
+ -- interface_declaration for iir_kind_function_Spec_Body
+ -- interface_declaration for iir_kind_procedure_Specification
+ -- interface_declaration for iir_kind_procedure_Spec_Body
+ -- interface_declaration for iir_kind_implicit_function_declaration
+ -- interface_declaration for iir_kind_implicit_procedure_declaration
+ -- subprogram_specification for iir_kind_function_Body
+ -- subprogram_specification for iir_kind_procedure_Body
+ -- in_conversion for iir_kind_association_element_by_expression
+ -- default_configuration for iir_kind_architecture_declaration
+ -- bit_string_0 for iir_kind_bit_string_literal
+ -- base_name for iir_kind_object_alias_declaration
+ -- base_name for iir_kind_signal_declaration
+ -- base_name for iir_kind_guard_signal_declaration
+ -- base_name for iir_kind_variable_declaration
+ -- base_name for iir_kind_file_declaration
+ -- base_name for iir_kind_constant_declaration
+ -- base_name for iir_kind_iterator_declaration
+ -- base_name for iir_kind_slice_name
+ -- base_name for iir_kind_indexed_name
+ -- base_name for iir_kind_selected_element
+ -- base_name for iir_kind_selected_by_all_name
+ -- base_name for iir_kind_implicit_dereference
+ -- base_name for iir_kind_attribute_value
+ -- base_name for iir_kind_function_call
+ -- block_block_configuration for iir_kind_block_statement
+ -- right for iir_kinds_dyadic_operator
+ --Field4: Node_Type := Null_Node;
+
+ -- Usages of field5 (aka nbr1).
+ -- driver_list for iir_kind_sensitized_process_statement
+ -- driver_list for iir_kind_process_statement
+ -- driver_list for iir_kinds_function_specification
+ -- driver_list for iir_kinds_procedure_specification
+ -- guard_sensitivity_list for iir_kind_guard_signal_declaration
+ -- signal_driver for iir_kind_signal_declaration
+ -- reject_time for iir_kind_concurrent_selected_signal_assignment
+ -- reject_time for iir_kind_concurrent_conditionnal_signal_assignment
+ -- reject_time for iir_kind_signal_assignment_statement
+ -- resolution_function for iir_kind_integer_subtype_definition
+ -- resolution_function for iir_kind_floating_subtype_definition
+ -- resolution_function for iir_kind_enumeration_subtype_definition
+ -- resolution_function for iir_kind_physical_subtype_definition
+ -- resolution_function for iir_kind_array_subtype_definition
+ -- resolution_function for iir_kind_unconstrained_array_subtype_definit.
+ -- resolution_function for iir_kind_record_subtype_definition
+ -- date for iir_kind_library_declaration
+ -- date for iir_kind_design_unit
+ -- generic_map_aspect for Iir_Kind_Component_Instantiation_Statement
+ -- generic_map_aspect for Iir_Kind_block_header
+ -- generic_map_aspect for Iir_Kind_binding_indication
+ -- generation_scheme for iir_kind_generate_statement
+ -- design_unit for iir_kind_constant_declaration
+ -- design_unit for iir_kind_entity_declaration
+ -- design_unit for iir_kind_configuration_declaration
+ -- design_unit for iir_kind_package_declaration
+ -- design_unit for iir_kind_body_declaration
+ -- design_unit for iir_kind_architecture_declaration
+ -- out_conversion for iir_kind_association_element_by_expression
+ -- bit_string_1 for iir_kind_bit_string_literal
+ --Field5: Node_Type := Null_Node;
+
+ -- Usages of Field6:
+ -- offset for iir_kind_design_unit
+ -- number of element for iir_kinds_list
+ -- base for iir_kind_bit_string_literal
+ -- element_position for iir_kind_element_declaration
+ -- type_mark for iir_kind_qualified_expression
+ -- type_mark for iir_kind_file_type_definition
+ -- type_mark for iir_kind_integer_subtype_definition
+ -- type_mark for iir_kind_floating_subtype_definition
+ -- type_mark for iir_kind_enumeration_subtype_definition
+ -- type_mark for iir_kind_physical_subtype_definition
+ -- type_mark for iir_kind_access_subtype_definition
+ -- type_mark for iir_kind_record_subtype_definition
+ -- type_mark for iir_kind_unconstrained_array_subtype_definition
+ -- bit_string_base for iir_kind_bit_string_literal
+ -- default_port_map_aspect_list for iir_kind_binding_indication
+
+ -- Usages of nbr3/field7:
+ -- line for iir_kind_design_unit
+ -- max number of elements for iir_kinds_list
+ -- implicit_definition for iir_kind_implicit_function_declaration
+ -- implicit_definition for iir_kind_implicit_procedure_declaration
+ -- block_header for iir_kind_block_statement
+ -- delay_mechanism for iir_kind_concurrent_selected_signal_assignment
+ -- delay_mechanism for iir_kind_concurrent_conditionnal_signal_assignment
+ -- delay_mechanism for iir_kind_signal_assignment_statement
+ -- value for iir_kind_integer_literal
+ -- value for iir_kind_enumeration_literal
+ -- value for iir_kind_unit_declaration
+ -- value for iir_kind_physical_int_literal
+ -- fp_value for iir_kind_physical_fp_literal
+ -- fp_value for iir_kind_floating_point_literal
+ -- entity_kind for iir_kind_entity_class
+ -- entity_kind for iir_kind_attribute_specification
+ -- callees_list for iir_kind_process_declaration
+ -- callees_list for iir_kind_sensitized_process_declaration
+ -- library_directory for iir_kind_library_declaration
+ -- filename for iir_kind_design_file
+ -- directory for iir_kind_design_file
+ -- aggr_max_length for iir_kind_aggregate_info
+ case Format is
+ when Format_Short
+ | Format_Medium =>
+ Field4: Node_Type := Null_Node;
+ Field5: Node_Type := Null_Node;
+ when Format_Fp =>
+ Fp64 : Iir_Fp64;
+ when Format_Int =>
+ Int64 : Iir_Int64;
+ end case;
+ end record;
+
+ pragma Pack (Node_Record);
+ for Node_Record'Size use 8*32;
+ for Node_Record'Alignment use 4;
+end Nodes;