From bb39004f1086e3fbbf5933ac880f0bb396c27cd0 Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Sun, 22 Jul 2018 03:26:48 +0200
Subject: Add testcase for #626

---
 testsuite/gna/issue626/repro.on     | 2222 +++++++++++++++++++++++++++
 testsuite/gna/issue626/repro.vhdl   |   22 +
 testsuite/gna/issue626/testsuite.sh |   12 +
 testsuite/gna/issue626/top.on       | 2845 +++++++++++++++++++++++++++++++++++
 testsuite/gna/issue626/top.vhdl     |   38 +
 5 files changed, 5139 insertions(+)
 create mode 100644 testsuite/gna/issue626/repro.on
 create mode 100644 testsuite/gna/issue626/repro.vhdl
 create mode 100755 testsuite/gna/issue626/testsuite.sh
 create mode 100644 testsuite/gna/issue626/top.on
 create mode 100644 testsuite/gna/issue626/top.vhdl

diff --git a/testsuite/gna/issue626/repro.on b/testsuite/gna/issue626/repro.on
new file mode 100644
index 000000000..49c9da637
--- /dev/null
+++ b/testsuite/gna/issue626/repro.on
@@ -0,0 +1,2222 @@
+-- internal declarations, part 1
+
+TYPE __ghdl_size_type IS UNSIGNED (32);
+
+TYPE __ghdl_index_type IS UNSIGNED (32);
+
+TYPE __ghdl_i32 IS SIGNED (32);
+
+TYPE __ghdl_real IS FLOAT;
+
+TYPE __ghdl_i64 IS SIGNED (64);
+
+TYPE __ghdl_file_index IS UNSIGNED (32);
+
+TYPE __ghdl_file_index_ptr IS ACCESS __ghdl_file_index;
+
+TYPE __ghdl_char IS UNSIGNED (8);
+
+TYPE __ghdl_chararray IS ARRAY [__ghdl_index_type] OF __ghdl_char;
+
+TYPE __ghdl_char_ptr IS ACCESS __ghdl_chararray;
+
+TYPE __ghdl_char_ptr_array IS ARRAY [__ghdl_index_type] OF __ghdl_char_ptr;
+
+TYPE __ghdl_char_ptr_array_ptr IS ACCESS __ghdl_char_ptr_array;
+
+TYPE __ghdl_ptr IS ACCESS __ghdl_char;
+
+TYPE __ghdl_str_len IS RECORD
+  len: __ghdl_index_type;
+  str: __ghdl_char_ptr;
+END RECORD;
+
+TYPE __ghdl_str_len_array IS ARRAY [__ghdl_index_type] OF __ghdl_str_len;
+
+TYPE __ghdl_str_len_ptr IS ACCESS __ghdl_str_len;
+
+TYPE __ghdl_bool_type IS BOOLEAN {false, true};
+
+TYPE __ghdl_bool_array_type IS ARRAY [__ghdl_index_type] OF __ghdl_bool_type;
+
+TYPE __ghdl_bool_array_ptr IS ACCESS __ghdl_bool_array_type;
+
+TYPE __ghdl_sizes_type IS RECORD
+  size_val: __ghdl_index_type;
+  size_sig: __ghdl_index_type;
+END RECORD;
+
+TYPE __ghdl_compare_type IS ENUM {lt, eq, gt};
+
+TYPE __ghdl_location IS RECORD
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32;
+  col: __ghdl_i32;
+END RECORD;
+
+TYPE __ghdl_location_ptr IS ACCESS __ghdl_location;
+
+TYPE __ghdl_dir_type IS ENUM {dir_to, dir_downto};
+
+TYPE __ghdl_signal IS RECORD;
+
+TYPE __ghdl_signal_ptr IS ACCESS __ghdl_signal;
+
+EXTERNAL FUNCTION __ghdl_alloc (
+  size: __ghdl_size_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL PROCEDURE __ghdl_program_error (
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32;
+  code: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_bound_check_failed (
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_direction_check_failed (
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_stack2_allocate (
+  size: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_stack2_mark (
+  )
+  RETURN __ghdl_ptr;
+
+EXTERNAL PROCEDURE __ghdl_stack2_release (
+  mark: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_memcpy (
+  dest: __ghdl_ptr;
+  src: __ghdl_ptr;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_deallocate (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL FUNCTION __ghdl_malloc (
+  length: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_malloc0 (
+  length: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_text_file_elaborate (
+  )
+  RETURN __ghdl_file_index;
+
+EXTERNAL FUNCTION __ghdl_file_elaborate (
+  NAME: __ghdl_char_ptr)
+  RETURN __ghdl_file_index;
+
+EXTERNAL PROCEDURE __ghdl_file_finalize (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_text_file_finalize (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_protected_enter (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_protected_leave (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_protected_init (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_protected_fini (
+  OBJ: __ghdl_ptr);
+
+TYPE __ghdl_rtik IS ENUM {__ghdl_rtik_top, __ghdl_rtik_library,
+   __ghdl_rtik_package, __ghdl_rtik_package_body, __ghdl_rtik_entity,
+   __ghdl_rtik_architecture, __ghdl_rtik_process, __ghdl_rtik_block,
+   __ghdl_rtik_if_generate, __ghdl_rtik_case_generate,
+   __ghdl_rtik_for_generate, __ghdl_rtik_generate_body, __ghdl_rtik_instance,
+   __ghdl_rtik_constant, __ghdl_rtik_iterator, __ghdl_rtik_variable,
+   __ghdl_rtik_signal, __ghdl_rtik_file, __ghdl_rtik_port,
+   __ghdl_rtik_generic, __ghdl_rtik_alias, __ghdl_rtik_guard,
+   __ghdl_rtik_component, __ghdl_rtik_attribute, __ghdl_rtik_type_b1,
+   __ghdl_rtik_type_e8, __ghdl_rtik_type_e32, __ghdl_rtik_type_i32,
+   __ghdl_rtik_type_i64, __ghdl_rtik_type_f64, __ghdl_rtik_type_p32,
+   __ghdl_rtik_type_p64, __ghdl_rtik_type_access, __ghdl_rtik_type_array,
+   __ghdl_rtik_type_record, __ghdl_rtik_type_unbounded_record,
+   __ghdl_rtik_type_file, __ghdl_rtik_subtype_scalar,
+   __ghdl_rtik_subtype_array, __ghdl_rtik_subtype_unconstrained_array,
+   __ghdl_rtik_subtype_record, __ghdl_rtik_subtype_unbounded_record,
+   __ghdl_rtik_subtype_access, __ghdl_rtik_type_protected,
+   __ghdl_rtik_element, __ghdl_rtik_unit64, __ghdl_rtik_unitptr,
+   __ghdl_rtik_attribute_transaction, __ghdl_rtik_attribute_quiet,
+   __ghdl_rtik_attribute_stable, __ghdl_rtik_psl_assert,
+   __ghdl_rtik_psl_cover, __ghdl_rtik_psl_endpoint, __ghdl_rtik_error};
+
+TYPE __ghdl_rti_depth IS UNSIGNED (8);
+
+TYPE __ghdl_rti_u8 IS UNSIGNED (8);
+
+TYPE __ghdl_rti_common IS RECORD
+  kind: __ghdl_rtik;
+  depth: __ghdl_rti_depth;
+  mode: __ghdl_rti_u8;
+  max_depth: __ghdl_rti_depth;
+END RECORD;
+
+TYPE __ghdl_rti_access IS ACCESS __ghdl_rti_common;
+
+TYPE __ghdl_rti_array IS ARRAY [__ghdl_index_type] OF __ghdl_rti_access;
+
+TYPE __ghdl_rti_arr_acc IS ACCESS __ghdl_rti_array;
+
+TYPE __ghdl_component_link_type IS RECORD;
+
+TYPE __ghdl_component_link_acc IS ACCESS __ghdl_component_link_type;
+
+TYPE __ghdl_entity_link_type IS RECORD
+  rti: __ghdl_rti_access;
+  parent: __ghdl_component_link_acc;
+END RECORD;
+
+TYPE __ghdl_entity_link_acc IS ACCESS __ghdl_entity_link_type;
+
+TYPE __ghdl_component_link_type IS RECORD
+  INSTANCE: __ghdl_entity_link_acc;
+  stmt: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_block IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  loc: __ghdl_ptr;
+  linecol: __ghdl_index_type;
+  parent: __ghdl_rti_access;
+  nbr_child: __ghdl_index_type;
+  children: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_generate IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  loc: __ghdl_ptr;
+  linecol: __ghdl_index_type;
+  parent: __ghdl_rti_access;
+  size: __ghdl_index_type;
+  child: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_block_file IS RECORD
+  block: __ghdl_rtin_block;
+  filename: __ghdl_char_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_scalar IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_enum IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbr: __ghdl_index_type;
+  lits: __ghdl_char_ptr_array_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_subtype_scalar IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  base: __ghdl_rti_access;
+  range: __ghdl_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_unit64 IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  val: __ghdl_i64;
+END RECORD;
+
+TYPE __ghdl_rtin_unitptr IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  addr: __ghdl_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_physical IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbr: __ghdl_index_type;
+  units: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_type_fileacc IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  base: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_type_array IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  element: __ghdl_rti_access;
+  nbr_dim: __ghdl_index_type;
+  indexes: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_subtype_composite IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  basetype: __ghdl_rti_access;
+  bounds: __ghdl_ptr;
+  val_size: __ghdl_ptr;
+  sig_size: __ghdl_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_record IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbrel: __ghdl_index_type;
+  elements: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_element IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  eltype: __ghdl_rti_access;
+  val_off: __ghdl_index_type;
+  sig_off: __ghdl_index_type;
+END RECORD;
+
+TYPE __ghdl_rtin_object IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  loc: __ghdl_ptr;
+  obj_type: __ghdl_rti_access;
+  linecol: __ghdl_index_type;
+END RECORD;
+
+TYPE __ghdl_rtin_instance IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  linecol: __ghdl_index_type;
+  loc: __ghdl_ptr;
+  parent: __ghdl_rti_access;
+  instance: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_component IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbr_child: __ghdl_index_type;
+  children: __ghdl_rti_arr_acc;
+END RECORD;
+
+EXTERNAL PROCEDURE __ghdl_signal_name_rti (
+  OBJ: __ghdl_rti_access;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_sensitized_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_postponed_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_postponed_sensitized_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_finalize_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr);
+
+-- package std.standard
+
+TYPE std__standard__boolean IS BOOLEAN {false, true};
+
+TYPE std__standard__boolean__PTR IS ACCESS std__standard__boolean;
+
+TYPE std__standard__boolean__TRT IS RECORD
+  left: std__standard__boolean;
+  right: std__standard__boolean;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__boolean__TRPTR IS ACCESS std__standard__boolean__TRT;
+
+TYPE std__standard__BOOLEAN_ARRAY IS ARRAY [__ghdl_index_type] OF 
+  std__standard__boolean;
+
+TYPE std__standard__bit IS BOOLEAN {C_0, C_1};
+
+TYPE std__standard__bit__PTR IS ACCESS std__standard__bit;
+
+TYPE std__standard__bit__TRT IS RECORD
+  left: std__standard__bit;
+  right: std__standard__bit;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__bit__TRPTR IS ACCESS std__standard__bit__TRT;
+
+TYPE std__standard__character IS ENUM {nul, soh, stx, etx, eot, enq, ack, bel,
+   bs, ht, lf, vt, ff, cr, so, si, dle, dc1, dc2, dc3, dc4, nak, syn, etb,
+   can, em, sub, esc, fsp, gsp, rsp, usp, C20, C21, C22, C23, C24, C25, C26,
+   C27, C28, C29, C2a, C2b, C2c, C2d, C2e, C2f, C_0, C_1, C_2, C_3, C_4, C_5,
+   C_6, C_7, C_8, C_9, C3a, C3b, C3c, C3d, C3e, C3f, C40, C_A, C_B, C_C, C_D,
+   C_E, C_F, C_G, C_H, C_I, C_J, C_K, C_L, C_M, C_N, C_O, C_P, C_Q, C_R, C_S,
+   C_T, C_U, C_V, C_W, C_X, C_Y, C_Z, C5b, C5c, C5d, C5e, C5f, C60, C_a, C_b,
+   C_c, C_d, C_e, C_f, C_g, C_h, C_i, C_j, C_k, C_l, C_m, C_n, C_o, C_p, C_q,
+   C_r, C_s, C_t, C_u, C_v, C_w, C_x, C_y, C_z, C7b, C7c, C7d, C7e, del, c128,
+   c129, c130, c131, c132, c133, c134, c135, c136, c137, c138, c139, c140,
+   c141, c142, c143, c144, c145, c146, c147, c148, c149, c150, c151, c152,
+   c153, c154, c155, c156, c157, c158, c159, Ca0, Ca1, Ca2, Ca3, Ca4, Ca5,
+   Ca6, Ca7, Ca8, Ca9, Caa, Cab, Cac, Cad, Cae, Caf, Cb0, Cb1, Cb2, Cb3, Cb4,
+   Cb5, Cb6, Cb7, Cb8, Cb9, Cba, Cbb, Cbc, Cbd, Cbe, Cbf, Cc0, Cc1, Cc2, Cc3,
+   Cc4, Cc5, Cc6, Cc7, Cc8, Cc9, Cca, Ccb, Ccc, Ccd, Cce, Ccf, Cd0, Cd1, Cd2,
+   Cd3, Cd4, Cd5, Cd6, Cd7, Cd8, Cd9, Cda, Cdb, Cdc, Cdd, Cde, Cdf, Ce0, Ce1,
+   Ce2, Ce3, Ce4, Ce5, Ce6, Ce7, Ce8, Ce9, Cea, Ceb, Cec, Ced, Cee, Cef, Cf0,
+   Cf1, Cf2, Cf3, Cf4, Cf5, Cf6, Cf7, Cf8, Cf9, Cfa, Cfb, Cfc, Cfd, Cfe, Cff};
+
+TYPE std__standard__character__PTR IS ACCESS std__standard__character;
+
+TYPE std__standard__character__TRT IS RECORD
+  left: std__standard__character;
+  right: std__standard__character;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__character__TRPTR IS ACCESS std__standard__character__TRT;
+
+EXTERNAL CONSTANT std__standard__character__BTR : std__standard__character__TRT
+  ;
+
+TYPE std__standard__severity_level IS ENUM {note, warning, error, failure};
+
+TYPE std__standard__severity_level__PTR IS ACCESS std__standard__severity_level
+  ;
+
+TYPE std__standard__severity_level__TRT IS RECORD
+  left: std__standard__severity_level;
+  right: std__standard__severity_level;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__severity_level__TRPTR IS ACCESS 
+  std__standard__severity_level__TRT;
+
+EXTERNAL CONSTANT std__standard__severity_level__BTR : 
+  std__standard__severity_level__TRT;
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT IS SIGNED (64);
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT__PTR IS ACCESS 
+  std__standard__UNIVERSAL_INTEGER__BT;
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT__TRT IS RECORD
+  left: std__standard__UNIVERSAL_INTEGER__BT;
+  right: std__standard__UNIVERSAL_INTEGER__BT;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT__TRPTR IS ACCESS 
+  std__standard__UNIVERSAL_INTEGER__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__STR : 
+  std__standard__UNIVERSAL_INTEGER__BT__TRT;
+
+TYPE std__standard__UNIVERSAL_REAL__BT IS FLOAT;
+
+TYPE std__standard__UNIVERSAL_REAL__BT__PTR IS ACCESS 
+  std__standard__UNIVERSAL_REAL__BT;
+
+TYPE std__standard__UNIVERSAL_REAL__BT__TRT IS RECORD
+  left: std__standard__UNIVERSAL_REAL__BT;
+  right: std__standard__UNIVERSAL_REAL__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__UNIVERSAL_REAL__BT__TRPTR IS ACCESS 
+  std__standard__UNIVERSAL_REAL__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__STR : 
+  std__standard__UNIVERSAL_REAL__BT__TRT;
+
+TYPE std__standard__integer__BT IS SIGNED (32);
+
+TYPE std__standard__integer__BT__PTR IS ACCESS std__standard__integer__BT;
+
+TYPE std__standard__integer__BT__TRT IS RECORD
+  left: std__standard__integer__BT;
+  right: std__standard__integer__BT;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__integer__BT__TRPTR IS ACCESS 
+  std__standard__integer__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__integer__STR : std__standard__integer__BT__TRT
+  ;
+
+TYPE std__standard__real__BT IS FLOAT;
+
+TYPE std__standard__real__BT__PTR IS ACCESS std__standard__real__BT;
+
+TYPE std__standard__real__BT__TRT IS RECORD
+  left: std__standard__real__BT;
+  right: std__standard__real__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__real__BT__TRPTR IS ACCESS std__standard__real__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__real__STR : std__standard__real__BT__TRT;
+
+TYPE std__standard__time__BT IS SIGNED (64);
+
+TYPE std__standard__time__BT__PTR IS ACCESS std__standard__time__BT;
+
+TYPE std__standard__time__BT__TRT IS RECORD
+  left: std__standard__time__BT;
+  right: std__standard__time__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__time__BT__TRPTR IS ACCESS std__standard__time__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__time__STR : std__standard__time__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__delay_length__STR : 
+  std__standard__time__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__natural__STR : std__standard__integer__BT__TRT
+  ;
+
+EXTERNAL CONSTANT std__standard__positive__STR : 
+  std__standard__integer__BT__TRT;
+
+TYPE std__standard__string__BASE IS ARRAY [__ghdl_index_type] OF 
+  std__standard__character;
+
+TYPE std__standard__string__BASEP IS ACCESS std__standard__string__BASE;
+
+TYPE std__standard__string__SIGBASE IS ARRAY [__ghdl_index_type] OF 
+  __ghdl_signal_ptr;
+
+TYPE std__standard__string__SIGBASEP IS ACCESS std__standard__string__SIGBASE;
+
+TYPE std__standard__string__BOUND IS RECORD
+  dim_1: std__standard__integer__BT__TRT;
+END RECORD;
+
+TYPE std__standard__string__BOUNDP IS ACCESS std__standard__string__BOUND;
+
+TYPE std__standard__string IS RECORD
+  BASE: std__standard__string__BASEP;
+  BOUNDS: std__standard__string__BOUNDP;
+END RECORD;
+
+TYPE std__standard__string__PTR IS ACCESS std__standard__string;
+
+TYPE std__standard__string__SIG IS RECORD
+  BASE: std__standard__string__SIGBASEP;
+  BOUNDS: std__standard__string__BOUNDP;
+END RECORD;
+
+TYPE std__standard__string__SIGPTR IS ACCESS std__standard__string__SIG;
+
+EXTERNAL FUNCTION std__standard__string_EQ (
+  left: std__standard__string__PTR;
+  right: std__standard__string__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION std__standard__string_CMP (
+  left: std__standard__string__PTR;
+  right: std__standard__string__PTR)
+  RETURN __ghdl_compare_type;
+
+TYPE std__standard__bit_vector__BASE IS ARRAY [__ghdl_index_type] OF 
+  std__standard__bit;
+
+TYPE std__standard__bit_vector__BASEP IS ACCESS std__standard__bit_vector__BASE
+  ;
+
+TYPE std__standard__bit_vector__SIGBASE IS ARRAY [__ghdl_index_type] OF 
+  __ghdl_signal_ptr;
+
+TYPE std__standard__bit_vector__SIGBASEP IS ACCESS 
+  std__standard__bit_vector__SIGBASE;
+
+TYPE std__standard__bit_vector__BOUND IS RECORD
+  dim_1: std__standard__integer__BT__TRT;
+END RECORD;
+
+TYPE std__standard__bit_vector__BOUNDP IS ACCESS 
+  std__standard__bit_vector__BOUND;
+
+TYPE std__standard__bit_vector IS RECORD
+  BASE: std__standard__bit_vector__BASEP;
+  BOUNDS: std__standard__bit_vector__BOUNDP;
+END RECORD;
+
+TYPE std__standard__bit_vector__PTR IS ACCESS std__standard__bit_vector;
+
+TYPE std__standard__bit_vector__SIG IS RECORD
+  BASE: std__standard__bit_vector__SIGBASEP;
+  BOUNDS: std__standard__bit_vector__BOUNDP;
+END RECORD;
+
+TYPE std__standard__bit_vector__SIGPTR IS ACCESS std__standard__bit_vector__SIG
+  ;
+
+EXTERNAL FUNCTION std__standard__bit_vector_EQ (
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION std__standard__bit_vector_CMP (
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR)
+  RETURN __ghdl_compare_type;
+
+EXTERNAL PROCEDURE std__standard__bit_vector_NOT (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_AND (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_OR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_NAND (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_NOR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_XOR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_XNOR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_SHL (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__integer__BT);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_SHA (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__integer__BT);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_ROT (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__integer__BT);
+
+TYPE std__standard__file_open_kind IS ENUM {read_mode, write_mode,
+   append_mode};
+
+TYPE std__standard__file_open_kind__PTR IS ACCESS std__standard__file_open_kind
+  ;
+
+TYPE std__standard__file_open_kind__TRT IS RECORD
+  left: std__standard__file_open_kind;
+  right: std__standard__file_open_kind;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__file_open_kind__TRPTR IS ACCESS 
+  std__standard__file_open_kind__TRT;
+
+EXTERNAL CONSTANT std__standard__file_open_kind__BTR : 
+  std__standard__file_open_kind__TRT;
+
+TYPE std__standard__file_open_status IS ENUM {open_ok, status_error,
+   name_error, mode_error};
+
+TYPE std__standard__file_open_status__PTR IS ACCESS 
+  std__standard__file_open_status;
+
+TYPE std__standard__file_open_status__TRT IS RECORD
+  left: std__standard__file_open_status;
+  right: std__standard__file_open_status;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__file_open_status__TRPTR IS ACCESS 
+  std__standard__file_open_status__TRT;
+
+EXTERNAL CONSTANT std__standard__file_open_status__BTR : 
+  std__standard__file_open_status__TRT;
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT IS SIGNED (64);
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT__PTR IS ACCESS 
+  std__standard__CONVERTIBLE_INTEGER__BT;
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRT IS RECORD
+  left: std__standard__CONVERTIBLE_INTEGER__BT;
+  right: std__standard__CONVERTIBLE_INTEGER__BT;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRPTR IS ACCESS 
+  std__standard__CONVERTIBLE_INTEGER__BT__TRT;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT IS FLOAT;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT__PTR IS ACCESS 
+  std__standard__CONVERTIBLE_REAL__BT;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT__TRT IS RECORD
+  left: std__standard__CONVERTIBLE_REAL__BT;
+  right: std__standard__CONVERTIBLE_REAL__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT__TRPTR IS ACCESS 
+  std__standard__CONVERTIBLE_REAL__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__RTI : __ghdl_rtin_block;
+
+EXTERNAL CONSTANT std__standard__boolean__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__bit__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__character__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__severity_level__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__BT__RTI : 
+  __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__BT__RTI : 
+  __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__integer__BT__RTI : __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__integer__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__real__BT__RTI : __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__real__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__time__BT__RTI : __ghdl_rtin_type_physical;
+
+EXTERNAL CONSTANT std__standard__time__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__delay_length__RTI : __ghdl_rtin_subtype_scalar
+  ;
+
+EXTERNAL CONSTANT std__standard__natural__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__positive__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__string__RTI : __ghdl_rtin_type_array;
+
+EXTERNAL CONSTANT std__standard__bit_vector__RTI : __ghdl_rtin_type_array;
+
+EXTERNAL CONSTANT std__standard__file_open_kind__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__file_open_status__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__foreign__RTI : __ghdl_rtin_object;
+
+TYPE __ghdl_std_ulogic_boolean_array_type IS SUBARRAY 
+  std__standard__BOOLEAN_ARRAY[9];
+
+EXTERNAL CONSTANT __ghdl_std_ulogic_to_boolean_array : 
+  __ghdl_std_ulogic_boolean_array_type;
+
+-- internal declarations, part 2
+
+EXTERNAL VAR __ghdl_now : std__standard__time__BT;
+
+EXTERNAL PROCEDURE __ghdl_assert_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_ieee_assert_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_psl_assert_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_psl_cover (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_psl_cover_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_report (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_text_write (
+  file: __ghdl_file_index;
+  str: std__standard__string__PTR);
+
+EXTERNAL FUNCTION __ghdl_text_read_length (
+  file: __ghdl_file_index;
+  str: std__standard__string__PTR)
+  RETURN std__standard__integer__BT;
+
+EXTERNAL PROCEDURE __ghdl_write_scalar (
+  file: __ghdl_file_index;
+  ptr: __ghdl_ptr;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_read_scalar (
+  file: __ghdl_file_index;
+  ptr: __ghdl_ptr;
+  length: __ghdl_index_type);
+
+EXTERNAL FUNCTION __ghdl_real_exp (
+  left: std__standard__real__BT;
+  right: std__standard__integer__BT)
+  RETURN std__standard__real__BT;
+
+EXTERNAL FUNCTION __ghdl_integer_exp (
+  left: std__standard__integer__BT;
+  right: std__standard__integer__BT)
+  RETURN std__standard__integer__BT;
+
+EXTERNAL PROCEDURE __ghdl_image_b1 (
+  res: std__standard__string__PTR;
+  val: __ghdl_bool_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_b1 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_bool_type;
+
+EXTERNAL PROCEDURE __ghdl_image_e8 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_e8 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_e32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_e32 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_i32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_value_i32 (
+  val: std__standard__string__PTR)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_i64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64);
+
+EXTERNAL FUNCTION __ghdl_value_i64 (
+  val: std__standard__string__PTR)
+  RETURN __ghdl_i64;
+
+EXTERNAL PROCEDURE __ghdl_image_p32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_p32 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_p64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_p64 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i64;
+
+EXTERNAL PROCEDURE __ghdl_image_f64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_real);
+
+EXTERNAL FUNCTION __ghdl_value_f64 (
+  val: std__standard__string__PTR)
+  RETURN __ghdl_real;
+
+EXTERNAL PROCEDURE __ghdl_text_file_open (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR);
+
+EXTERNAL PROCEDURE __ghdl_file_open (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR);
+
+EXTERNAL FUNCTION __ghdl_text_file_open_status (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_file_open_status (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_file_endfile (
+  file: __ghdl_file_index)
+  RETURN std__standard__boolean;
+
+EXTERNAL PROCEDURE __ghdl_text_file_close (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_file_close (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_file_flush (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_signal_create_resolution (
+  func: __ghdl_ptr;
+  INSTANCE: __ghdl_ptr;
+  sig: __ghdl_ptr;
+  nbr_sig: __ghdl_index_type);
+
+TYPE __ghdl_scalar_bytes IS SUBARRAY __ghdl_chararray[8];
+
+TYPE __ghdl_signal IS RECORD
+  driving_value: __ghdl_scalar_bytes;
+  last_value: __ghdl_scalar_bytes;
+  last_event: std__standard__time__BT;
+  last_active: std__standard__time__BT;
+  value: __ghdl_ptr;
+  event: std__standard__boolean;
+  active: std__standard__boolean;
+  has_active: __ghdl_bool_type;
+END RECORD;
+
+TYPE __ghdl_signal_ptr_ptr IS ACCESS __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_merge_rti (
+  sig: __ghdl_signal_ptr;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_source (
+  targ: __ghdl_signal_ptr;
+  src: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_effective_value (
+  targ: __ghdl_signal_ptr;
+  src: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_set_disconnect (
+  sig: __ghdl_signal_ptr;
+  time: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_disconnect (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL FUNCTION __ghdl_signal_get_nbr_drivers (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_index_type;
+
+EXTERNAL FUNCTION __ghdl_signal_get_nbr_ports (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_index_type;
+
+EXTERNAL FUNCTION __ghdl_signal_read_driver (
+  sig: __ghdl_signal_ptr;
+  num: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_signal_read_port (
+  sig: __ghdl_signal_ptr;
+  num: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_signal_driving (
+  sig: __ghdl_signal_ptr)
+  RETURN std__standard__boolean;
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_error (
+  sig: __ghdl_signal_ptr;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_error (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  after: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_error (
+  sig: __ghdl_signal_ptr;
+  after: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_null (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_null (
+  sig: __ghdl_signal_ptr;
+  after: std__standard__time__BT);
+
+EXTERNAL FUNCTION __ghdl_create_signal_e8 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_e8 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_e8 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_create_signal_e32 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_e32 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_e32 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_create_signal_b1 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_b1 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_bool_type;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_b1 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_bool_type;
+
+EXTERNAL FUNCTION __ghdl_create_signal_i32 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_i32 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_i32 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_create_signal_f64 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_f64 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_real;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_f64 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_real;
+
+EXTERNAL FUNCTION __ghdl_create_signal_i64 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_i64 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i64;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_i64 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i64;
+
+EXTERNAL PROCEDURE __ghdl_process_add_sensitivity (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_add_driver (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_direct_driver (
+  sig: __ghdl_signal_ptr;
+  drv: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_direct_assign (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_in_conversion (
+  func: __ghdl_ptr;
+  INSTANCE: __ghdl_ptr;
+  src: __ghdl_signal_ptr;
+  src_len: __ghdl_index_type;
+  dst: __ghdl_signal_ptr;
+  dst_len: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_out_conversion (
+  func: __ghdl_ptr;
+  INSTANCE: __ghdl_ptr;
+  src: __ghdl_signal_ptr;
+  src_len: __ghdl_index_type;
+  dst: __ghdl_signal_ptr;
+  dst_len: __ghdl_index_type);
+
+EXTERNAL FUNCTION __ghdl_create_stable_signal (
+  val_ptr: __ghdl_ptr;
+  val: std__standard__time__BT)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL FUNCTION __ghdl_create_quiet_signal (
+  val_ptr: __ghdl_ptr;
+  val: std__standard__time__BT)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL FUNCTION __ghdl_create_transaction_signal (
+  val_ptr: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_attribute_register_prefix (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL FUNCTION __ghdl_create_delayed_signal (
+  sig: __ghdl_signal_ptr;
+  val_ptr: __ghdl_ptr;
+  val: std__standard__time__BT)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL FUNCTION __ghdl_signal_create_guard (
+  val_ptr: __ghdl_ptr;
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_guard_dependence (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_exit (
+  );
+
+EXTERNAL PROCEDURE __ghdl_process_wait_timeout (
+  time: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_set_timeout (
+  time: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_add_sensitivity (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_suspend (
+  );
+
+EXTERNAL FUNCTION __ghdl_process_wait_timed_out (
+  )
+  RETURN __ghdl_bool_type;
+
+EXTERNAL PROCEDURE __ghdl_process_wait_close (
+  );
+
+EXTERNAL PROCEDURE __ghdl_get_path_name (
+  res: std__standard__string__PTR;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr;
+  name: __ghdl_str_len_ptr);
+
+EXTERNAL PROCEDURE __ghdl_get_instance_name (
+  res: std__standard__string__PTR;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr;
+  name: __ghdl_str_len_ptr);
+
+EXTERNAL PROCEDURE __ghdl_rti_add_package (
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_rti_add_top (
+  max_pkgs: __ghdl_index_type;
+  pkgs: __ghdl_rti_arr_acc;
+  RTI: __ghdl_rti_access;
+  INSTANCE: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_init_top_generics (
+  );
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_eq (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_ne (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_lt (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_le (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_eq (
+  left: __ghdl_ptr;
+  l_len: __ghdl_index_type;
+  right: __ghdl_ptr;
+  r_len: __ghdl_index_type)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_ne (
+  left: __ghdl_ptr;
+  l_len: __ghdl_index_type;
+  right: __ghdl_ptr;
+  r_len: __ghdl_index_type)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_to_string_i32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_to_string_i64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_to_string_f64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_to_string_f64_digits (
+  res: std__standard__string__PTR;
+  val: __ghdl_real;
+  nbr_digits: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_to_string_f64_format (
+  res: std__standard__string__PTR;
+  val: __ghdl_real;
+  format: std__standard__string__PTR);
+
+EXTERNAL PROCEDURE __ghdl_bv_to_ostring (
+  res: std__standard__string__PTR;
+  val: std__standard__bit_vector__BASEP;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_bv_to_hstring (
+  res: std__standard__string__PTR;
+  val: std__standard__bit_vector__BASEP;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_to_string_b1 (
+  res: std__standard__string__PTR;
+  val: __ghdl_bool_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_e8 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_char (
+  res: std__standard__string__PTR;
+  val: std__standard__character);
+
+EXTERNAL PROCEDURE __ghdl_to_string_e32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_p32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_p64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_time_to_string_unit (
+  res: std__standard__string__PTR;
+  val: std__standard__time__BT;
+  unit: std__standard__time__BT;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_array_char_to_string_b1 (
+  res: std__standard__string__PTR;
+  val: __ghdl_ptr;
+  length: __ghdl_index_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_array_char_to_string_e8 (
+  res: std__standard__string__PTR;
+  val: __ghdl_ptr;
+  length: __ghdl_index_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_array_char_to_string_e32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_ptr;
+  length: __ghdl_index_type;
+  RTI: __ghdl_rti_access);
+
+PRIVATE CONSTANT _UI00000000 : SUBARRAY __ghdl_chararray[11];
+
+CONSTANT _UI00000000 := {114, 101, 112, 114, 111, 46, 118, 104, 100, 108, 0};
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl
+
+-- entity inc
+
+TYPE work__inc__INSTTYPE IS RECORD;
+
+TYPE work__inc__INSTPTR IS ACCESS work__inc__INSTTYPE;
+
+TYPE work__inc__INSTTYPE IS RECORD
+  RTI: __ghdl_entity_link_type;
+  v: std__standard__integer__BT;
+  vec: std__standard__bit_vector;
+END RECORD;
+
+PUBLIC PROCEDURE work__inc__DECL_ELAB (
+  INSTANCE: work__inc__INSTPTR);
+
+PUBLIC PROCEDURE work__inc__STMT_ELAB (
+  INSTANCE: work__inc__INSTPTR);
+
+PUBLIC PROCEDURE work__inc__PKG_ELAB (
+  );
+
+EXTERNAL CONSTANT work__RTI : __ghdl_rtin_type_scalar;
+
+PUBLIC CONSTANT work__inc__RTI : __ghdl_rtin_block_file;
+
+PUBLIC CONSTANT work__inc__v__RTI : __ghdl_rtin_object;
+
+PRIVATE CONSTANT work__inc__v__RTISTR : SUBARRAY __ghdl_chararray[2];
+
+CONSTANT work__inc__v__RTISTR := {118, 0};
+
+CONSTANT work__inc__v__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, 0, 0},
+   __ghdl_char_ptr'unchecked_address (work__inc__v__RTISTR),
+   __ghdl_ptr'offsetof (work__inc__INSTTYPE.v),
+   __ghdl_rti_access'unchecked_address (std__standard__natural__RTI), 529};
+
+PUBLIC CONSTANT work__inc__vec__RTI : __ghdl_rtin_object;
+
+PRIVATE CONSTANT work__inc__vec__RTISTR : SUBARRAY __ghdl_chararray[4];
+
+CONSTANT work__inc__vec__RTISTR := {118, 101, 99, 0};
+
+CONSTANT work__inc__vec__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, 0, 0},
+   __ghdl_char_ptr'unchecked_address (work__inc__vec__RTISTR),
+   __ghdl_ptr'offsetof (work__inc__INSTTYPE.vec),
+   __ghdl_rti_access'unchecked_address (std__standard__bit_vector__RTI), 542};
+
+PRIVATE CONSTANT work__inc__RTISTR : SUBARRAY __ghdl_chararray[4];
+
+CONSTANT work__inc__RTISTR := {105, 110, 99, 0};
+
+PRIVATE CONSTANT work__inc__RTIARRAY : SUBARRAY __ghdl_rti_array[3];
+
+CONSTANT work__inc__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (work__inc__v__RTI),
+   __ghdl_rti_access'unchecked_address (work__inc__vec__RTI),
+   __ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0},
+   __ghdl_char_ptr'address (work__inc__RTISTR), __ghdl_ptr'[NULL], 264,
+   __ghdl_rti_access'unchecked_address (work__RTI), 2,
+   __ghdl_rti_arr_acc'address (work__inc__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+PUBLIC PROCEDURE work__inc__PKG_ELAB (
+  )
+DECLARE
+BEGIN
+  --# 1
+END;
+
+PUBLIC PROCEDURE work__inc__DECL_ELAB (
+  INSTANCE: work__inc__INSTPTR)
+DECLARE
+BEGIN
+  --# 1
+  --# 1
+END;
+
+PUBLIC PROCEDURE work__inc__STMT_ELAB (
+  INSTANCE: work__inc__INSTPTR)
+DECLARE
+BEGIN
+  --# 1
+END;
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl
+
+-- architecture default
+
+TYPE work__inc__ARCH__default__INSTTYPE IS RECORD;
+
+TYPE work__inc__ARCH__default__INSTPTR IS ACCESS 
+  work__inc__ARCH__default__INSTTYPE;
+
+TYPE work__inc__ARCH__default__P0__INSTTYPE IS RECORD
+END RECORD;
+
+TYPE work__inc__ARCH__default__P1__INSTTYPE IS RECORD
+END RECORD;
+
+TYPE work__inc__ARCH__default__P2__INSTTYPE IS RECORD
+END RECORD;
+
+TYPE work__inc__ARCH__default__INSTTYPE IS RECORD
+  ENTITY: work__inc__INSTTYPE;
+  P0: work__inc__ARCH__default__P0__INSTTYPE;
+  P1: work__inc__ARCH__default__P1__INSTTYPE;
+  P2: work__inc__ARCH__default__P2__INSTTYPE;
+END RECORD;
+
+PUBLIC CONSTANT work__inc__ARCH__default__INSTSIZE : __ghdl_index_type;
+
+CONSTANT work__inc__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof (
+  work__inc__ARCH__default__INSTTYPE);
+
+PUBLIC PROCEDURE work__inc__ARCH__default__DECL_ELAB (
+  INSTANCE: work__inc__INSTPTR);
+
+PUBLIC PROCEDURE work__inc__ARCH__default__STMT_ELAB (
+  INSTANCE: work__inc__INSTPTR);
+
+PUBLIC CONSTANT work__inc__ARCH__default__RTI : __ghdl_rtin_block_file;
+
+PUBLIC CONSTANT work__inc__ARCH__default__P0__RTI : __ghdl_rtin_block;
+
+PRIVATE CONSTANT work__inc__ARCH__default__P0__RTISTR : SUBARRAY 
+  __ghdl_chararray[3];
+
+CONSTANT work__inc__ARCH__default__P0__RTISTR := {80, 48, 0};
+
+PRIVATE CONSTANT work__inc__ARCH__default__P0__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[1];
+
+CONSTANT work__inc__ARCH__default__P0__RTIARRAY := {__ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc__ARCH__default__P0__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0},
+   __ghdl_char_ptr'address (work__inc__ARCH__default__P0__RTISTR),
+   __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.P0), 1795,
+   __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__RTI), 0,
+   __ghdl_rti_arr_acc'address (work__inc__ARCH__default__P0__RTIARRAY)};
+
+PUBLIC CONSTANT work__inc__ARCH__default__P1__RTI : __ghdl_rtin_block;
+
+PRIVATE CONSTANT work__inc__ARCH__default__P1__RTISTR : SUBARRAY 
+  __ghdl_chararray[3];
+
+CONSTANT work__inc__ARCH__default__P1__RTISTR := {80, 49, 0};
+
+PRIVATE CONSTANT work__inc__ARCH__default__P1__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[1];
+
+CONSTANT work__inc__ARCH__default__P1__RTIARRAY := {__ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc__ARCH__default__P1__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0},
+   __ghdl_char_ptr'address (work__inc__ARCH__default__P1__RTISTR),
+   __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.P1), 2051,
+   __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__RTI), 0,
+   __ghdl_rti_arr_acc'address (work__inc__ARCH__default__P1__RTIARRAY)};
+
+PUBLIC CONSTANT work__inc__ARCH__default__P2__RTI : __ghdl_rtin_block;
+
+PRIVATE CONSTANT work__inc__ARCH__default__P2__RTISTR : SUBARRAY 
+  __ghdl_chararray[3];
+
+CONSTANT work__inc__ARCH__default__P2__RTISTR := {80, 50, 0};
+
+PRIVATE CONSTANT work__inc__ARCH__default__P2__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[1];
+
+CONSTANT work__inc__ARCH__default__P2__RTIARRAY := {__ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc__ARCH__default__P2__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0},
+   __ghdl_char_ptr'address (work__inc__ARCH__default__P2__RTISTR),
+   __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.P2), 2307,
+   __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__RTI), 0,
+   __ghdl_rti_arr_acc'address (work__inc__ARCH__default__P2__RTIARRAY)};
+
+PRIVATE CONSTANT work__inc__ARCH__default__RTISTR : SUBARRAY __ghdl_chararray[8
+  ];
+
+CONSTANT work__inc__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108,
+   116, 0};
+
+PRIVATE CONSTANT work__inc__ARCH__default__RTIARRAY : SUBARRAY __ghdl_rti_array
+  [4];
+
+CONSTANT work__inc__ARCH__default__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (work__inc__ARCH__default__P0__RTI),
+   __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__P1__RTI),
+   __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__P2__RTI),
+   __ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc__ARCH__default__RTI := {{
+  {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0},
+   __ghdl_char_ptr'address (work__inc__ARCH__default__RTISTR),
+   __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.ENTITY), 1294,
+   __ghdl_rti_access'unchecked_address (work__inc__RTI), 3,
+   __ghdl_rti_arr_acc'address (work__inc__ARCH__default__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+
+PRIVATE PROCEDURE work__inc__ARCH__default__P0__PROC (
+  INSTANCE: work__inc__ARCH__default__INSTPTR)
+DECLARE
+  PRIVATE CONSTANT _UI00000001 : __ghdl_location;
+  CONSTANT _UI00000001 := {__ghdl_char_ptr'address (_UI00000000), 7, 3};
+BEGIN
+  --# 7
+  IF NOT std__standard__boolean'(INSTANCE.ALL.ENTITY.vec.BOUNDS.ALL.dim_1.left 
+    = 0) THEN
+    __ghdl_assert_failed (std__standard__string__PTR'[NULL], 
+      std__standard__severity_level'[failure], __ghdl_location_ptr'address (
+      _UI00000001));
+  END IF;
+END;
+
+
+PRIVATE PROCEDURE work__inc__ARCH__default__P1__PROC (
+  INSTANCE: work__inc__ARCH__default__INSTPTR)
+DECLARE
+  PRIVATE CONSTANT _UI00000002 : __ghdl_location;
+  CONSTANT _UI00000002 := {__ghdl_char_ptr'address (_UI00000000), 8, 3};
+BEGIN
+  --# 8
+  IF NOT std__standard__boolean'(INSTANCE.ALL.ENTITY.vec.BOUNDS.ALL.dim_1.right
+     = INSTANCE.ALL.ENTITY.v) THEN
+    __ghdl_assert_failed (std__standard__string__PTR'[NULL], 
+      std__standard__severity_level'[failure], __ghdl_location_ptr'address (
+      _UI00000002));
+  END IF;
+END;
+
+
+PRIVATE PROCEDURE work__inc__ARCH__default__P2__PROC (
+  INSTANCE: work__inc__ARCH__default__INSTPTR)
+DECLARE
+  PRIVATE CONSTANT _UI00000003 : __ghdl_location;
+  CONSTANT _UI00000003 := {__ghdl_char_ptr'address (_UI00000000), 9, 3};
+BEGIN
+  --# 9
+  DECLARE
+    LOCAL VAR T0_0 : std__standard__string;
+    LOCAL VAR T0_1 : __ghdl_ptr;
+  BEGIN
+    T0_1 := __ghdl_stack2_mark ();
+    __ghdl_image_i32 (std__standard__string__PTR'address (T0_0), __ghdl_i32
+      'conv (INSTANCE.ALL.ENTITY.vec.BOUNDS.ALL.dim_1.right));
+    __ghdl_assert_failed (std__standard__string__PTR'address (T0_0), 
+      std__standard__severity_level'[error], __ghdl_location_ptr'address (
+      _UI00000003));
+    __ghdl_stack2_release (T0_1);
+  END;
+END;
+
+PUBLIC PROCEDURE work__inc__ARCH__default__DECL_ELAB (
+  INSTANCE: work__inc__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__inc__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__inc__ARCH__default__INSTPTR'conv (INSTANCE);
+  INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address (
+    work__inc__ARCH__default__RTI);
+  work__inc__DECL_ELAB (INSTANCE);
+  --# 5
+  --# 5
+END;
+
+PUBLIC PROCEDURE work__inc__ARCH__default__STMT_ELAB (
+  INSTANCE: work__inc__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__inc__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__inc__ARCH__default__INSTPTR'conv (INSTANCE);
+  work__inc__STMT_ELAB (INSTANCE);
+  --# 5
+  --# 7
+  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr (
+    work__inc__ARCH__default__P0__PROC), __ghdl_rti_access'unchecked_address (
+    work__inc__ARCH__default__P0__RTI), __ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL.P0));
+  --# 8
+  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr (
+    work__inc__ARCH__default__P1__PROC), __ghdl_rti_access'unchecked_address (
+    work__inc__ARCH__default__P1__RTI), __ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL.P1));
+  --# 9
+  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr (
+    work__inc__ARCH__default__P2__PROC), __ghdl_rti_access'unchecked_address (
+    work__inc__ARCH__default__P2__RTI), __ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL.P2));
+END;
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl
+
+-- entity repro
+
+TYPE work__repro__INSTTYPE IS RECORD;
+
+TYPE work__repro__INSTPTR IS ACCESS work__repro__INSTTYPE;
+
+TYPE work__repro__INSTTYPE IS RECORD
+  RTI: __ghdl_entity_link_type;
+END RECORD;
+
+PUBLIC PROCEDURE work__repro__DECL_ELAB (
+  INSTANCE: work__repro__INSTPTR);
+
+PUBLIC PROCEDURE work__repro__STMT_ELAB (
+  INSTANCE: work__repro__INSTPTR);
+
+PUBLIC PROCEDURE work__repro__PKG_ELAB (
+  );
+
+PUBLIC CONSTANT work__repro__RTI : __ghdl_rtin_block_file;
+
+PRIVATE CONSTANT work__repro__RTISTR : SUBARRAY __ghdl_chararray[6];
+
+CONSTANT work__repro__RTISTR := {114, 101, 112, 114, 111, 0};
+
+PRIVATE CONSTANT work__repro__RTIARRAY : SUBARRAY __ghdl_rti_array[1];
+
+CONSTANT work__repro__RTIARRAY := {__ghdl_rti_access'[NULL]};
+
+CONSTANT work__repro__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0},
+   __ghdl_char_ptr'address (work__repro__RTISTR), __ghdl_ptr'[NULL], 3080,
+   __ghdl_rti_access'unchecked_address (work__RTI), 0,
+   __ghdl_rti_arr_acc'address (work__repro__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+PUBLIC PROCEDURE work__repro__PKG_ELAB (
+  )
+DECLARE
+BEGIN
+  --# 12
+END;
+
+PUBLIC PROCEDURE work__repro__DECL_ELAB (
+  INSTANCE: work__repro__INSTPTR)
+DECLARE
+BEGIN
+  --# 12
+  --# 12
+END;
+
+PUBLIC PROCEDURE work__repro__STMT_ELAB (
+  INSTANCE: work__repro__INSTPTR)
+DECLARE
+BEGIN
+  --# 12
+END;
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl
+
+-- architecture default
+
+TYPE work__repro__ARCH__default__INSTTYPE IS RECORD;
+
+TYPE work__repro__ARCH__default__INSTPTR IS ACCESS 
+  work__repro__ARCH__default__INSTTYPE;
+
+PUBLIC CONSTANT work__repro__ARCH__default__g__ix__OT__STR : 
+  std__standard__integer__BT__TRT;
+
+CONSTANT work__repro__ARCH__default__g__ix__OT__STR := {0, 4,
+   __ghdl_dir_type'[dir_to], 5};
+
+TYPE work__repro__ARCH__default__g__INSTTYPE IS RECORD;
+
+TYPE work__repro__ARCH__default__g__INSTPTR IS ACCESS 
+  work__repro__ARCH__default__g__INSTTYPE;
+
+TYPE work__repro__ARCH__default__g__INSTTYPE IS RECORD
+  ORIGIN: work__repro__ARCH__default__INSTPTR;
+  CONFIGURED: __ghdl_bool_type;
+  ix: std__standard__integer__BT;
+  inst: __ghdl_component_link_type;
+END RECORD;
+
+TYPE work__repro__ARCH__default__g__INSTARRTYPE IS ARRAY [__ghdl_index_type] OF
+   work__repro__ARCH__default__g__INSTTYPE;
+
+TYPE work__repro__ARCH__default__g__INSTARRPTR IS ACCESS 
+  work__repro__ARCH__default__g__INSTARRTYPE;
+
+TYPE work__repro__ARCH__default__INSTTYPE IS RECORD
+  ENTITY: work__repro__INSTTYPE;
+  g: work__repro__ARCH__default__g__INSTARRPTR;
+END RECORD;
+
+PUBLIC CONSTANT work__repro__ARCH__default__INSTSIZE : __ghdl_index_type;
+
+CONSTANT work__repro__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof (
+  work__repro__ARCH__default__INSTTYPE);
+
+PUBLIC PROCEDURE work__repro__ARCH__default__DECL_ELAB (
+  INSTANCE: work__repro__INSTPTR);
+
+PUBLIC PROCEDURE work__repro__ARCH__default__STMT_ELAB (
+  INSTANCE: work__repro__INSTPTR);
+
+PUBLIC CONSTANT work__repro__ARCH__default__RTI : __ghdl_rtin_block_file;
+
+PUBLIC CONSTANT work__repro__ARCH__default__g__ITERATOR__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+CONSTANT work__repro__ARCH__default__g__ITERATOR__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_subtype_scalar], 0, 0, 0}, __ghdl_char_ptr'[NULL],
+   __ghdl_rti_access'unchecked_address (std__standard__integer__BT__RTI),
+   __ghdl_ptr'unchecked_address (work__repro__ARCH__default__g__ix__OT__STR)};
+
+PUBLIC CONSTANT work__repro__ARCH__default__g__RTI : __ghdl_rtin_generate;
+
+PUBLIC CONSTANT work__repro__ARCH__default__g__BOD__RTI : __ghdl_rtin_block;
+
+PUBLIC CONSTANT work__repro__ARCH__default__g__BOD__ix__RTI : 
+  __ghdl_rtin_object;
+
+PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__ix__RTISTR : SUBARRAY 
+  __ghdl_chararray[3];
+
+CONSTANT work__repro__ARCH__default__g__BOD__ix__RTISTR := {105, 120, 0};
+
+CONSTANT work__repro__ARCH__default__g__BOD__ix__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_iterator], 3, 0, 0},
+   __ghdl_char_ptr'unchecked_address (
+  work__repro__ARCH__default__g__BOD__ix__RTISTR),
+   __ghdl_ptr'offsetof (work__repro__ARCH__default__g__INSTTYPE.ix),
+   __ghdl_rti_access'unchecked_address (
+  work__repro__ARCH__default__g__ITERATOR__RTI), 4112};
+
+PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__inst__RTISTR : SUBARRAY 
+  __ghdl_chararray[5];
+
+CONSTANT work__repro__ARCH__default__g__BOD__inst__RTISTR := {105, 110, 115,
+   116, 0};
+
+PUBLIC CONSTANT work__repro__ARCH__default__g__BOD__inst__RTI : 
+  __ghdl_rtin_instance;
+
+CONSTANT work__repro__ARCH__default__g__BOD__inst__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_instance], 3, 0, 0},
+   __ghdl_char_ptr'address (work__repro__ARCH__default__g__BOD__inst__RTISTR),
+   4624, __ghdl_ptr'offsetof (work__repro__ARCH__default__g__INSTTYPE.inst),
+   __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__BOD__RTI
+  ), __ghdl_rti_access'unchecked_address (work__inc__RTI)};
+
+PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__RTISTR : SUBARRAY 
+  __ghdl_chararray[1];
+
+CONSTANT work__repro__ARCH__default__g__BOD__RTISTR := {0};
+
+PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[3];
+
+CONSTANT work__repro__ARCH__default__g__BOD__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (
+  work__repro__ARCH__default__g__BOD__ix__RTI),
+   __ghdl_rti_access'unchecked_address (
+  work__repro__ARCH__default__g__BOD__inst__RTI), __ghdl_rti_access'[NULL]};
+
+CONSTANT work__repro__ARCH__default__g__BOD__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_generate_body], 3, 0, 0},
+   __ghdl_char_ptr'address (work__repro__ARCH__default__g__BOD__RTISTR),
+   __ghdl_ptr'[NULL], 4360,
+   __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__RTI),
+   2,
+   __ghdl_rti_arr_acc'address (work__repro__ARCH__default__g__BOD__RTIARRAY)};
+
+PRIVATE CONSTANT work__repro__ARCH__default__g__RTISTR : SUBARRAY 
+  __ghdl_chararray[2];
+
+CONSTANT work__repro__ARCH__default__g__RTISTR := {103, 0};
+
+CONSTANT work__repro__ARCH__default__g__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_for_generate], 2, 0, 0},
+   __ghdl_char_ptr'address (work__repro__ARCH__default__g__RTISTR),
+   __ghdl_ptr'offsetof (work__repro__ARCH__default__INSTTYPE.g), 4104,
+   __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__RTI),
+   __ghdl_index_type'sizeof (work__repro__ARCH__default__g__INSTTYPE),
+   __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__BOD__RTI
+  )};
+
+PRIVATE CONSTANT work__repro__ARCH__default__RTISTR : SUBARRAY __ghdl_chararray
+  [8];
+
+CONSTANT work__repro__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108,
+   116, 0};
+
+PRIVATE CONSTANT work__repro__ARCH__default__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[3];
+
+CONSTANT work__repro__ARCH__default__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (
+  work__repro__ARCH__default__g__ITERATOR__RTI),
+   __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__RTI),
+   __ghdl_rti_access'[NULL]};
+
+CONSTANT work__repro__ARCH__default__RTI := {{
+  {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0},
+   __ghdl_char_ptr'address (work__repro__ARCH__default__RTISTR),
+   __ghdl_ptr'offsetof (work__repro__ARCH__default__INSTTYPE.ENTITY), 3598,
+   __ghdl_rti_access'unchecked_address (work__repro__RTI), 2,
+   __ghdl_rti_arr_acc'address (work__repro__ARCH__default__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+
+PRIVATE PROCEDURE work__repro__ARCH__default__g__inst__COMP_ELAB (
+  INSTANCE: work__repro__ARCH__default__g__INSTPTR)
+DECLARE
+  EXTERNAL CONSTANT work__inc__LASTARCH__INSTSIZE : __ghdl_index_type;
+  EXTERNAL PROCEDURE work__inc__LASTARCH__DECL_ELAB (
+    INSTANCE: work__inc__INSTPTR);
+  EXTERNAL PROCEDURE work__inc__LASTARCH__STMT_ELAB (
+    INSTANCE: work__inc__INSTPTR);
+  EXTERNAL PROCEDURE work__inc__LASTARCH__DEFAULT_CONFIG (
+    INSTANCE: work__inc__INSTPTR);
+  LOCAL VAR SUB_INSTANCE : work__inc__INSTPTR;
+  LOCAL VAR U0__SIZE : __ghdl_index_type;
+  LOCAL VAR U0__STB : std__standard__bit_vector__BOUND;
+BEGIN
+  --# 18
+  INSTANCE.ALL.inst.stmt := __ghdl_rti_access'unchecked_address (
+    work__repro__ARCH__default__g__BOD__inst__RTI);
+  SUB_INSTANCE := work__inc__INSTPTR'conv (__ghdl_malloc0 (
+    work__inc__LASTARCH__INSTSIZE));
+  INSTANCE.ALL.inst.INSTANCE := __ghdl_entity_link_acc'address (SUB_INSTANCE.
+    ALL.RTI);
+  SUB_INSTANCE.ALL.RTI.parent := __ghdl_component_link_acc'address (INSTANCE.
+    ALL.inst);
+  work__inc__PKG_ELAB ();
+  DECLARE
+    LOCAL VAR T0_0 : std__standard__integer__BT;
+  BEGIN
+    T0_0 := std__standard__integer__BT'conv (INSTANCE.ALL.ix);
+    IF __ghdl_bool_type'(T0_0 < 0) THEN
+      __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 19);
+    END IF;
+    SUB_INSTANCE.ALL.v := T0_0;
+  END;
+  DECLARE
+    LOCAL VAR T2_0 : std__standard__integer__BT__TRPTR;
+  BEGIN
+    T2_0 := std__standard__integer__BT__TRPTR'address (U0__STB.dim_1);
+    T2_0.ALL.left := std__standard__integer__BT'conv (
+      std__standard__integer__BT'[0]);
+    T2_0.ALL.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix);
+    T2_0.ALL.dir := __ghdl_dir_type'[dir_to];
+    DECLARE
+      LOCAL VAR T4_0 : __ghdl_index_type;
+    BEGIN
+      DECLARE
+        LOCAL VAR T5_0 : __ghdl_i32;
+      BEGIN
+        T5_0 := (__ghdl_i32'conv (T2_0.ALL.right) -# __ghdl_i32'conv (T2_0.ALL.
+          left));
+        IF __ghdl_bool_type'(T5_0 < 0) THEN
+          T4_0 := 0;
+        ELSE
+          T4_0 := (__ghdl_index_type'conv (T5_0) +# 1);
+        END IF;
+      END;
+      T2_0.ALL.length := T4_0;
+    END;
+  END;
+  U0__SIZE := (U0__STB.dim_1.length *# __ghdl_index_type'sizeof (
+    std__standard__bit));
+  DECLARE
+    LOCAL VAR T0_0 : std__standard__bit_vector__PTR;
+  BEGIN
+    T0_0 := std__standard__bit_vector__PTR'address (SUB_INSTANCE.ALL.vec);
+    T0_0.ALL.BOUNDS := std__standard__bit_vector__BOUNDP'address (U0__STB);
+    T0_0.ALL.BOUNDS := std__standard__bit_vector__BOUNDP'conv (__ghdl_malloc0 (
+      __ghdl_index_type'sizeof (std__standard__bit_vector__BOUND)));
+    __ghdl_memcpy (__ghdl_ptr'conv (T0_0.ALL.BOUNDS), __ghdl_ptr'conv (
+      std__standard__bit_vector__BOUNDP'address (U0__STB)), __ghdl_index_type
+      'sizeof (std__standard__bit_vector__BOUND));
+    T0_0.ALL.BASE := std__standard__bit_vector__BASEP'conv (__ghdl_malloc0 ((
+      T0_0.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof (
+      std__standard__bit))));
+    DECLARE
+      LOCAL VAR T1_0 : std__standard__bit_vector__BASEP;
+      LOCAL VAR T1_1 : std__standard__bit_vector__BOUNDP;
+      LOCAL VAR T1_2 : __ghdl_index_type;
+    BEGIN
+      T1_0 := T0_0.ALL.BASE;
+      T1_1 := T0_0.ALL.BOUNDS;
+      DECLARE
+        LOCAL VAR T2_0 : std__standard__integer__BT__TRT;
+      BEGIN
+        T2_0.left := std__standard__integer__BT'conv (
+          std__standard__integer__BT'[0]);
+        T2_0.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix);
+        T2_0.dir := __ghdl_dir_type'[dir_to];
+        DECLARE
+          LOCAL VAR T4_0 : __ghdl_index_type;
+        BEGIN
+          DECLARE
+            LOCAL VAR T5_0 : __ghdl_i32;
+          BEGIN
+            T5_0 := (__ghdl_i32'conv (T2_0.right) -# __ghdl_i32'conv (T2_0.left
+              ));
+            IF __ghdl_bool_type'(T5_0 < 0) THEN
+              T4_0 := 0;
+            ELSE
+              T4_0 := (__ghdl_index_type'conv (T5_0) +# 1);
+            END IF;
+          END;
+          T2_0.length := T4_0;
+        END;
+        IF __ghdl_bool_type'(T2_0.length /= T1_1.ALL.dim_1.length) THEN
+          __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 20)
+            ;
+        END IF;
+      END;
+      T1_2 := 0;
+      DECLARE
+        LOCAL VAR T2_0 : __ghdl_index_type;
+        LOCAL VAR T2_1 : __ghdl_index_type;
+        LOCAL VAR T2_2 : __ghdl_index_type;
+      BEGIN
+        DECLARE
+          LOCAL VAR T3_0 : __ghdl_i32;
+        BEGIN
+          T3_0 := (__ghdl_i32'conv (INSTANCE.ALL.ix) -# __ghdl_i32'conv (
+            std__standard__integer__BT'[0]));
+          IF __ghdl_bool_type'(T3_0 < 0) THEN
+            T2_0 := 0;
+          ELSE
+            T2_0 := (__ghdl_index_type'conv (T3_0) +# 1);
+          END IF;
+        END;
+        T2_1 := T2_0;
+        T2_2 := 0;
+        LOOP 1:
+          IF __ghdl_bool_type'(T2_2 = T2_1) THEN
+            EXIT LOOP 1;
+          END IF;
+          T1_0.ALL[T1_2] := std__standard__bit'[C_1];
+          T1_2 := (T1_2 +# 1);
+          T2_2 := (T2_2 +# 1);
+        END LOOP;
+      END;
+    END;
+  END;
+  work__inc__LASTARCH__DECL_ELAB (SUB_INSTANCE);
+  work__inc__LASTARCH__STMT_ELAB (SUB_INSTANCE);
+  work__inc__LASTARCH__DEFAULT_CONFIG (work__inc__INSTPTR'conv (SUB_INSTANCE));
+END;
+
+PUBLIC PROCEDURE work__repro__ARCH__default__DECL_ELAB (
+  INSTANCE: work__repro__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__repro__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__repro__ARCH__default__INSTPTR'conv (INSTANCE);
+  INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address (
+    work__repro__ARCH__default__RTI);
+  work__repro__DECL_ELAB (INSTANCE);
+  --# 14
+  --# 14
+  DECLARE
+    LOCAL VAR T0_0 : std__standard__integer__BT__TRPTR;
+    LOCAL VAR T0_1 : work__repro__ARCH__default__g__INSTARRPTR;
+    LOCAL VAR T0_2 : __ghdl_index_type;
+    LOCAL VAR T0_3 : work__repro__ARCH__default__g__INSTPTR;
+    LOCAL VAR T0_4 : std__standard__integer__BT;
+  BEGIN
+    T0_0 := std__standard__integer__BT__TRPTR'address (
+      work__repro__ARCH__default__g__ix__OT__STR);
+    T0_1 := work__repro__ARCH__default__g__INSTARRPTR'conv (__ghdl_malloc0 ((
+      T0_0.ALL.length *# __ghdl_index_type'sizeof (
+      work__repro__ARCH__default__g__INSTTYPE))));
+    ARCH_INSTANCE.ALL.g := T0_1;
+    T0_2 := 0;
+    LOOP 1:
+      IF __ghdl_bool_type'(T0_2 = T0_0.ALL.length) THEN
+        EXIT LOOP 1;
+      END IF;
+      T0_3 := work__repro__ARCH__default__g__INSTPTR'address (T0_1.ALL[T0_2]);
+      T0_3.ALL.ORIGIN := ARCH_INSTANCE;
+      T0_3.ALL.CONFIGURED := __ghdl_bool_type'[false];
+      IF __ghdl_bool_type'(T0_0.ALL.dir = __ghdl_dir_type'[dir_to]) THEN
+        T0_4 := T0_0.ALL.left;
+      ELSE
+        T0_4 := T0_0.ALL.right;
+      END IF;
+      T0_3.ALL.ix := (T0_4 +# std__standard__integer__BT'conv (T0_2));
+      --# 17
+      work__repro__ARCH__default__g__inst__COMP_ELAB (T0_3);
+      T0_2 := (T0_2 +# 1);
+    END LOOP;
+  END;
+END;
+
+PUBLIC PROCEDURE work__repro__ARCH__default__STMT_ELAB (
+  INSTANCE: work__repro__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__repro__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__repro__ARCH__default__INSTPTR'conv (INSTANCE);
+  work__repro__STMT_ELAB (INSTANCE);
+  --# 14
+  DECLARE
+    LOCAL VAR T0_0 : work__repro__ARCH__default__g__INSTARRPTR;
+    LOCAL VAR T0_1 : __ghdl_index_type;
+    LOCAL VAR T0_2 : __ghdl_index_type;
+    LOCAL VAR T0_3 : work__repro__ARCH__default__g__INSTPTR;
+  BEGIN
+    T0_0 := ARCH_INSTANCE.ALL.g;
+    T0_1 := work__repro__ARCH__default__g__ix__OT__STR.length;
+    T0_2 := 0;
+    LOOP 1:
+      IF __ghdl_bool_type'(T0_2 = T0_1) THEN
+        EXIT LOOP 1;
+      END IF;
+      T0_3 := work__repro__ARCH__default__g__INSTPTR'address (T0_0.ALL[T0_2]);
+      T0_2 := (T0_2 +# 1);
+    END LOOP;
+  END;
+END;
+
diff --git a/testsuite/gna/issue626/repro.vhdl b/testsuite/gna/issue626/repro.vhdl
new file mode 100644
index 000000000..c58885b20
--- /dev/null
+++ b/testsuite/gna/issue626/repro.vhdl
@@ -0,0 +1,22 @@
+entity inc is
+	generic (v : natural; vec : bit_vector);
+end entity;
+
+architecture default of inc is
+begin
+  assert vec'left = 0 severity failure;
+  assert vec'right = v severity failure;
+  assert false report integer'image(vec'right);
+end architecture;
+
+entity repro is end entity;
+
+architecture default of repro is
+begin
+	g : for ix in 0 to 4 generate
+	begin
+		inst : entity work.inc
+                  generic map (v => ix,
+                               vec   => (0 to ix => '1'));
+	end generate;
+end architecture;
diff --git a/testsuite/gna/issue626/testsuite.sh b/testsuite/gna/issue626/testsuite.sh
new file mode 100755
index 000000000..040ac7205
--- /dev/null
+++ b/testsuite/gna/issue626/testsuite.sh
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+analyze repro.vhdl
+elab_simulate repro
+analyze top.vhdl
+elab_simulate top_ent
+
+clean
+
+echo "Test successful"
diff --git a/testsuite/gna/issue626/top.on b/testsuite/gna/issue626/top.on
new file mode 100644
index 000000000..be71e3424
--- /dev/null
+++ b/testsuite/gna/issue626/top.on
@@ -0,0 +1,2845 @@
+-- internal declarations, part 1
+
+TYPE __ghdl_size_type IS UNSIGNED (32);
+
+TYPE __ghdl_index_type IS UNSIGNED (32);
+
+TYPE __ghdl_i32 IS SIGNED (32);
+
+TYPE __ghdl_real IS FLOAT;
+
+TYPE __ghdl_i64 IS SIGNED (64);
+
+TYPE __ghdl_file_index IS UNSIGNED (32);
+
+TYPE __ghdl_file_index_ptr IS ACCESS __ghdl_file_index;
+
+TYPE __ghdl_char IS UNSIGNED (8);
+
+TYPE __ghdl_chararray IS ARRAY [__ghdl_index_type] OF __ghdl_char;
+
+TYPE __ghdl_char_ptr IS ACCESS __ghdl_chararray;
+
+TYPE __ghdl_char_ptr_array IS ARRAY [__ghdl_index_type] OF __ghdl_char_ptr;
+
+TYPE __ghdl_char_ptr_array_ptr IS ACCESS __ghdl_char_ptr_array;
+
+TYPE __ghdl_ptr IS ACCESS __ghdl_char;
+
+TYPE __ghdl_str_len IS RECORD
+  len: __ghdl_index_type;
+  str: __ghdl_char_ptr;
+END RECORD;
+
+TYPE __ghdl_str_len_array IS ARRAY [__ghdl_index_type] OF __ghdl_str_len;
+
+TYPE __ghdl_str_len_ptr IS ACCESS __ghdl_str_len;
+
+TYPE __ghdl_bool_type IS BOOLEAN {false, true};
+
+TYPE __ghdl_bool_array_type IS ARRAY [__ghdl_index_type] OF __ghdl_bool_type;
+
+TYPE __ghdl_bool_array_ptr IS ACCESS __ghdl_bool_array_type;
+
+TYPE __ghdl_sizes_type IS RECORD
+  size_val: __ghdl_index_type;
+  size_sig: __ghdl_index_type;
+END RECORD;
+
+TYPE __ghdl_compare_type IS ENUM {lt, eq, gt};
+
+TYPE __ghdl_location IS RECORD
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32;
+  col: __ghdl_i32;
+END RECORD;
+
+TYPE __ghdl_location_ptr IS ACCESS __ghdl_location;
+
+TYPE __ghdl_dir_type IS ENUM {dir_to, dir_downto};
+
+TYPE __ghdl_signal IS RECORD;
+
+TYPE __ghdl_signal_ptr IS ACCESS __ghdl_signal;
+
+EXTERNAL FUNCTION __ghdl_alloc (
+  size: __ghdl_size_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL PROCEDURE __ghdl_program_error (
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32;
+  code: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_bound_check_failed (
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_direction_check_failed (
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_stack2_allocate (
+  size: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_stack2_mark (
+  )
+  RETURN __ghdl_ptr;
+
+EXTERNAL PROCEDURE __ghdl_stack2_release (
+  mark: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_memcpy (
+  dest: __ghdl_ptr;
+  src: __ghdl_ptr;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_deallocate (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL FUNCTION __ghdl_malloc (
+  length: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_malloc0 (
+  length: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_text_file_elaborate (
+  )
+  RETURN __ghdl_file_index;
+
+EXTERNAL FUNCTION __ghdl_file_elaborate (
+  NAME: __ghdl_char_ptr)
+  RETURN __ghdl_file_index;
+
+EXTERNAL PROCEDURE __ghdl_file_finalize (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_text_file_finalize (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_protected_enter (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_protected_leave (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_protected_init (
+  OBJ: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_protected_fini (
+  OBJ: __ghdl_ptr);
+
+TYPE __ghdl_rtik IS ENUM {__ghdl_rtik_top, __ghdl_rtik_library,
+   __ghdl_rtik_package, __ghdl_rtik_package_body, __ghdl_rtik_entity,
+   __ghdl_rtik_architecture, __ghdl_rtik_process, __ghdl_rtik_block,
+   __ghdl_rtik_if_generate, __ghdl_rtik_case_generate,
+   __ghdl_rtik_for_generate, __ghdl_rtik_generate_body, __ghdl_rtik_instance,
+   __ghdl_rtik_constant, __ghdl_rtik_iterator, __ghdl_rtik_variable,
+   __ghdl_rtik_signal, __ghdl_rtik_file, __ghdl_rtik_port,
+   __ghdl_rtik_generic, __ghdl_rtik_alias, __ghdl_rtik_guard,
+   __ghdl_rtik_component, __ghdl_rtik_attribute, __ghdl_rtik_type_b1,
+   __ghdl_rtik_type_e8, __ghdl_rtik_type_e32, __ghdl_rtik_type_i32,
+   __ghdl_rtik_type_i64, __ghdl_rtik_type_f64, __ghdl_rtik_type_p32,
+   __ghdl_rtik_type_p64, __ghdl_rtik_type_access, __ghdl_rtik_type_array,
+   __ghdl_rtik_type_record, __ghdl_rtik_type_unbounded_record,
+   __ghdl_rtik_type_file, __ghdl_rtik_subtype_scalar,
+   __ghdl_rtik_subtype_array, __ghdl_rtik_subtype_unconstrained_array,
+   __ghdl_rtik_subtype_record, __ghdl_rtik_subtype_unbounded_record,
+   __ghdl_rtik_subtype_access, __ghdl_rtik_type_protected,
+   __ghdl_rtik_element, __ghdl_rtik_unit64, __ghdl_rtik_unitptr,
+   __ghdl_rtik_attribute_transaction, __ghdl_rtik_attribute_quiet,
+   __ghdl_rtik_attribute_stable, __ghdl_rtik_psl_assert,
+   __ghdl_rtik_psl_cover, __ghdl_rtik_psl_endpoint, __ghdl_rtik_error};
+
+TYPE __ghdl_rti_depth IS UNSIGNED (8);
+
+TYPE __ghdl_rti_u8 IS UNSIGNED (8);
+
+TYPE __ghdl_rti_common IS RECORD
+  kind: __ghdl_rtik;
+  depth: __ghdl_rti_depth;
+  mode: __ghdl_rti_u8;
+  max_depth: __ghdl_rti_depth;
+END RECORD;
+
+TYPE __ghdl_rti_access IS ACCESS __ghdl_rti_common;
+
+TYPE __ghdl_rti_array IS ARRAY [__ghdl_index_type] OF __ghdl_rti_access;
+
+TYPE __ghdl_rti_arr_acc IS ACCESS __ghdl_rti_array;
+
+TYPE __ghdl_component_link_type IS RECORD;
+
+TYPE __ghdl_component_link_acc IS ACCESS __ghdl_component_link_type;
+
+TYPE __ghdl_entity_link_type IS RECORD
+  rti: __ghdl_rti_access;
+  parent: __ghdl_component_link_acc;
+END RECORD;
+
+TYPE __ghdl_entity_link_acc IS ACCESS __ghdl_entity_link_type;
+
+TYPE __ghdl_component_link_type IS RECORD
+  INSTANCE: __ghdl_entity_link_acc;
+  stmt: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_block IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  loc: __ghdl_ptr;
+  linecol: __ghdl_index_type;
+  parent: __ghdl_rti_access;
+  nbr_child: __ghdl_index_type;
+  children: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_generate IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  loc: __ghdl_ptr;
+  linecol: __ghdl_index_type;
+  parent: __ghdl_rti_access;
+  size: __ghdl_index_type;
+  child: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_block_file IS RECORD
+  block: __ghdl_rtin_block;
+  filename: __ghdl_char_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_scalar IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_enum IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbr: __ghdl_index_type;
+  lits: __ghdl_char_ptr_array_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_subtype_scalar IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  base: __ghdl_rti_access;
+  range: __ghdl_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_unit64 IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  val: __ghdl_i64;
+END RECORD;
+
+TYPE __ghdl_rtin_unitptr IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  addr: __ghdl_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_physical IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbr: __ghdl_index_type;
+  units: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_type_fileacc IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  base: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_type_array IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  element: __ghdl_rti_access;
+  nbr_dim: __ghdl_index_type;
+  indexes: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_subtype_composite IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  basetype: __ghdl_rti_access;
+  bounds: __ghdl_ptr;
+  val_size: __ghdl_ptr;
+  sig_size: __ghdl_ptr;
+END RECORD;
+
+TYPE __ghdl_rtin_type_record IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbrel: __ghdl_index_type;
+  elements: __ghdl_rti_arr_acc;
+END RECORD;
+
+TYPE __ghdl_rtin_element IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  eltype: __ghdl_rti_access;
+  val_off: __ghdl_index_type;
+  sig_off: __ghdl_index_type;
+END RECORD;
+
+TYPE __ghdl_rtin_object IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  loc: __ghdl_ptr;
+  obj_type: __ghdl_rti_access;
+  linecol: __ghdl_index_type;
+END RECORD;
+
+TYPE __ghdl_rtin_instance IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  linecol: __ghdl_index_type;
+  loc: __ghdl_ptr;
+  parent: __ghdl_rti_access;
+  instance: __ghdl_rti_access;
+END RECORD;
+
+TYPE __ghdl_rtin_component IS RECORD
+  common: __ghdl_rti_common;
+  name: __ghdl_char_ptr;
+  nbr_child: __ghdl_index_type;
+  children: __ghdl_rti_arr_acc;
+END RECORD;
+
+EXTERNAL PROCEDURE __ghdl_signal_name_rti (
+  OBJ: __ghdl_rti_access;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_sensitized_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_postponed_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_postponed_sensitized_process_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_finalize_register (
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr);
+
+-- package std.standard
+
+TYPE std__standard__boolean IS BOOLEAN {false, true};
+
+TYPE std__standard__boolean__PTR IS ACCESS std__standard__boolean;
+
+TYPE std__standard__boolean__TRT IS RECORD
+  left: std__standard__boolean;
+  right: std__standard__boolean;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__boolean__TRPTR IS ACCESS std__standard__boolean__TRT;
+
+TYPE std__standard__BOOLEAN_ARRAY IS ARRAY [__ghdl_index_type] OF 
+  std__standard__boolean;
+
+TYPE std__standard__bit IS BOOLEAN {C_0, C_1};
+
+TYPE std__standard__bit__PTR IS ACCESS std__standard__bit;
+
+TYPE std__standard__bit__TRT IS RECORD
+  left: std__standard__bit;
+  right: std__standard__bit;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__bit__TRPTR IS ACCESS std__standard__bit__TRT;
+
+TYPE std__standard__character IS ENUM {nul, soh, stx, etx, eot, enq, ack, bel,
+   bs, ht, lf, vt, ff, cr, so, si, dle, dc1, dc2, dc3, dc4, nak, syn, etb,
+   can, em, sub, esc, fsp, gsp, rsp, usp, C20, C21, C22, C23, C24, C25, C26,
+   C27, C28, C29, C2a, C2b, C2c, C2d, C2e, C2f, C_0, C_1, C_2, C_3, C_4, C_5,
+   C_6, C_7, C_8, C_9, C3a, C3b, C3c, C3d, C3e, C3f, C40, C_A, C_B, C_C, C_D,
+   C_E, C_F, C_G, C_H, C_I, C_J, C_K, C_L, C_M, C_N, C_O, C_P, C_Q, C_R, C_S,
+   C_T, C_U, C_V, C_W, C_X, C_Y, C_Z, C5b, C5c, C5d, C5e, C5f, C60, C_a, C_b,
+   C_c, C_d, C_e, C_f, C_g, C_h, C_i, C_j, C_k, C_l, C_m, C_n, C_o, C_p, C_q,
+   C_r, C_s, C_t, C_u, C_v, C_w, C_x, C_y, C_z, C7b, C7c, C7d, C7e, del, c128,
+   c129, c130, c131, c132, c133, c134, c135, c136, c137, c138, c139, c140,
+   c141, c142, c143, c144, c145, c146, c147, c148, c149, c150, c151, c152,
+   c153, c154, c155, c156, c157, c158, c159, Ca0, Ca1, Ca2, Ca3, Ca4, Ca5,
+   Ca6, Ca7, Ca8, Ca9, Caa, Cab, Cac, Cad, Cae, Caf, Cb0, Cb1, Cb2, Cb3, Cb4,
+   Cb5, Cb6, Cb7, Cb8, Cb9, Cba, Cbb, Cbc, Cbd, Cbe, Cbf, Cc0, Cc1, Cc2, Cc3,
+   Cc4, Cc5, Cc6, Cc7, Cc8, Cc9, Cca, Ccb, Ccc, Ccd, Cce, Ccf, Cd0, Cd1, Cd2,
+   Cd3, Cd4, Cd5, Cd6, Cd7, Cd8, Cd9, Cda, Cdb, Cdc, Cdd, Cde, Cdf, Ce0, Ce1,
+   Ce2, Ce3, Ce4, Ce5, Ce6, Ce7, Ce8, Ce9, Cea, Ceb, Cec, Ced, Cee, Cef, Cf0,
+   Cf1, Cf2, Cf3, Cf4, Cf5, Cf6, Cf7, Cf8, Cf9, Cfa, Cfb, Cfc, Cfd, Cfe, Cff};
+
+TYPE std__standard__character__PTR IS ACCESS std__standard__character;
+
+TYPE std__standard__character__TRT IS RECORD
+  left: std__standard__character;
+  right: std__standard__character;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__character__TRPTR IS ACCESS std__standard__character__TRT;
+
+EXTERNAL CONSTANT std__standard__character__BTR : std__standard__character__TRT
+  ;
+
+TYPE std__standard__severity_level IS ENUM {note, warning, error, failure};
+
+TYPE std__standard__severity_level__PTR IS ACCESS std__standard__severity_level
+  ;
+
+TYPE std__standard__severity_level__TRT IS RECORD
+  left: std__standard__severity_level;
+  right: std__standard__severity_level;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__severity_level__TRPTR IS ACCESS 
+  std__standard__severity_level__TRT;
+
+EXTERNAL CONSTANT std__standard__severity_level__BTR : 
+  std__standard__severity_level__TRT;
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT IS SIGNED (64);
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT__PTR IS ACCESS 
+  std__standard__UNIVERSAL_INTEGER__BT;
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT__TRT IS RECORD
+  left: std__standard__UNIVERSAL_INTEGER__BT;
+  right: std__standard__UNIVERSAL_INTEGER__BT;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__UNIVERSAL_INTEGER__BT__TRPTR IS ACCESS 
+  std__standard__UNIVERSAL_INTEGER__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__STR : 
+  std__standard__UNIVERSAL_INTEGER__BT__TRT;
+
+TYPE std__standard__UNIVERSAL_REAL__BT IS FLOAT;
+
+TYPE std__standard__UNIVERSAL_REAL__BT__PTR IS ACCESS 
+  std__standard__UNIVERSAL_REAL__BT;
+
+TYPE std__standard__UNIVERSAL_REAL__BT__TRT IS RECORD
+  left: std__standard__UNIVERSAL_REAL__BT;
+  right: std__standard__UNIVERSAL_REAL__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__UNIVERSAL_REAL__BT__TRPTR IS ACCESS 
+  std__standard__UNIVERSAL_REAL__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__STR : 
+  std__standard__UNIVERSAL_REAL__BT__TRT;
+
+TYPE std__standard__integer__BT IS SIGNED (32);
+
+TYPE std__standard__integer__BT__PTR IS ACCESS std__standard__integer__BT;
+
+TYPE std__standard__integer__BT__TRT IS RECORD
+  left: std__standard__integer__BT;
+  right: std__standard__integer__BT;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__integer__BT__TRPTR IS ACCESS 
+  std__standard__integer__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__integer__STR : std__standard__integer__BT__TRT
+  ;
+
+TYPE std__standard__real__BT IS FLOAT;
+
+TYPE std__standard__real__BT__PTR IS ACCESS std__standard__real__BT;
+
+TYPE std__standard__real__BT__TRT IS RECORD
+  left: std__standard__real__BT;
+  right: std__standard__real__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__real__BT__TRPTR IS ACCESS std__standard__real__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__real__STR : std__standard__real__BT__TRT;
+
+TYPE std__standard__time__BT IS SIGNED (64);
+
+TYPE std__standard__time__BT__PTR IS ACCESS std__standard__time__BT;
+
+TYPE std__standard__time__BT__TRT IS RECORD
+  left: std__standard__time__BT;
+  right: std__standard__time__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__time__BT__TRPTR IS ACCESS std__standard__time__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__time__STR : std__standard__time__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__delay_length__STR : 
+  std__standard__time__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__natural__STR : std__standard__integer__BT__TRT
+  ;
+
+EXTERNAL CONSTANT std__standard__positive__STR : 
+  std__standard__integer__BT__TRT;
+
+TYPE std__standard__string__BASE IS ARRAY [__ghdl_index_type] OF 
+  std__standard__character;
+
+TYPE std__standard__string__BASEP IS ACCESS std__standard__string__BASE;
+
+TYPE std__standard__string__SIGBASE IS ARRAY [__ghdl_index_type] OF 
+  __ghdl_signal_ptr;
+
+TYPE std__standard__string__SIGBASEP IS ACCESS std__standard__string__SIGBASE;
+
+TYPE std__standard__string__BOUND IS RECORD
+  dim_1: std__standard__integer__BT__TRT;
+END RECORD;
+
+TYPE std__standard__string__BOUNDP IS ACCESS std__standard__string__BOUND;
+
+TYPE std__standard__string IS RECORD
+  BASE: std__standard__string__BASEP;
+  BOUNDS: std__standard__string__BOUNDP;
+END RECORD;
+
+TYPE std__standard__string__PTR IS ACCESS std__standard__string;
+
+TYPE std__standard__string__SIG IS RECORD
+  BASE: std__standard__string__SIGBASEP;
+  BOUNDS: std__standard__string__BOUNDP;
+END RECORD;
+
+TYPE std__standard__string__SIGPTR IS ACCESS std__standard__string__SIG;
+
+EXTERNAL FUNCTION std__standard__string_EQ (
+  left: std__standard__string__PTR;
+  right: std__standard__string__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION std__standard__string_CMP (
+  left: std__standard__string__PTR;
+  right: std__standard__string__PTR)
+  RETURN __ghdl_compare_type;
+
+TYPE std__standard__bit_vector__BASE IS ARRAY [__ghdl_index_type] OF 
+  std__standard__bit;
+
+TYPE std__standard__bit_vector__BASEP IS ACCESS std__standard__bit_vector__BASE
+  ;
+
+TYPE std__standard__bit_vector__SIGBASE IS ARRAY [__ghdl_index_type] OF 
+  __ghdl_signal_ptr;
+
+TYPE std__standard__bit_vector__SIGBASEP IS ACCESS 
+  std__standard__bit_vector__SIGBASE;
+
+TYPE std__standard__bit_vector__BOUND IS RECORD
+  dim_1: std__standard__integer__BT__TRT;
+END RECORD;
+
+TYPE std__standard__bit_vector__BOUNDP IS ACCESS 
+  std__standard__bit_vector__BOUND;
+
+TYPE std__standard__bit_vector IS RECORD
+  BASE: std__standard__bit_vector__BASEP;
+  BOUNDS: std__standard__bit_vector__BOUNDP;
+END RECORD;
+
+TYPE std__standard__bit_vector__PTR IS ACCESS std__standard__bit_vector;
+
+TYPE std__standard__bit_vector__SIG IS RECORD
+  BASE: std__standard__bit_vector__SIGBASEP;
+  BOUNDS: std__standard__bit_vector__BOUNDP;
+END RECORD;
+
+TYPE std__standard__bit_vector__SIGPTR IS ACCESS std__standard__bit_vector__SIG
+  ;
+
+EXTERNAL FUNCTION std__standard__bit_vector_EQ (
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION std__standard__bit_vector_CMP (
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR)
+  RETURN __ghdl_compare_type;
+
+EXTERNAL PROCEDURE std__standard__bit_vector_NOT (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_AND (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_OR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_NAND (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_NOR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_XOR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_XNOR (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_SHL (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__integer__BT);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_SHA (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__integer__BT);
+
+EXTERNAL PROCEDURE std__standard__bit_vector_ROT (
+  res: std__standard__bit_vector__PTR;
+  left: std__standard__bit_vector__PTR;
+  right: std__standard__integer__BT);
+
+TYPE std__standard__file_open_kind IS ENUM {read_mode, write_mode,
+   append_mode};
+
+TYPE std__standard__file_open_kind__PTR IS ACCESS std__standard__file_open_kind
+  ;
+
+TYPE std__standard__file_open_kind__TRT IS RECORD
+  left: std__standard__file_open_kind;
+  right: std__standard__file_open_kind;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__file_open_kind__TRPTR IS ACCESS 
+  std__standard__file_open_kind__TRT;
+
+EXTERNAL CONSTANT std__standard__file_open_kind__BTR : 
+  std__standard__file_open_kind__TRT;
+
+TYPE std__standard__file_open_status IS ENUM {open_ok, status_error,
+   name_error, mode_error};
+
+TYPE std__standard__file_open_status__PTR IS ACCESS 
+  std__standard__file_open_status;
+
+TYPE std__standard__file_open_status__TRT IS RECORD
+  left: std__standard__file_open_status;
+  right: std__standard__file_open_status;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__file_open_status__TRPTR IS ACCESS 
+  std__standard__file_open_status__TRT;
+
+EXTERNAL CONSTANT std__standard__file_open_status__BTR : 
+  std__standard__file_open_status__TRT;
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT IS SIGNED (64);
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT__PTR IS ACCESS 
+  std__standard__CONVERTIBLE_INTEGER__BT;
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRT IS RECORD
+  left: std__standard__CONVERTIBLE_INTEGER__BT;
+  right: std__standard__CONVERTIBLE_INTEGER__BT;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRPTR IS ACCESS 
+  std__standard__CONVERTIBLE_INTEGER__BT__TRT;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT IS FLOAT;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT__PTR IS ACCESS 
+  std__standard__CONVERTIBLE_REAL__BT;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT__TRT IS RECORD
+  left: std__standard__CONVERTIBLE_REAL__BT;
+  right: std__standard__CONVERTIBLE_REAL__BT;
+  dir: __ghdl_dir_type;
+END RECORD;
+
+TYPE std__standard__CONVERTIBLE_REAL__BT__TRPTR IS ACCESS 
+  std__standard__CONVERTIBLE_REAL__BT__TRT;
+
+EXTERNAL CONSTANT std__standard__RTI : __ghdl_rtin_block;
+
+EXTERNAL CONSTANT std__standard__boolean__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__bit__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__character__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__severity_level__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__BT__RTI : 
+  __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__BT__RTI : 
+  __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__integer__BT__RTI : __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__integer__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__real__BT__RTI : __ghdl_rtin_type_scalar;
+
+EXTERNAL CONSTANT std__standard__real__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__time__BT__RTI : __ghdl_rtin_type_physical;
+
+EXTERNAL CONSTANT std__standard__time__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__delay_length__RTI : __ghdl_rtin_subtype_scalar
+  ;
+
+EXTERNAL CONSTANT std__standard__natural__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__positive__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT std__standard__string__RTI : __ghdl_rtin_type_array;
+
+EXTERNAL CONSTANT std__standard__bit_vector__RTI : __ghdl_rtin_type_array;
+
+EXTERNAL CONSTANT std__standard__file_open_kind__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__file_open_status__RTI : __ghdl_rtin_type_enum;
+
+EXTERNAL CONSTANT std__standard__foreign__RTI : __ghdl_rtin_object;
+
+TYPE __ghdl_std_ulogic_boolean_array_type IS SUBARRAY 
+  std__standard__BOOLEAN_ARRAY[9];
+
+EXTERNAL CONSTANT __ghdl_std_ulogic_to_boolean_array : 
+  __ghdl_std_ulogic_boolean_array_type;
+
+-- internal declarations, part 2
+
+EXTERNAL VAR __ghdl_now : std__standard__time__BT;
+
+EXTERNAL PROCEDURE __ghdl_assert_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_ieee_assert_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_psl_assert_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_psl_cover (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_psl_cover_failed (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_report (
+  msg: std__standard__string__PTR;
+  severity: std__standard__severity_level;
+  location: __ghdl_location_ptr);
+
+EXTERNAL PROCEDURE __ghdl_text_write (
+  file: __ghdl_file_index;
+  str: std__standard__string__PTR);
+
+EXTERNAL FUNCTION __ghdl_text_read_length (
+  file: __ghdl_file_index;
+  str: std__standard__string__PTR)
+  RETURN std__standard__integer__BT;
+
+EXTERNAL PROCEDURE __ghdl_write_scalar (
+  file: __ghdl_file_index;
+  ptr: __ghdl_ptr;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_read_scalar (
+  file: __ghdl_file_index;
+  ptr: __ghdl_ptr;
+  length: __ghdl_index_type);
+
+EXTERNAL FUNCTION __ghdl_real_exp (
+  left: std__standard__real__BT;
+  right: std__standard__integer__BT)
+  RETURN std__standard__real__BT;
+
+EXTERNAL FUNCTION __ghdl_integer_exp (
+  left: std__standard__integer__BT;
+  right: std__standard__integer__BT)
+  RETURN std__standard__integer__BT;
+
+EXTERNAL PROCEDURE __ghdl_image_b1 (
+  res: std__standard__string__PTR;
+  val: __ghdl_bool_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_b1 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_bool_type;
+
+EXTERNAL PROCEDURE __ghdl_image_e8 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_e8 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_e32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_e32 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_i32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_value_i32 (
+  val: std__standard__string__PTR)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_i64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64);
+
+EXTERNAL FUNCTION __ghdl_value_i64 (
+  val: std__standard__string__PTR)
+  RETURN __ghdl_i64;
+
+EXTERNAL PROCEDURE __ghdl_image_p32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_p32 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_image_p64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL FUNCTION __ghdl_value_p64 (
+  val: std__standard__string__PTR;
+  rti: __ghdl_rti_access)
+  RETURN __ghdl_i64;
+
+EXTERNAL PROCEDURE __ghdl_image_f64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_real);
+
+EXTERNAL FUNCTION __ghdl_value_f64 (
+  val: std__standard__string__PTR)
+  RETURN __ghdl_real;
+
+EXTERNAL PROCEDURE __ghdl_text_file_open (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR);
+
+EXTERNAL PROCEDURE __ghdl_file_open (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR);
+
+EXTERNAL FUNCTION __ghdl_text_file_open_status (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_file_open_status (
+  file: __ghdl_file_index;
+  mode: __ghdl_i32;
+  str: std__standard__string__PTR)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_file_endfile (
+  file: __ghdl_file_index)
+  RETURN std__standard__boolean;
+
+EXTERNAL PROCEDURE __ghdl_text_file_close (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_file_close (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_file_flush (
+  file: __ghdl_file_index);
+
+EXTERNAL PROCEDURE __ghdl_signal_create_resolution (
+  func: __ghdl_ptr;
+  INSTANCE: __ghdl_ptr;
+  sig: __ghdl_ptr;
+  nbr_sig: __ghdl_index_type);
+
+TYPE __ghdl_scalar_bytes IS SUBARRAY __ghdl_chararray[8];
+
+TYPE __ghdl_signal IS RECORD
+  driving_value: __ghdl_scalar_bytes;
+  last_value: __ghdl_scalar_bytes;
+  last_event: std__standard__time__BT;
+  last_active: std__standard__time__BT;
+  value: __ghdl_ptr;
+  event: std__standard__boolean;
+  active: std__standard__boolean;
+  has_active: __ghdl_bool_type;
+END RECORD;
+
+TYPE __ghdl_signal_ptr_ptr IS ACCESS __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_merge_rti (
+  sig: __ghdl_signal_ptr;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_source (
+  targ: __ghdl_signal_ptr;
+  src: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_effective_value (
+  targ: __ghdl_signal_ptr;
+  src: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_set_disconnect (
+  sig: __ghdl_signal_ptr;
+  time: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_disconnect (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL FUNCTION __ghdl_signal_get_nbr_drivers (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_index_type;
+
+EXTERNAL FUNCTION __ghdl_signal_get_nbr_ports (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_index_type;
+
+EXTERNAL FUNCTION __ghdl_signal_read_driver (
+  sig: __ghdl_signal_ptr;
+  num: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_signal_read_port (
+  sig: __ghdl_signal_ptr;
+  num: __ghdl_index_type)
+  RETURN __ghdl_ptr;
+
+EXTERNAL FUNCTION __ghdl_signal_driving (
+  sig: __ghdl_signal_ptr)
+  RETURN std__standard__boolean;
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_error (
+  sig: __ghdl_signal_ptr;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_error (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  after: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_error (
+  sig: __ghdl_signal_ptr;
+  after: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_null (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_null (
+  sig: __ghdl_signal_ptr;
+  after: std__standard__time__BT);
+
+EXTERNAL FUNCTION __ghdl_create_signal_e8 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_e8 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e8 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_e8 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_create_signal_e32 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_e32 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_e32 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_create_signal_b1 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_b1 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_bool_type;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_b1 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_bool_type);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_b1 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_bool_type;
+
+EXTERNAL FUNCTION __ghdl_create_signal_i32 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_i32 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i32 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i32);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_i32 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_create_signal_f64 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_f64 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_real;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_f64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_real);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_f64 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_real;
+
+EXTERNAL FUNCTION __ghdl_create_signal_i64 (
+  val_ptr: __ghdl_ptr;
+  resolv_func: __ghdl_ptr;
+  resolv_inst: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_init_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_signal_start_assign_i64 (
+  sig: __ghdl_signal_ptr;
+  reject: std__standard__time__BT;
+  val: __ghdl_i64;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_next_assign_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64;
+  after: std__standard__time__BT);
+
+EXTERNAL PROCEDURE __ghdl_signal_associate_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i64 (
+  sig: __ghdl_signal_ptr;
+  val: __ghdl_i64);
+
+EXTERNAL FUNCTION __ghdl_signal_driving_value_i64 (
+  sig: __ghdl_signal_ptr)
+  RETURN __ghdl_i64;
+
+EXTERNAL PROCEDURE __ghdl_process_add_sensitivity (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_add_driver (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_add_direct_driver (
+  sig: __ghdl_signal_ptr;
+  drv: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_direct_assign (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_signal_in_conversion (
+  func: __ghdl_ptr;
+  INSTANCE: __ghdl_ptr;
+  src: __ghdl_signal_ptr;
+  src_len: __ghdl_index_type;
+  dst: __ghdl_signal_ptr;
+  dst_len: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_signal_out_conversion (
+  func: __ghdl_ptr;
+  INSTANCE: __ghdl_ptr;
+  src: __ghdl_signal_ptr;
+  src_len: __ghdl_index_type;
+  dst: __ghdl_signal_ptr;
+  dst_len: __ghdl_index_type);
+
+EXTERNAL FUNCTION __ghdl_create_stable_signal (
+  val_ptr: __ghdl_ptr;
+  val: std__standard__time__BT)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL FUNCTION __ghdl_create_quiet_signal (
+  val_ptr: __ghdl_ptr;
+  val: std__standard__time__BT)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL FUNCTION __ghdl_create_transaction_signal (
+  val_ptr: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_attribute_register_prefix (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL FUNCTION __ghdl_create_delayed_signal (
+  sig: __ghdl_signal_ptr;
+  val_ptr: __ghdl_ptr;
+  val: std__standard__time__BT)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL FUNCTION __ghdl_signal_create_guard (
+  val_ptr: __ghdl_ptr;
+  this: __ghdl_ptr;
+  proc: __ghdl_ptr)
+  RETURN __ghdl_signal_ptr;
+
+EXTERNAL PROCEDURE __ghdl_signal_guard_dependence (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_exit (
+  );
+
+EXTERNAL PROCEDURE __ghdl_process_wait_timeout (
+  time: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_set_timeout (
+  time: std__standard__time__BT;
+  filename: __ghdl_char_ptr;
+  line: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_add_sensitivity (
+  sig: __ghdl_signal_ptr);
+
+EXTERNAL PROCEDURE __ghdl_process_wait_suspend (
+  );
+
+EXTERNAL FUNCTION __ghdl_process_wait_timed_out (
+  )
+  RETURN __ghdl_bool_type;
+
+EXTERNAL PROCEDURE __ghdl_process_wait_close (
+  );
+
+EXTERNAL PROCEDURE __ghdl_get_path_name (
+  res: std__standard__string__PTR;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr;
+  name: __ghdl_str_len_ptr);
+
+EXTERNAL PROCEDURE __ghdl_get_instance_name (
+  res: std__standard__string__PTR;
+  ctxt: __ghdl_rti_access;
+  addr: __ghdl_ptr;
+  name: __ghdl_str_len_ptr);
+
+EXTERNAL PROCEDURE __ghdl_rti_add_package (
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_rti_add_top (
+  max_pkgs: __ghdl_index_type;
+  pkgs: __ghdl_rti_arr_acc;
+  RTI: __ghdl_rti_access;
+  INSTANCE: __ghdl_ptr);
+
+EXTERNAL PROCEDURE __ghdl_init_top_generics (
+  );
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_eq (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_ne (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_lt (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_match_le (
+  left: __ghdl_i32;
+  right: __ghdl_i32)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_eq (
+  left: __ghdl_ptr;
+  l_len: __ghdl_index_type;
+  right: __ghdl_ptr;
+  r_len: __ghdl_index_type)
+  RETURN __ghdl_i32;
+
+EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_ne (
+  left: __ghdl_ptr;
+  l_len: __ghdl_index_type;
+  right: __ghdl_ptr;
+  r_len: __ghdl_index_type)
+  RETURN __ghdl_i32;
+
+EXTERNAL PROCEDURE __ghdl_to_string_i32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_to_string_i64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64);
+
+EXTERNAL PROCEDURE __ghdl_to_string_f64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_real);
+
+EXTERNAL PROCEDURE __ghdl_to_string_f64_digits (
+  res: std__standard__string__PTR;
+  val: __ghdl_real;
+  nbr_digits: __ghdl_i32);
+
+EXTERNAL PROCEDURE __ghdl_to_string_f64_format (
+  res: std__standard__string__PTR;
+  val: __ghdl_real;
+  format: std__standard__string__PTR);
+
+EXTERNAL PROCEDURE __ghdl_bv_to_ostring (
+  res: std__standard__string__PTR;
+  val: std__standard__bit_vector__BASEP;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_bv_to_hstring (
+  res: std__standard__string__PTR;
+  val: std__standard__bit_vector__BASEP;
+  length: __ghdl_index_type);
+
+EXTERNAL PROCEDURE __ghdl_to_string_b1 (
+  res: std__standard__string__PTR;
+  val: __ghdl_bool_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_e8 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_char (
+  res: std__standard__string__PTR;
+  val: std__standard__character);
+
+EXTERNAL PROCEDURE __ghdl_to_string_e32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_p32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i32;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_to_string_p64 (
+  res: std__standard__string__PTR;
+  val: __ghdl_i64;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_time_to_string_unit (
+  res: std__standard__string__PTR;
+  val: std__standard__time__BT;
+  unit: std__standard__time__BT;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_array_char_to_string_b1 (
+  res: std__standard__string__PTR;
+  val: __ghdl_ptr;
+  length: __ghdl_index_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_array_char_to_string_e8 (
+  res: std__standard__string__PTR;
+  val: __ghdl_ptr;
+  length: __ghdl_index_type;
+  RTI: __ghdl_rti_access);
+
+EXTERNAL PROCEDURE __ghdl_array_char_to_string_e32 (
+  res: std__standard__string__PTR;
+  val: __ghdl_ptr;
+  length: __ghdl_index_type;
+  RTI: __ghdl_rti_access);
+
+--F /Users/gingold/devel/ghdl/build-gcc/lib/ghdl/ieee/v93/../../src/ieee/std_logic_1164.v93
+
+-- package declaration std_logic_1164
+
+TYPE ieee__std_logic_1164__std_ulogic IS ENUM {C_U, C_X, C_0, C_1, C_Z, C_W,
+   C_L, C_H, C2d};
+
+TYPE ieee__std_logic_1164__std_ulogic__PTR IS ACCESS 
+  ieee__std_logic_1164__std_ulogic;
+
+TYPE ieee__std_logic_1164__std_ulogic__TRT IS RECORD
+  left: ieee__std_logic_1164__std_ulogic;
+  right: ieee__std_logic_1164__std_ulogic;
+  dir: __ghdl_dir_type;
+  length: __ghdl_index_type;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_ulogic__TRPTR IS ACCESS 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__std_ulogic__BTR : 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__BASE IS ARRAY [__ghdl_index_type
+  ] OF ieee__std_logic_1164__std_ulogic;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__BASEP IS ACCESS 
+  ieee__std_logic_1164__std_ulogic_vector__BASE;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__SIGBASE IS ARRAY [
+  __ghdl_index_type] OF __ghdl_signal_ptr;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__SIGBASEP IS ACCESS 
+  ieee__std_logic_1164__std_ulogic_vector__SIGBASE;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__BOUND IS RECORD
+  dim_1: std__standard__integer__BT__TRT;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__BOUNDP IS ACCESS 
+  ieee__std_logic_1164__std_ulogic_vector__BOUND;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector IS RECORD
+  BASE: ieee__std_logic_1164__std_ulogic_vector__BASEP;
+  BOUNDS: ieee__std_logic_1164__std_ulogic_vector__BOUNDP;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__PTR IS ACCESS 
+  ieee__std_logic_1164__std_ulogic_vector;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__SIG IS RECORD
+  BASE: ieee__std_logic_1164__std_ulogic_vector__SIGBASEP;
+  BOUNDS: ieee__std_logic_1164__std_ulogic_vector__BOUNDP;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_ulogic_vector__SIGPTR IS ACCESS 
+  ieee__std_logic_1164__std_ulogic_vector__SIG;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__std_logic__STR : 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+TYPE ieee__std_logic_1164__std_logic_vector__BASE IS ARRAY [__ghdl_index_type] 
+  OF ieee__std_logic_1164__std_ulogic;
+
+TYPE ieee__std_logic_1164__std_logic_vector__BASEP IS ACCESS 
+  ieee__std_logic_1164__std_logic_vector__BASE;
+
+TYPE ieee__std_logic_1164__std_logic_vector__SIGBASE IS ARRAY [
+  __ghdl_index_type] OF __ghdl_signal_ptr;
+
+TYPE ieee__std_logic_1164__std_logic_vector__SIGBASEP IS ACCESS 
+  ieee__std_logic_1164__std_logic_vector__SIGBASE;
+
+TYPE ieee__std_logic_1164__std_logic_vector__BOUND IS RECORD
+  dim_1: std__standard__integer__BT__TRT;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_logic_vector__BOUNDP IS ACCESS 
+  ieee__std_logic_1164__std_logic_vector__BOUND;
+
+TYPE ieee__std_logic_1164__std_logic_vector IS RECORD
+  BASE: ieee__std_logic_1164__std_logic_vector__BASEP;
+  BOUNDS: ieee__std_logic_1164__std_logic_vector__BOUNDP;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_logic_vector__PTR IS ACCESS 
+  ieee__std_logic_1164__std_logic_vector;
+
+TYPE ieee__std_logic_1164__std_logic_vector__SIG IS RECORD
+  BASE: ieee__std_logic_1164__std_logic_vector__SIGBASEP;
+  BOUNDS: ieee__std_logic_1164__std_logic_vector__BOUNDP;
+END RECORD;
+
+TYPE ieee__std_logic_1164__std_logic_vector__SIGPTR IS ACCESS 
+  ieee__std_logic_1164__std_logic_vector__SIG;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__x01__STR : 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__x01z__STR : 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__ux01__STR : 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__ux01z__STR : 
+  ieee__std_logic_1164__std_ulogic__TRT;
+
+EXTERNAL VAR ieee__std_logic_1164__ELABORATED : __ghdl_bool_type;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__std_ulogic_vector_EQ (
+  left: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  right: ieee__std_logic_1164__std_ulogic_vector__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__std_ulogic_vector_CMP (
+  left: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  right: ieee__std_logic_1164__std_ulogic_vector__PTR)
+  RETURN __ghdl_compare_type;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__resolved (
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__resolved_RESOLV (
+  INSTANCE: __ghdl_ptr;
+  VALS: __ghdl_signal_ptr;
+  bool_vec: __ghdl_bool_array_ptr;
+  vec_len: __ghdl_index_type;
+  nbr_drv: __ghdl_index_type;
+  nbr_ports: __ghdl_index_type);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__std_logic_vector_EQ (
+  left: ieee__std_logic_1164__std_logic_vector__PTR;
+  right: ieee__std_logic_1164__std_logic_vector__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__std_logic_vector_CMP (
+  left: ieee__std_logic_1164__std_logic_vector__PTR;
+  right: ieee__std_logic_1164__std_logic_vector__PTR)
+  RETURN __ghdl_compare_type;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__andO1 (
+  l: ieee__std_logic_1164__std_ulogic;
+  r: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__nandO1 (
+  l: ieee__std_logic_1164__std_ulogic;
+  r: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__orO1 (
+  l: ieee__std_logic_1164__std_ulogic;
+  r: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__norO1 (
+  l: ieee__std_logic_1164__std_ulogic;
+  r: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__xorO1 (
+  l: ieee__std_logic_1164__std_ulogic;
+  r: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__xnorO1 (
+  l: ieee__std_logic_1164__std_ulogic;
+  r: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__notO1 (
+  l: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__andO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR;
+  r: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__andO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  r: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__nandO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR;
+  r: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__nandO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  r: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__orO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR;
+  r: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__orO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  r: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__norO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR;
+  r: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__norO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  r: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__xorO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR;
+  r: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__xorO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  r: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__xnorO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR;
+  r: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__xnorO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  r: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__notO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  l: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__notO3 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  l: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_bit (
+  s: ieee__std_logic_1164__std_ulogic;
+  xmap: std__standard__bit)
+  RETURN std__standard__bit;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_bitvectorO1 (
+  RESULT: std__standard__bit_vector__PTR;
+  s: ieee__std_logic_1164__std_logic_vector__PTR;
+  xmap: std__standard__bit);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_bitvectorO2 (
+  RESULT: std__standard__bit_vector__PTR;
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  xmap: std__standard__bit);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_stdulogic (
+  b: std__standard__bit)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdlogicvectorO1 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdlogicvectorO2 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdulogicvectorO1 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdulogicvectorO2 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  s: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O1 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  s: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O2 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_x01O3 (
+  s: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O4 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O5 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_x01O6 (
+  b: std__standard__bit)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO1 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  s: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO2 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_x01zO3 (
+  s: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO4 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO5 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_x01zO6 (
+  b: std__standard__bit)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O1 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  s: ieee__std_logic_1164__std_logic_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O2 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_ux01O3 (
+  s: ieee__std_logic_1164__std_ulogic)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O4 (
+  RESULT: ieee__std_logic_1164__std_logic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O5 (
+  RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR;
+  b: std__standard__bit_vector__PTR);
+
+EXTERNAL FUNCTION ieee__std_logic_1164__to_ux01O6 (
+  b: std__standard__bit)
+  RETURN ieee__std_logic_1164__std_ulogic;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__rising_edge (
+  s: ieee__std_logic_1164__std_ulogic;
+  sSIG: __ghdl_signal_ptr)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__falling_edge (
+  s: ieee__std_logic_1164__std_ulogic;
+  sSIG: __ghdl_signal_ptr)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__is_xO1 (
+  s: ieee__std_logic_1164__std_ulogic_vector__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__is_xO2 (
+  s: ieee__std_logic_1164__std_logic_vector__PTR)
+  RETURN std__standard__boolean;
+
+EXTERNAL FUNCTION ieee__std_logic_1164__is_xO3 (
+  s: ieee__std_logic_1164__std_ulogic)
+  RETURN std__standard__boolean;
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__ELAB_SPEC (
+  );
+
+EXTERNAL PROCEDURE ieee__std_logic_1164__ELAB_BODY (
+  );
+
+EXTERNAL CONSTANT ieee__std_logic_1164__RTI : __ghdl_rtin_block;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__std_ulogic__RTI : __ghdl_rtin_type_enum
+  ;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__std_ulogic_vector__RTI : 
+  __ghdl_rtin_type_array;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__std_logic__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__std_logic_vector__RTI : 
+  __ghdl_rtin_type_array;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__x01__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__x01z__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__ux01__RTI : __ghdl_rtin_subtype_scalar;
+
+EXTERNAL CONSTANT ieee__std_logic_1164__ux01z__RTI : __ghdl_rtin_subtype_scalar
+  ;
+
+PRIVATE CONSTANT _UI00000000 : SUBARRAY __ghdl_chararray[9];
+
+CONSTANT _UI00000000 := {116, 111, 112, 46, 118, 104, 100, 108, 0};
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl
+
+-- entity inc_ent
+
+TYPE work__inc_ent__INSTTYPE IS RECORD;
+
+TYPE work__inc_ent__INSTPTR IS ACCESS work__inc_ent__INSTTYPE;
+
+TYPE work__inc_ent__INSTTYPE IS RECORD
+  RTI: __ghdl_entity_link_type;
+  works: std__standard__integer__BT;
+  vec: ieee__std_logic_1164__std_logic_vector;
+END RECORD;
+
+PUBLIC PROCEDURE work__inc_ent__DECL_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR);
+
+PUBLIC PROCEDURE work__inc_ent__STMT_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR);
+
+PUBLIC PROCEDURE work__inc_ent__PKG_ELAB (
+  );
+
+EXTERNAL CONSTANT work__RTI : __ghdl_rtin_type_scalar;
+
+PUBLIC CONSTANT work__inc_ent__RTI : __ghdl_rtin_block_file;
+
+PUBLIC CONSTANT work__inc_ent__works__RTI : __ghdl_rtin_object;
+
+PRIVATE CONSTANT work__inc_ent__works__RTISTR : SUBARRAY __ghdl_chararray[6];
+
+CONSTANT work__inc_ent__works__RTISTR := {119, 111, 114, 107, 115, 0};
+
+CONSTANT work__inc_ent__works__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1,
+   0, 0}, __ghdl_char_ptr'unchecked_address (work__inc_ent__works__RTISTR),
+   __ghdl_ptr'offsetof (work__inc_ent__INSTTYPE.works),
+   __ghdl_rti_access'unchecked_address (std__standard__integer__RTI), 1552};
+
+PUBLIC CONSTANT work__inc_ent__vec__RTI : __ghdl_rtin_object;
+
+PRIVATE CONSTANT work__inc_ent__vec__RTISTR : SUBARRAY __ghdl_chararray[4];
+
+CONSTANT work__inc_ent__vec__RTISTR := {118, 101, 99, 0};
+
+CONSTANT work__inc_ent__vec__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, 0,
+   0}, __ghdl_char_ptr'unchecked_address (work__inc_ent__vec__RTISTR),
+   __ghdl_ptr'offsetof (work__inc_ent__INSTTYPE.vec),
+   __ghdl_rti_access'unchecked_address (
+  ieee__std_logic_1164__std_logic_vector__RTI), 1808};
+
+PRIVATE CONSTANT work__inc_ent__RTISTR : SUBARRAY __ghdl_chararray[8];
+
+CONSTANT work__inc_ent__RTISTR := {105, 110, 99, 95, 101, 110, 116, 0};
+
+PRIVATE CONSTANT work__inc_ent__RTIARRAY : SUBARRAY __ghdl_rti_array[3];
+
+CONSTANT work__inc_ent__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (work__inc_ent__works__RTI),
+   __ghdl_rti_access'unchecked_address (work__inc_ent__vec__RTI),
+   __ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc_ent__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0},
+   __ghdl_char_ptr'address (work__inc_ent__RTISTR), __ghdl_ptr'[NULL], 1032,
+   __ghdl_rti_access'unchecked_address (work__RTI), 2,
+   __ghdl_rti_arr_acc'address (work__inc_ent__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+PUBLIC PROCEDURE work__inc_ent__PKG_ELAB (
+  )
+DECLARE
+BEGIN
+  --# 4
+  IF NOT ieee__std_logic_1164__ELABORATED THEN
+    ieee__std_logic_1164__ELAB_BODY ();
+  END IF;
+END;
+
+PUBLIC PROCEDURE work__inc_ent__DECL_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR)
+DECLARE
+BEGIN
+  --# 4
+  --# 4
+END;
+
+PUBLIC PROCEDURE work__inc_ent__STMT_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR)
+DECLARE
+BEGIN
+  --# 4
+END;
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl
+
+-- architecture default
+
+TYPE work__inc_ent__ARCH__default__INSTTYPE IS RECORD;
+
+TYPE work__inc_ent__ARCH__default__INSTPTR IS ACCESS 
+  work__inc_ent__ARCH__default__INSTTYPE;
+
+TYPE work__inc_ent__ARCH__default__P0__INSTTYPE IS RECORD
+END RECORD;
+
+TYPE work__inc_ent__ARCH__default__INSTTYPE IS RECORD
+  ENTITY: work__inc_ent__INSTTYPE;
+  P0: work__inc_ent__ARCH__default__P0__INSTTYPE;
+END RECORD;
+
+PUBLIC CONSTANT work__inc_ent__ARCH__default__INSTSIZE : __ghdl_index_type;
+
+CONSTANT work__inc_ent__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof (
+  work__inc_ent__ARCH__default__INSTTYPE);
+
+PUBLIC PROCEDURE work__inc_ent__ARCH__default__DECL_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR);
+
+PUBLIC PROCEDURE work__inc_ent__ARCH__default__STMT_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR);
+
+PUBLIC CONSTANT work__inc_ent__ARCH__default__RTI : __ghdl_rtin_block_file;
+
+PUBLIC CONSTANT work__inc_ent__ARCH__default__P0__RTI : __ghdl_rtin_block;
+
+PRIVATE CONSTANT work__inc_ent__ARCH__default__P0__RTISTR : SUBARRAY 
+  __ghdl_chararray[3];
+
+CONSTANT work__inc_ent__ARCH__default__P0__RTISTR := {80, 48, 0};
+
+PRIVATE CONSTANT work__inc_ent__ARCH__default__P0__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[1];
+
+CONSTANT work__inc_ent__ARCH__default__P0__RTIARRAY := 
+  {__ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc_ent__ARCH__default__P0__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0},
+   __ghdl_char_ptr'address (work__inc_ent__ARCH__default__P0__RTISTR),
+   __ghdl_ptr'offsetof (work__inc_ent__ARCH__default__INSTTYPE.P0), 3080,
+   __ghdl_rti_access'unchecked_address (work__inc_ent__ARCH__default__RTI), 0,
+   __ghdl_rti_arr_acc'address (work__inc_ent__ARCH__default__P0__RTIARRAY)};
+
+PRIVATE CONSTANT work__inc_ent__ARCH__default__RTISTR : SUBARRAY 
+  __ghdl_chararray[8];
+
+CONSTANT work__inc_ent__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108,
+   116, 0};
+
+PRIVATE CONSTANT work__inc_ent__ARCH__default__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[2];
+
+CONSTANT work__inc_ent__ARCH__default__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (work__inc_ent__ARCH__default__P0__RTI)
+  , __ghdl_rti_access'[NULL]};
+
+CONSTANT work__inc_ent__ARCH__default__RTI := {{
+  {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0},
+   __ghdl_char_ptr'address (work__inc_ent__ARCH__default__RTISTR),
+   __ghdl_ptr'offsetof (work__inc_ent__ARCH__default__INSTTYPE.ENTITY), 2574,
+   __ghdl_rti_access'unchecked_address (work__inc_ent__RTI), 1,
+   __ghdl_rti_arr_acc'address (work__inc_ent__ARCH__default__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+
+PRIVATE PROCEDURE work__inc_ent__ARCH__default__P0__PROC (
+  INSTANCE: work__inc_ent__ARCH__default__INSTPTR)
+DECLARE
+  PRIVATE CONSTANT _UI00000001 : __ghdl_location;
+  CONSTANT _UI00000001 := {__ghdl_char_ptr'address (_UI00000000), 12, 8};
+BEGIN
+  --# 12
+  DECLARE
+    LOCAL VAR T0_0 : std__standard__string__BOUND;
+    LOCAL VAR T0_1 : std__standard__string__BASEP;
+    LOCAL VAR T0_2 : std__standard__string;
+    LOCAL VAR T0_3 : std__standard__string;
+    LOCAL VAR T0_4 : __ghdl_ptr;
+    LOCAL VAR T0_5 : std__standard__string__PTR;
+    LOCAL VAR T0_6 : std__standard__string;
+    LOCAL VAR T0_7 : std__standard__string__PTR;
+    LOCAL VAR T0_8 : __ghdl_index_type;
+  BEGIN
+    T0_2.BOUNDS := std__standard__string__BOUNDP'address (T0_0);
+    T0_4 := __ghdl_stack2_mark ();
+    __ghdl_image_i32 (std__standard__string__PTR'address (T0_3), __ghdl_i32
+      'conv (INSTANCE.ALL.ENTITY.works));
+    T0_5 := std__standard__string__PTR'address (T0_3);
+    __ghdl_image_i32 (std__standard__string__PTR'address (T0_6), __ghdl_i32
+      'conv (std__standard__integer__BT'conv (INSTANCE.ALL.ENTITY.vec.BOUNDS.
+      ALL.dim_1.length)));
+    T0_7 := std__standard__string__PTR'address (T0_6);
+    T0_8 := ((__ghdl_index_type'[1] +# T0_5.ALL.BOUNDS.ALL.dim_1.length) +# 
+      T0_7.ALL.BOUNDS.ALL.dim_1.length);
+    DECLARE
+      LOCAL VAR T1_0 : std__standard__integer__BT__TRPTR;
+      LOCAL VAR right_bound : std__standard__integer__BT;
+    BEGIN
+      T1_0 := std__standard__integer__BT__TRPTR'address (T0_0.dim_1);
+      T1_0.ALL.length := T0_8;
+      T1_0.ALL.dir := __ghdl_dir_type'[dir_to];
+      IF __ghdl_bool_type'(T0_8 = 0) THEN
+        T1_0.ALL.left := std__standard__integer__BT'conv (
+          std__standard__integer__BT'[2147483647]);
+        T1_0.ALL.right := std__standard__integer__BT'conv (
+          std__standard__integer__BT'[1]);
+      ELSE
+        T1_0.ALL.left := std__standard__integer__BT'conv (
+          std__standard__integer__BT'[1]);
+        right_bound := (std__standard__integer__BT'conv (
+          std__standard__integer__BT'[1]) +# std__standard__integer__BT'conv ((
+          T0_8 -# 1)));
+        IF __ghdl_bool_type'(right_bound < 1) THEN
+          __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 12)
+            ;
+        END IF;
+        T1_0.ALL.right := right_bound;
+      END IF;
+    END;
+    T0_1 := std__standard__string__BASEP'alloca ((T0_2.BOUNDS.ALL.dim_1.length 
+      *# __ghdl_index_type'sizeof (std__standard__character)));
+    T0_2.BASE := T0_1;
+    DECLARE
+      LOCAL VAR T1_0 : __ghdl_index_type;
+      TYPE work__inc_ent__ARCH__default__P0__U0 IS SUBARRAY 
+        std__standard__string__BASE[1];
+      PRIVATE CONSTANT work__inc_ent__ARCH__default__P0__U0__STB : 
+        std__standard__string__BOUND;
+      CONSTANT work__inc_ent__ARCH__default__P0__U0__STB := {{1, 1,
+         __ghdl_dir_type'[dir_to], 1}};
+      PRIVATE CONSTANT _UI00000002 : work__inc_ent__ARCH__default__P0__U0;
+      CONSTANT _UI00000002 := {std__standard__character'[C20]};
+      PRIVATE CONSTANT _UI00000003 : std__standard__string;
+      CONSTANT _UI00000003 := 
+        {std__standard__string__BASEP'address (_UI00000002),
+         std__standard__string__BOUNDP'address (
+        work__inc_ent__ARCH__default__P0__U0__STB)};
+    BEGIN
+      T1_0 := 0;
+      DECLARE
+        LOCAL VAR T2_0 : std__standard__string;
+      BEGIN
+        T2_0.BOUNDS := T0_5.ALL.BOUNDS;
+        T2_0.BASE := std__standard__string__BASEP'address (T0_1.ALL[T1_0...]);
+        __ghdl_memcpy (__ghdl_ptr'conv (T2_0.BASE), __ghdl_ptr'conv (T0_5.ALL.
+          BASE), (T2_0.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof (
+          std__standard__character)));
+        T1_0 := (T1_0 +# T0_5.ALL.BOUNDS.ALL.dim_1.length);
+      END;
+      DECLARE
+        LOCAL VAR T2_0 : std__standard__string__PTR;
+        LOCAL VAR T2_1 : std__standard__string;
+      BEGIN
+        T2_0 := std__standard__string__PTR'address (_UI00000003);
+        T2_1.BOUNDS := T2_0.ALL.BOUNDS;
+        T2_1.BASE := std__standard__string__BASEP'address (T0_1.ALL[T1_0...]);
+        __ghdl_memcpy (__ghdl_ptr'conv (T2_1.BASE), __ghdl_ptr'conv (T2_0.ALL.
+          BASE), (T2_1.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof (
+          std__standard__character)));
+        T1_0 := (T1_0 +# T2_0.ALL.BOUNDS.ALL.dim_1.length);
+      END;
+      DECLARE
+        LOCAL VAR T2_0 : std__standard__string;
+      BEGIN
+        T2_0.BOUNDS := T0_7.ALL.BOUNDS;
+        T2_0.BASE := std__standard__string__BASEP'address (T0_1.ALL[T1_0...]);
+        __ghdl_memcpy (__ghdl_ptr'conv (T2_0.BASE), __ghdl_ptr'conv (T0_7.ALL.
+          BASE), (T2_0.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof (
+          std__standard__character)));
+        T1_0 := (T1_0 +# T0_7.ALL.BOUNDS.ALL.dim_1.length);
+      END;
+    END;
+    __ghdl_assert_failed (std__standard__string__PTR'address (T0_2), 
+      std__standard__severity_level'[error], __ghdl_location_ptr'address (
+      _UI00000001));
+    __ghdl_stack2_release (T0_4);
+  END;
+END;
+
+PUBLIC PROCEDURE work__inc_ent__ARCH__default__DECL_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__inc_ent__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__inc_ent__ARCH__default__INSTPTR'conv (INSTANCE);
+  INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address (
+    work__inc_ent__ARCH__default__RTI);
+  work__inc_ent__DECL_ELAB (INSTANCE);
+  --# 10
+  --# 10
+END;
+
+PUBLIC PROCEDURE work__inc_ent__ARCH__default__STMT_ELAB (
+  INSTANCE: work__inc_ent__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__inc_ent__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__inc_ent__ARCH__default__INSTPTR'conv (INSTANCE);
+  work__inc_ent__STMT_ELAB (INSTANCE);
+  --# 10
+  --# 12
+  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
+    ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr (
+    work__inc_ent__ARCH__default__P0__PROC), __ghdl_rti_access
+    'unchecked_address (work__inc_ent__ARCH__default__P0__RTI), __ghdl_ptr
+    'unchecked_address (ARCH_INSTANCE.ALL.P0));
+END;
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl
+
+-- entity top_ent
+
+TYPE work__top_ent__INSTTYPE IS RECORD;
+
+TYPE work__top_ent__INSTPTR IS ACCESS work__top_ent__INSTTYPE;
+
+TYPE work__top_ent__INSTTYPE IS RECORD
+  RTI: __ghdl_entity_link_type;
+END RECORD;
+
+PUBLIC PROCEDURE work__top_ent__DECL_ELAB (
+  INSTANCE: work__top_ent__INSTPTR);
+
+PUBLIC PROCEDURE work__top_ent__STMT_ELAB (
+  INSTANCE: work__top_ent__INSTPTR);
+
+PUBLIC PROCEDURE work__top_ent__PKG_ELAB (
+  );
+
+PUBLIC CONSTANT work__top_ent__RTI : __ghdl_rtin_block_file;
+
+PRIVATE CONSTANT work__top_ent__RTISTR : SUBARRAY __ghdl_chararray[8];
+
+CONSTANT work__top_ent__RTISTR := {116, 111, 112, 95, 101, 110, 116, 0};
+
+PRIVATE CONSTANT work__top_ent__RTIARRAY : SUBARRAY __ghdl_rti_array[1];
+
+CONSTANT work__top_ent__RTIARRAY := {__ghdl_rti_access'[NULL]};
+
+CONSTANT work__top_ent__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0},
+   __ghdl_char_ptr'address (work__top_ent__RTISTR), __ghdl_ptr'[NULL], 4616,
+   __ghdl_rti_access'unchecked_address (work__RTI), 0,
+   __ghdl_rti_arr_acc'address (work__top_ent__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+PUBLIC PROCEDURE work__top_ent__PKG_ELAB (
+  )
+DECLARE
+BEGIN
+  --# 18
+  IF NOT ieee__std_logic_1164__ELABORATED THEN
+    ieee__std_logic_1164__ELAB_BODY ();
+  END IF;
+END;
+
+PUBLIC PROCEDURE work__top_ent__DECL_ELAB (
+  INSTANCE: work__top_ent__INSTPTR)
+DECLARE
+BEGIN
+  --# 18
+  --# 18
+END;
+
+PUBLIC PROCEDURE work__top_ent__STMT_ELAB (
+  INSTANCE: work__top_ent__INSTPTR)
+DECLARE
+BEGIN
+  --# 18
+END;
+
+--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl
+
+-- architecture default
+
+TYPE work__top_ent__ARCH__default__INSTTYPE IS RECORD;
+
+TYPE work__top_ent__ARCH__default__INSTPTR IS ACCESS 
+  work__top_ent__ARCH__default__INSTTYPE;
+
+TYPE work__top_ent__ARCH__default__foo_v__OT IS SUBARRAY 
+  ieee__std_logic_1164__std_logic_vector__BASE[13];
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__foo_v__OT__STB : 
+  ieee__std_logic_1164__std_logic_vector__BOUND;
+
+CONSTANT work__top_ent__ARCH__default__foo_v__OT__STB := {{0, 12,
+   __ghdl_dir_type'[dir_to], 13}};
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__ix__OT__STR : 
+  std__standard__integer__BT__TRT;
+
+CONSTANT work__top_ent__ARCH__default__g__ix__OT__STR := {0, 4,
+   __ghdl_dir_type'[dir_to], 5};
+
+TYPE work__top_ent__ARCH__default__g__INSTTYPE IS RECORD;
+
+TYPE work__top_ent__ARCH__default__g__INSTPTR IS ACCESS 
+  work__top_ent__ARCH__default__g__INSTTYPE;
+
+TYPE work__top_ent__ARCH__default__g__INSTTYPE IS RECORD
+  ORIGIN: work__top_ent__ARCH__default__INSTPTR;
+  CONFIGURED: __ghdl_bool_type;
+  ix: std__standard__integer__BT;
+  foo_v__OT__SIZE: __ghdl_index_type;
+  foo_v__OT__STB: ieee__std_logic_1164__std_logic_vector__BOUND;
+  foo_v: ieee__std_logic_1164__std_logic_vector__BASEP;
+  inst: __ghdl_component_link_type;
+  inst2: __ghdl_component_link_type;
+END RECORD;
+
+TYPE work__top_ent__ARCH__default__g__INSTARRTYPE IS ARRAY [__ghdl_index_type] 
+  OF work__top_ent__ARCH__default__g__INSTTYPE;
+
+TYPE work__top_ent__ARCH__default__g__INSTARRPTR IS ACCESS 
+  work__top_ent__ARCH__default__g__INSTARRTYPE;
+
+TYPE work__top_ent__ARCH__default__INSTTYPE IS RECORD
+  ENTITY: work__top_ent__INSTTYPE;
+  foo_v: work__top_ent__ARCH__default__foo_v__OT;
+  g: work__top_ent__ARCH__default__g__INSTARRPTR;
+END RECORD;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__INSTSIZE : __ghdl_index_type;
+
+CONSTANT work__top_ent__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof (
+  work__top_ent__ARCH__default__INSTTYPE);
+
+PUBLIC PROCEDURE work__top_ent__ARCH__default__DECL_ELAB (
+  INSTANCE: work__top_ent__INSTPTR);
+
+PUBLIC PROCEDURE work__top_ent__ARCH__default__STMT_ELAB (
+  INSTANCE: work__top_ent__INSTPTR);
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__RTI : __ghdl_rtin_block_file;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__foo_v__RTI : __ghdl_rtin_object;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__foo_v__OT__RTI : 
+  __ghdl_rtin_subtype_composite;
+
+CONSTANT work__top_ent__ARCH__default__foo_v__OT__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_subtype_array], 0, 2, 0}, __ghdl_char_ptr'[NULL],
+   __ghdl_rti_access'unchecked_address (
+  ieee__std_logic_1164__std_logic_vector__RTI),
+   __ghdl_ptr'unchecked_address (work__top_ent__ARCH__default__foo_v__OT__STB)
+  , __ghdl_ptr'sizeof (work__top_ent__ARCH__default__foo_v__OT),
+   __ghdl_ptr'[NULL]};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__foo_v__RTISTR : SUBARRAY 
+  __ghdl_chararray[6];
+
+CONSTANT work__top_ent__ARCH__default__foo_v__RTISTR := {102, 111, 111, 95,
+   118, 0};
+
+CONSTANT work__top_ent__ARCH__default__foo_v__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_constant], 1, 0, 0},
+   __ghdl_char_ptr'unchecked_address (
+  work__top_ent__ARCH__default__foo_v__RTISTR),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__INSTTYPE.foo_v),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__foo_v__OT__RTI), 5393};
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__ITERATOR__RTI : 
+  __ghdl_rtin_subtype_scalar;
+
+CONSTANT work__top_ent__ARCH__default__g__ITERATOR__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_subtype_scalar], 0, 0, 0}, __ghdl_char_ptr'[NULL],
+   __ghdl_rti_access'unchecked_address (std__standard__integer__BT__RTI),
+   __ghdl_ptr'unchecked_address (work__top_ent__ARCH__default__g__ix__OT__STR)}
+  ;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__RTI : __ghdl_rtin_generate;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__RTI : __ghdl_rtin_block;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTI : 
+  __ghdl_rtin_object;
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTISTR : SUBARRAY 
+  __ghdl_chararray[3];
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTISTR := {105, 120, 0};
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_iterator], 3, 0, 0},
+   __ghdl_char_ptr'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__ix__RTISTR),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.ix),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__ITERATOR__RTI), 5904};
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTI : 
+  __ghdl_rtin_object;
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__OT__RTI : 
+  __ghdl_rtin_subtype_composite;
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__OT__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_subtype_array], 3, 3, 3}, __ghdl_char_ptr'[NULL],
+   __ghdl_rti_access'unchecked_address (
+  ieee__std_logic_1164__std_logic_vector__RTI),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.
+  foo_v__OT__STB),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.
+  foo_v__OT__SIZE), __ghdl_ptr'[NULL]};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTISTR : SUBARRAY
+   __ghdl_chararray[6];
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTISTR := {102, 111,
+   111, 95, 118, 0};
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_constant], 3, 0, 0},
+   __ghdl_char_ptr'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__foo_v__RTISTR),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.foo_v),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__foo_v__OT__RTI), 6169};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTISTR : SUBARRAY 
+  __ghdl_chararray[5];
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTISTR := {105, 110, 115,
+   116, 0};
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTI : 
+  __ghdl_rtin_instance;
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_instance], 3, 0, 0},
+   __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__BOD__inst__RTISTR)
+  , 6928,
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.inst),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__RTI),
+   __ghdl_rti_access'unchecked_address (work__inc_ent__RTI)};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTISTR : SUBARRAY
+   __ghdl_chararray[6];
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTISTR := {105, 110,
+   115, 116, 50, 0};
+
+PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTI : 
+  __ghdl_rtin_instance;
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_instance], 3, 0, 0},
+   __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__BOD__inst2__RTISTR
+  ), 8208,
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.inst2),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__RTI),
+   __ghdl_rti_access'unchecked_address (work__inc_ent__RTI)};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__RTISTR : SUBARRAY 
+  __ghdl_chararray[1];
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__RTISTR := {0};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[5];
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__ix__RTI),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__foo_v__RTI),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__inst__RTI),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__inst2__RTI), __ghdl_rti_access'[NULL]};
+
+CONSTANT work__top_ent__ARCH__default__g__BOD__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_generate_body], 3, 0, 0},
+   __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__BOD__RTISTR),
+   __ghdl_ptr'[NULL], 6160,
+   __ghdl_rti_access'unchecked_address (work__top_ent__ARCH__default__g__RTI),
+   4,
+   __ghdl_rti_arr_acc'address (work__top_ent__ARCH__default__g__BOD__RTIARRAY)}
+  ;
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__g__RTISTR : SUBARRAY 
+  __ghdl_chararray[2];
+
+CONSTANT work__top_ent__ARCH__default__g__RTISTR := {103, 0};
+
+CONSTANT work__top_ent__ARCH__default__g__RTI := {
+  {__ghdl_rtik'[__ghdl_rtik_for_generate], 2, 0, 0},
+   __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__RTISTR),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__INSTTYPE.g), 5896,
+   __ghdl_rti_access'unchecked_address (work__top_ent__ARCH__default__RTI),
+   __ghdl_index_type'sizeof (work__top_ent__ARCH__default__g__INSTTYPE),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__BOD__RTI)};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__RTISTR : SUBARRAY 
+  __ghdl_chararray[8];
+
+CONSTANT work__top_ent__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108,
+   116, 0};
+
+PRIVATE CONSTANT work__top_ent__ARCH__default__RTIARRAY : SUBARRAY 
+  __ghdl_rti_array[4];
+
+CONSTANT work__top_ent__ARCH__default__RTIARRAY := 
+  {__ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__foo_v__RTI),
+   __ghdl_rti_access'unchecked_address (
+  work__top_ent__ARCH__default__g__ITERATOR__RTI),
+   __ghdl_rti_access'unchecked_address (work__top_ent__ARCH__default__g__RTI),
+   __ghdl_rti_access'[NULL]};
+
+CONSTANT work__top_ent__ARCH__default__RTI := {{
+  {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0},
+   __ghdl_char_ptr'address (work__top_ent__ARCH__default__RTISTR),
+   __ghdl_ptr'offsetof (work__top_ent__ARCH__default__INSTTYPE.ENTITY), 5134,
+   __ghdl_rti_access'unchecked_address (work__top_ent__RTI), 3,
+   __ghdl_rti_arr_acc'address (work__top_ent__ARCH__default__RTIARRAY)},
+   __ghdl_char_ptr'address (_UI00000000)};
+
+
+PRIVATE PROCEDURE work__top_ent__ARCH__default__g__inst__COMP_ELAB (
+  INSTANCE: work__top_ent__ARCH__default__g__INSTPTR)
+DECLARE
+  EXTERNAL CONSTANT work__inc_ent__LASTARCH__INSTSIZE : __ghdl_index_type;
+  EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DECL_ELAB (
+    INSTANCE: work__inc_ent__INSTPTR);
+  EXTERNAL PROCEDURE work__inc_ent__LASTARCH__STMT_ELAB (
+    INSTANCE: work__inc_ent__INSTPTR);
+  EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DEFAULT_CONFIG (
+    INSTANCE: work__inc_ent__INSTPTR);
+  LOCAL VAR SUB_INSTANCE : work__inc_ent__INSTPTR;
+  LOCAL VAR U0__SIZE : __ghdl_index_type;
+  LOCAL VAR U0__STB : ieee__std_logic_1164__std_logic_vector__BOUND;
+BEGIN
+  --# 27
+  INSTANCE.ALL.inst.stmt := __ghdl_rti_access'unchecked_address (
+    work__top_ent__ARCH__default__g__BOD__inst__RTI);
+  SUB_INSTANCE := work__inc_ent__INSTPTR'conv (__ghdl_malloc0 (
+    work__inc_ent__LASTARCH__INSTSIZE));
+  INSTANCE.ALL.inst.INSTANCE := __ghdl_entity_link_acc'address (SUB_INSTANCE.
+    ALL.RTI);
+  SUB_INSTANCE.ALL.RTI.parent := __ghdl_component_link_acc'address (INSTANCE.
+    ALL.inst);
+  work__inc_ent__PKG_ELAB ();
+  SUB_INSTANCE.ALL.works := 0;
+  DECLARE
+    LOCAL VAR T2_0 : std__standard__integer__BT__TRPTR;
+  BEGIN
+    T2_0 := std__standard__integer__BT__TRPTR'address (U0__STB.dim_1);
+    T2_0.ALL.left := std__standard__integer__BT'conv (
+      std__standard__integer__BT'[0]);
+    T2_0.ALL.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix);
+    T2_0.ALL.dir := __ghdl_dir_type'[dir_to];
+    DECLARE
+      LOCAL VAR T4_0 : __ghdl_index_type;
+    BEGIN
+      DECLARE
+        LOCAL VAR T5_0 : __ghdl_i32;
+      BEGIN
+        T5_0 := (__ghdl_i32'conv (T2_0.ALL.right) -# __ghdl_i32'conv (T2_0.ALL.
+          left));
+        IF __ghdl_bool_type'(T5_0 < 0) THEN
+          T4_0 := 0;
+        ELSE
+          T4_0 := (__ghdl_index_type'conv (T5_0) +# 1);
+        END IF;
+      END;
+      T2_0.ALL.length := T4_0;
+    END;
+  END;
+  U0__SIZE := (U0__STB.dim_1.length *# __ghdl_index_type'sizeof (
+    ieee__std_logic_1164__std_ulogic));
+  DECLARE
+    LOCAL VAR T0_0 : ieee__std_logic_1164__std_logic_vector__PTR;
+  BEGIN
+    T0_0 := ieee__std_logic_1164__std_logic_vector__PTR'address (SUB_INSTANCE.
+      ALL.vec);
+    T0_0.ALL.BOUNDS := ieee__std_logic_1164__std_logic_vector__BOUNDP'address (
+      U0__STB);
+    T0_0.ALL.BASE := ieee__std_logic_1164__std_logic_vector__BASEP'conv (
+      __ghdl_malloc0 ((T0_0.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type
+      'sizeof (ieee__std_logic_1164__std_ulogic))));
+    DECLARE
+      LOCAL VAR T1_0 : ieee__std_logic_1164__std_logic_vector__BASEP;
+      LOCAL VAR T1_1 : ieee__std_logic_1164__std_logic_vector__BOUNDP;
+      LOCAL VAR T1_2 : __ghdl_index_type;
+    BEGIN
+      T1_0 := T0_0.ALL.BASE;
+      T1_1 := T0_0.ALL.BOUNDS;
+      DECLARE
+        LOCAL VAR T2_0 : std__standard__integer__BT__TRT;
+      BEGIN
+        T2_0.left := std__standard__integer__BT'conv (
+          std__standard__integer__BT'[0]);
+        T2_0.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix);
+        T2_0.dir := __ghdl_dir_type'[dir_to];
+        DECLARE
+          LOCAL VAR T4_0 : __ghdl_index_type;
+        BEGIN
+          DECLARE
+            LOCAL VAR T5_0 : __ghdl_i32;
+          BEGIN
+            T5_0 := (__ghdl_i32'conv (T2_0.right) -# __ghdl_i32'conv (T2_0.left
+              ));
+            IF __ghdl_bool_type'(T5_0 < 0) THEN
+              T4_0 := 0;
+            ELSE
+              T4_0 := (__ghdl_index_type'conv (T5_0) +# 1);
+            END IF;
+          END;
+          T2_0.length := T4_0;
+        END;
+        IF __ghdl_bool_type'(T2_0.length /= T1_1.ALL.dim_1.length) THEN
+          __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 30)
+            ;
+        END IF;
+      END;
+      T1_2 := 0;
+      DECLARE
+        LOCAL VAR T2_0 : __ghdl_index_type;
+        LOCAL VAR T2_1 : __ghdl_index_type;
+        LOCAL VAR T2_2 : __ghdl_index_type;
+      BEGIN
+        DECLARE
+          LOCAL VAR T3_0 : __ghdl_i32;
+        BEGIN
+          T3_0 := (__ghdl_i32'conv (INSTANCE.ALL.ix) -# __ghdl_i32'conv (
+            std__standard__integer__BT'[0]));
+          IF __ghdl_bool_type'(T3_0 < 0) THEN
+            T2_0 := 0;
+          ELSE
+            T2_0 := (__ghdl_index_type'conv (T3_0) +# 1);
+          END IF;
+        END;
+        T2_1 := T2_0;
+        T2_2 := 0;
+        LOOP 1:
+          IF __ghdl_bool_type'(T2_2 = T2_1) THEN
+            EXIT LOOP 1;
+          END IF;
+          T1_0.ALL[T1_2] := ieee__std_logic_1164__std_ulogic'[C_1];
+          T1_2 := (T1_2 +# 1);
+          T2_2 := (T2_2 +# 1);
+        END LOOP;
+      END;
+    END;
+  END;
+  work__inc_ent__LASTARCH__DECL_ELAB (SUB_INSTANCE);
+  work__inc_ent__LASTARCH__STMT_ELAB (SUB_INSTANCE);
+  work__inc_ent__LASTARCH__DEFAULT_CONFIG (work__inc_ent__INSTPTR'conv (
+    SUB_INSTANCE));
+END;
+
+
+PRIVATE PROCEDURE work__top_ent__ARCH__default__g__inst2__COMP_ELAB (
+  INSTANCE: work__top_ent__ARCH__default__g__INSTPTR)
+DECLARE
+  EXTERNAL CONSTANT work__inc_ent__LASTARCH__INSTSIZE : __ghdl_index_type;
+  EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DECL_ELAB (
+    INSTANCE: work__inc_ent__INSTPTR);
+  EXTERNAL PROCEDURE work__inc_ent__LASTARCH__STMT_ELAB (
+    INSTANCE: work__inc_ent__INSTPTR);
+  EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DEFAULT_CONFIG (
+    INSTANCE: work__inc_ent__INSTPTR);
+  LOCAL VAR SUB_INSTANCE : work__inc_ent__INSTPTR;
+BEGIN
+  --# 32
+  INSTANCE.ALL.inst2.stmt := __ghdl_rti_access'unchecked_address (
+    work__top_ent__ARCH__default__g__BOD__inst2__RTI);
+  SUB_INSTANCE := work__inc_ent__INSTPTR'conv (__ghdl_malloc0 (
+    work__inc_ent__LASTARCH__INSTSIZE));
+  INSTANCE.ALL.inst2.INSTANCE := __ghdl_entity_link_acc'address (SUB_INSTANCE.
+    ALL.RTI);
+  SUB_INSTANCE.ALL.RTI.parent := __ghdl_component_link_acc'address (INSTANCE.
+    ALL.inst2);
+  work__inc_ent__PKG_ELAB ();
+  SUB_INSTANCE.ALL.works := 1;
+  DECLARE
+    LOCAL VAR T0_0 : ieee__std_logic_1164__std_logic_vector;
+    LOCAL VAR T0_1 : ieee__std_logic_1164__std_logic_vector__BASEP;
+    LOCAL VAR T0_2 : ieee__std_logic_1164__std_logic_vector__PTR;
+    LOCAL VAR T0_3 : ieee__std_logic_1164__std_logic_vector__PTR;
+  BEGIN
+    T0_1 := INSTANCE.ALL.foo_v;
+    T0_0.BASE := ieee__std_logic_1164__std_logic_vector__BASEP'conv (T0_1);
+    T0_0.BOUNDS := ieee__std_logic_1164__std_logic_vector__BOUNDP'address (
+      INSTANCE.ALL.foo_v__OT__STB);
+    T0_2 := ieee__std_logic_1164__std_logic_vector__PTR'address (SUB_INSTANCE.
+      ALL.vec);
+    T0_3 := ieee__std_logic_1164__std_logic_vector__PTR'address (T0_0);
+    T0_2.ALL.BOUNDS := ieee__std_logic_1164__std_logic_vector__BOUNDP'conv (
+      __ghdl_malloc0 (__ghdl_index_type'sizeof (
+      ieee__std_logic_1164__std_logic_vector__BOUND)));
+    __ghdl_memcpy (__ghdl_ptr'conv (T0_2.ALL.BOUNDS), __ghdl_ptr'conv (T0_3.ALL
+      .BOUNDS), __ghdl_index_type'sizeof (
+      ieee__std_logic_1164__std_logic_vector__BOUND));
+    T0_2.ALL.BASE := ieee__std_logic_1164__std_logic_vector__BASEP'conv (
+      __ghdl_malloc0 ((T0_2.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type
+      'sizeof (ieee__std_logic_1164__std_ulogic))));
+    __ghdl_memcpy (__ghdl_ptr'conv (T0_2.ALL.BASE), __ghdl_ptr'conv (T0_3.ALL.
+      BASE), (T0_2.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof (
+      ieee__std_logic_1164__std_ulogic)));
+  END;
+  work__inc_ent__LASTARCH__DECL_ELAB (SUB_INSTANCE);
+  work__inc_ent__LASTARCH__STMT_ELAB (SUB_INSTANCE);
+  work__inc_ent__LASTARCH__DEFAULT_CONFIG (work__inc_ent__INSTPTR'conv (
+    SUB_INSTANCE));
+END;
+
+PUBLIC PROCEDURE work__top_ent__ARCH__default__DECL_ELAB (
+  INSTANCE: work__top_ent__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__top_ent__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__top_ent__ARCH__default__INSTPTR'conv (INSTANCE);
+  INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address (
+    work__top_ent__ARCH__default__RTI);
+  work__top_ent__DECL_ELAB (INSTANCE);
+  --# 20
+  --# 20
+  --# 21
+  DECLARE
+    LOCAL VAR T1_0 : ieee__std_logic_1164__std_logic_vector__BASEP;
+    LOCAL VAR T1_1 : __ghdl_index_type;
+    LOCAL VAR T1_2 : __ghdl_index_type;
+  BEGIN
+    T1_0 := ieee__std_logic_1164__std_logic_vector__BASEP'address (
+      ARCH_INSTANCE.ALL.foo_v);
+    T1_1 := 13;
+    T1_2 := 0;
+    LOOP 1:
+      IF __ghdl_bool_type'(T1_2 = T1_1) THEN
+        EXIT LOOP 1;
+      END IF;
+      T1_0.ALL[T1_2] := ieee__std_logic_1164__std_ulogic'[C_1];
+      T1_2 := (T1_2 +# 1);
+    END LOOP;
+  END;
+  DECLARE
+    LOCAL VAR T0_0 : std__standard__integer__BT__TRPTR;
+    LOCAL VAR T0_1 : work__top_ent__ARCH__default__g__INSTARRPTR;
+    LOCAL VAR T0_2 : __ghdl_index_type;
+    LOCAL VAR T0_3 : work__top_ent__ARCH__default__g__INSTPTR;
+    LOCAL VAR T0_4 : std__standard__integer__BT;
+  BEGIN
+    T0_0 := std__standard__integer__BT__TRPTR'address (
+      work__top_ent__ARCH__default__g__ix__OT__STR);
+    T0_1 := work__top_ent__ARCH__default__g__INSTARRPTR'conv (__ghdl_malloc0 ((
+      T0_0.ALL.length *# __ghdl_index_type'sizeof (
+      work__top_ent__ARCH__default__g__INSTTYPE))));
+    ARCH_INSTANCE.ALL.g := T0_1;
+    T0_2 := 0;
+    LOOP 1:
+      IF __ghdl_bool_type'(T0_2 = T0_0.ALL.length) THEN
+        EXIT LOOP 1;
+      END IF;
+      T0_3 := work__top_ent__ARCH__default__g__INSTPTR'address (T0_1.ALL[T0_2])
+        ;
+      T0_3.ALL.ORIGIN := ARCH_INSTANCE;
+      T0_3.ALL.CONFIGURED := __ghdl_bool_type'[false];
+      IF __ghdl_bool_type'(T0_0.ALL.dir = __ghdl_dir_type'[dir_to]) THEN
+        T0_4 := T0_0.ALL.left;
+      ELSE
+        T0_4 := T0_0.ALL.right;
+      END IF;
+      T0_3.ALL.ix := (T0_4 +# std__standard__integer__BT'conv (T0_2));
+      --# 24
+      --# 24
+      DECLARE
+        LOCAL VAR T3_0 : std__standard__integer__BT__TRPTR;
+      BEGIN
+        T3_0 := std__standard__integer__BT__TRPTR'address (T0_3.ALL.
+          foo_v__OT__STB.dim_1);
+        T3_0.ALL.left := std__standard__integer__BT'conv (
+          std__standard__integer__BT'[0]);
+        T3_0.ALL.right := std__standard__integer__BT'conv (T0_3.ALL.ix);
+        T3_0.ALL.dir := __ghdl_dir_type'[dir_to];
+        DECLARE
+          LOCAL VAR T5_0 : __ghdl_index_type;
+        BEGIN
+          DECLARE
+            LOCAL VAR T6_0 : __ghdl_i32;
+          BEGIN
+            T6_0 := (__ghdl_i32'conv (T3_0.ALL.right) -# __ghdl_i32'conv (T3_0.
+              ALL.left));
+            IF __ghdl_bool_type'(T6_0 < 0) THEN
+              T5_0 := 0;
+            ELSE
+              T5_0 := (__ghdl_index_type'conv (T6_0) +# 1);
+            END IF;
+          END;
+          T3_0.ALL.length := T5_0;
+        END;
+      END;
+      T0_3.ALL.foo_v__OT__SIZE := (T0_3.ALL.foo_v__OT__STB.dim_1.length *# 
+        __ghdl_index_type'sizeof (ieee__std_logic_1164__std_ulogic));
+      T0_3.ALL.foo_v := ieee__std_logic_1164__std_logic_vector__BASEP'conv (
+        __ghdl_malloc0 (T0_3.ALL.foo_v__OT__SIZE));
+      DECLARE
+        LOCAL VAR T2_0 : ieee__std_logic_1164__std_logic_vector__BASEP;
+        LOCAL VAR T2_1 : __ghdl_index_type;
+        LOCAL VAR T2_2 : __ghdl_index_type;
+      BEGIN
+        T2_0 := T0_3.ALL.foo_v;
+        T2_1 := T0_3.ALL.foo_v__OT__STB.dim_1.length;
+        T2_2 := 0;
+        LOOP 2:
+          IF __ghdl_bool_type'(T2_2 = T2_1) THEN
+            EXIT LOOP 2;
+          END IF;
+          T2_0.ALL[T2_2] := ieee__std_logic_1164__std_ulogic'[C_1];
+          T2_2 := (T2_2 +# 1);
+        END LOOP;
+      END;
+      work__top_ent__ARCH__default__g__inst__COMP_ELAB (T0_3);
+      work__top_ent__ARCH__default__g__inst2__COMP_ELAB (T0_3);
+      T0_2 := (T0_2 +# 1);
+    END LOOP;
+  END;
+END;
+
+PUBLIC PROCEDURE work__top_ent__ARCH__default__STMT_ELAB (
+  INSTANCE: work__top_ent__INSTPTR)
+DECLARE
+  LOCAL VAR ARCH_INSTANCE : work__top_ent__ARCH__default__INSTPTR;
+BEGIN
+  ARCH_INSTANCE := work__top_ent__ARCH__default__INSTPTR'conv (INSTANCE);
+  work__top_ent__STMT_ELAB (INSTANCE);
+  --# 20
+  DECLARE
+    LOCAL VAR T0_0 : work__top_ent__ARCH__default__g__INSTARRPTR;
+    LOCAL VAR T0_1 : __ghdl_index_type;
+    LOCAL VAR T0_2 : __ghdl_index_type;
+    LOCAL VAR T0_3 : work__top_ent__ARCH__default__g__INSTPTR;
+  BEGIN
+    T0_0 := ARCH_INSTANCE.ALL.g;
+    T0_1 := work__top_ent__ARCH__default__g__ix__OT__STR.length;
+    T0_2 := 0;
+    LOOP 1:
+      IF __ghdl_bool_type'(T0_2 = T0_1) THEN
+        EXIT LOOP 1;
+      END IF;
+      T0_3 := work__top_ent__ARCH__default__g__INSTPTR'address (T0_0.ALL[T0_2])
+        ;
+      T0_2 := (T0_2 +# 1);
+    END LOOP;
+  END;
+END;
+
diff --git a/testsuite/gna/issue626/top.vhdl b/testsuite/gna/issue626/top.vhdl
new file mode 100644
index 000000000..8deea15f6
--- /dev/null
+++ b/testsuite/gna/issue626/top.vhdl
@@ -0,0 +1,38 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity inc_ent is
+	generic (
+		works : integer;
+		vec : std_logic_vector);
+end entity;
+
+architecture default of inc_ent is
+begin
+	assert false report integer'image(works) & " " & integer'image(vec'length);
+end architecture;
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity top_ent is end entity;
+
+architecture default of top_ent is
+	constant foo_v : std_logic_vector(0 to 12) := (others => '1');
+begin
+	g : for ix in 0 to 4 generate
+		constant foo_v : std_logic_vector(0 to ix) := (others => '1');
+	begin
+		
+		inst : entity work.inc_ent
+			generic map (
+				works => 0,
+				vec   => (0 to ix => '1')
+				);
+		inst2 : entity work.inc_ent
+			generic map (
+				works => 1,
+				vec => foo_v
+				);
+	end generate;
+end architecture;
-- 
cgit v1.2.3