-- 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_compare_type is enum {lt = 0, eq = 1, gt = 2};

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 = 0, dir_downto = 1};

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_l0 (
  index: __ghdl_index_type);

external procedure __ghdl_bound_check_failed_l1 (
  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 = 0, __ghdl_rtik_library = 1,
   __ghdl_rtik_package = 2, __ghdl_rtik_package_body = 3,
   __ghdl_rtik_entity = 4, __ghdl_rtik_architecture = 5,
   __ghdl_rtik_process = 6, __ghdl_rtik_block = 7,
   __ghdl_rtik_if_generate = 8, __ghdl_rtik_for_generate = 9,
   __ghdl_rtik_instance = 10, __ghdl_rtik_constant = 11,
   __ghdl_rtik_iterator = 12, __ghdl_rtik_variable = 13,
   __ghdl_rtik_signal = 14, __ghdl_rtik_file = 15, __ghdl_rtik_port = 16,
   __ghdl_rtik_generic = 17, __ghdl_rtik_alias = 18, __ghdl_rtik_guard = 19,
   __ghdl_rtik_component = 20, __ghdl_rtik_attribute = 21,
   __ghdl_rtik_type_b2 = 22, __ghdl_rtik_type_e8 = 23,
   __ghdl_rtik_type_e32 = 24, __ghdl_rtik_type_i32 = 25,
   __ghdl_rtik_type_i64 = 26, __ghdl_rtik_type_f64 = 27,
   __ghdl_rtik_type_p32 = 28, __ghdl_rtik_type_p64 = 29,
   __ghdl_rtik_type_access = 30, __ghdl_rtik_type_array = 31,
   __ghdl_rtik_type_record = 32, __ghdl_rtik_type_file = 33,
   __ghdl_rtik_subtype_scalar = 34, __ghdl_rtik_subtype_array = 35,
   __ghdl_rtik_subtype_array_ptr = 36,
   __ghdl_rtik_subtype_unconstrained_array = 37,
   __ghdl_rtik_subtype_record = 38, __ghdl_rtik_subtype_access = 39,
   __ghdl_rtik_type_protected = 40, __ghdl_rtik_element = 41,
   __ghdl_rtik_unit = 42, __ghdl_rtik_attribute_transaction = 43,
   __ghdl_rtik_attribute_quiet = 44, __ghdl_rtik_attribute_stable = 45,
   __ghdl_rtik_psl_assert = 46, __ghdl_rtik_error = 47};

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_rti_loc is union 
  offset: __ghdl_index_type; 
  address: __ghdl_ptr; 
end union;

type __ghdl_rtin_block is record 
  common: __ghdl_rti_common; 
  name: __ghdl_char_ptr; 
  loc: __ghdl_rti_loc; 
  parent: __ghdl_rti_access; 
  size: __ghdl_index_type; 
  nbr_child: __ghdl_index_type; 
  children: __ghdl_rti_arr_acc; 
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_rti_loc; 
end record;

type __ghdl_rti_unit_val is union 
  unit_32: __ghdl_i32; 
  unit_64: __ghdl_i64; 
  addr: __ghdl_ptr; 
end union;

type __ghdl_rtin_unit is record 
  common: __ghdl_rti_common; 
  name: __ghdl_char_ptr; 
  value: __ghdl_rti_unit_val; 
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_array is record 
  common: __ghdl_rti_common; 
  name: __ghdl_char_ptr; 
  basetype: __ghdl_rti_access; 
  bounds: __ghdl_rti_loc; 
  val_size: __ghdl_rti_loc; 
  sig_size: __ghdl_rti_loc; 
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_rti_loc; 
  obj_type: __ghdl_rti_access; 
end record;

type __ghdl_rtin_instance is record 
  common: __ghdl_rti_common; 
  name: __ghdl_char_ptr; 
  loc: __ghdl_rti_loc; 
  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__SIG 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__SIG 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 = 0, soh = 1, stx = 2, etx = 3,
   eot = 4, enq = 5, ack = 6, bel = 7, bs = 8, ht = 9, lf = 10, vt = 11,
   ff = 12, cr = 13, so = 14, si = 15, dle = 16, dc1 = 17, dc2 = 18, dc3 = 19,
   dc4 = 20, nak = 21, syn = 22, etb = 23, can = 24, em = 25, sub = 26,
   esc = 27, fsp = 28, gsp = 29, rsp = 30, usp = 31, C20 = 32, C21 = 33,
   C22 = 34, C23 = 35, C24 = 36, C25 = 37, C26 = 38, C27 = 39, C28 = 40,
   C29 = 41, C2a = 42, C2b = 43, C2c = 44, C2d = 45, C2e = 46, C2f = 47,
   C_0 = 48, C_1 = 49, C_2 = 50, C_3 = 51, C_4 = 52, C_5 = 53, C_6 = 54,
   C_7 = 55, C_8 = 56, C_9 = 57, C3a = 58, C3b = 59, C3c = 60, C3d = 61,
   C3e = 62, C3f = 63, C40 = 64, C_A = 65, C_B = 66, C_C = 67, C_D = 68,
   C_E = 69, C_F = 70, C_G = 71, C_H = 72, C_I = 73, C_J = 74, C_K = 75,
   C_L = 76, C_M = 77, C_N = 78, C_O = 79, C_P = 80, C_Q = 81, C_R = 82,
   C_S = 83, C_T = 84, C_U = 85, C_V = 86, C_W = 87, C_X = 88, C_Y = 89,
   C_Z = 90, C5b = 91, C5c = 92, C5d = 93, C5e = 94, C5f = 95, C60 = 96,
   C_a = 97, C_b = 98, C_c = 99, C_d = 100, C_e = 101, C_f = 102, C_g = 103,
   C_h = 104, C_i = 105, C_j = 106, C_k = 107, C_l = 108, C_m = 109,
   C_n = 110, C_o = 111, C_p = 112, C_q = 113, C_r = 114, C_s = 115,
   C_t = 116, C_u = 117, C_v = 118, C_w = 119, C_x = 120, C_y = 121,
   C_z = 122, C7b = 123, C7c = 124, C7d = 125, C7e = 126, del = 127,
   c128 = 128, c129 = 129, c130 = 130, c131 = 131, c132 = 132, c133 = 133,
   c134 = 134, c135 = 135, c136 = 136, c137 = 137, c138 = 138, c139 = 139,
   c140 = 140, c141 = 141, c142 = 142, c143 = 143, c144 = 144, c145 = 145,
   c146 = 146, c147 = 147, c148 = 148, c149 = 149, c150 = 150, c151 = 151,
   c152 = 152, c153 = 153, c154 = 154, c155 = 155, c156 = 156, c157 = 157,
   c158 = 158, c159 = 159, Ca0 = 160, Ca1 = 161, Ca2 = 162, Ca3 = 163,
   Ca4 = 164, Ca5 = 165, Ca6 = 166, Ca7 = 167, Ca8 = 168, Ca9 = 169,
   Caa = 170, Cab = 171, Cac = 172, Cad = 173, Cae = 174, Caf = 175,
   Cb0 = 176, Cb1 = 177, Cb2 = 178, Cb3 = 179, Cb4 = 180, Cb5 = 181,
   Cb6 = 182, Cb7 = 183, Cb8 = 184, Cb9 = 185, Cba = 186, Cbb = 187,
   Cbc = 188, Cbd = 189, Cbe = 190, Cbf = 191, Cc0 = 192, Cc1 = 193,
   Cc2 = 194, Cc3 = 195, Cc4 = 196, Cc5 = 197, Cc6 = 198, Cc7 = 199,
   Cc8 = 200, Cc9 = 201, Cca = 202, Ccb = 203, Ccc = 204, Ccd = 205,
   Cce = 206, Ccf = 207, Cd0 = 208, Cd1 = 209, Cd2 = 210, Cd3 = 211,
   Cd4 = 212, Cd5 = 213, Cd6 = 214, Cd7 = 215, Cd8 = 216, Cd9 = 217,
   Cda = 218, Cdb = 219, Cdc = 220, Cdd = 221, Cde = 222, Cdf = 223,
   Ce0 = 224, Ce1 = 225, Ce2 = 226, Ce3 = 227, Ce4 = 228, Ce5 = 229,
   Ce6 = 230, Ce7 = 231, Ce8 = 232, Ce9 = 233, Cea = 234, Ceb = 235,
   Cec = 236, Ced = 237, Cee = 238, Cef = 239, Cf0 = 240, Cf1 = 241,
   Cf2 = 242, Cf3 = 243, Cf4 = 244, Cf5 = 245, Cf6 = 246, Cf7 = 247,
   Cf8 = 248, Cf9 = 249, Cfa = 250, Cfb = 251, Cfc = 252, Cfd = 253,
   Cfe = 254, Cff = 255};

type std__standard__character__PTR is access std__standard__character;

type std__standard__character__SIG 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 = 0, warning = 1, error = 2,
   failure = 3};

type std__standard__severity_level__PTR is access std__standard__severity_level
  ;

type std__standard__severity_level__SIG 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 (32);

type std__standard__UNIVERSAL_INTEGER__BT__PTR is access 
  std__standard__UNIVERSAL_INTEGER__BT;

type std__standard__UNIVERSAL_INTEGER__BT__SIG 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__SIG 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__CONVERTIBLE_INTEGER__BT is signed (32);

type std__standard__CONVERTIBLE_INTEGER__BT__PTR is access 
  std__standard__CONVERTIBLE_INTEGER__BT;

type std__standard__CONVERTIBLE_INTEGER__BT__SIG 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__SIG 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;

type std__standard__real__BT is float;

type std__standard__real__BT__PTR is access std__standard__real__BT;

type std__standard__real__BT__SIG 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__integer__BT is signed (32);

type std__standard__integer__BT__PTR is access std__standard__integer__BT;

type std__standard__integer__BT__SIG 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
  ;

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 
  std__standard__character__SIG;

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 constant std__standard__string__BR1 : std__standard__string__BOUND;

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;

external procedure std__standard__string_CONCAT (
  res: std__standard__string__PTR;
  left: std__standard__string__PTR;
  right: std__standard__string__PTR);

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 
  std__standard__bit__SIG;

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 constant std__standard__bit_vector__BR1 : 
  std__standard__bit_vector__BOUND;

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_CONCAT (
  res: std__standard__bit_vector__PTR;
  left: std__standard__bit_vector__PTR;
  right: std__standard__bit_vector__PTR);

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__time__BT is signed (64);

type std__standard__time__BT__PTR is access std__standard__time__BT;

type std__standard__time__BT__SIG 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;

type std__standard__file_open_kind is enum {read_mode = 0, write_mode = 1,
   append_mode = 2};

type std__standard__file_open_kind__PTR is access std__standard__file_open_kind
  ;

type std__standard__file_open_kind__SIG 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 = 0, status_error = 1,
   name_error = 2, mode_error = 3};

type std__standard__file_open_status__PTR is access 
  std__standard__file_open_status;

type std__standard__file_open_status__SIG 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;

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__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__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__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[__ghdl_index_type'[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;
  unit: __ghdl_rti_access);

external procedure __ghdl_psl_assert_failed (
  msg: std__standard__string__PTR;
  severity: std__standard__severity_level;
  location: __ghdl_location_ptr;
  unit: __ghdl_rti_access);

external procedure __ghdl_report (
  msg: std__standard__string__PTR;
  severity: std__standard__severity_level;
  location: __ghdl_location_ptr;
  unit: __ghdl_rti_access);

external var __ghdl_assert_default_report : std__standard__string;

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_b2 (
  res: std__standard__string__PTR;
  val: __ghdl_bool_type;
  rti: __ghdl_rti_access);

external function __ghdl_value_b2 (
  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_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_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[__ghdl_index_type'[8]];

type __ghdl_signal_ptr is access;

type __ghdl_signal is record 
  value: __ghdl_scalar_bytes; 
  driving_value: __ghdl_scalar_bytes; 
  last_value: __ghdl_scalar_bytes; 
  last_event: std__standard__time__BT; 
  last_active: std__standard__time__BT; 
  active_chain: __ghdl_signal_ptr; 
  event: std__standard__boolean; 
  active: std__standard__boolean; 
  has_active: __ghdl_bool_type; 
end record;

type __ghdl_signal_ptr is access __ghdl_signal;

type __ghdl_signal_ptr_ptr is access __ghdl_signal_ptr;

external var __ghdl_signal_active_chain : __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 (
  init_val: __ghdl_i32;
  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 function __ghdl_signal_driving_value_e8 (
  sig: __ghdl_signal_ptr)
  return __ghdl_i32;

external function __ghdl_create_signal_e32 (
  init_val: __ghdl_i32;
  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 function __ghdl_signal_driving_value_e32 (
  sig: __ghdl_signal_ptr)
  return __ghdl_i32;

external function __ghdl_create_signal_b2 (
  init_val: __ghdl_bool_type;
  resolv_func: __ghdl_ptr;
  resolv_inst: __ghdl_ptr)
  return __ghdl_signal_ptr;

external procedure __ghdl_signal_init_b2 (
  sig: __ghdl_signal_ptr;
  val: __ghdl_bool_type);

external procedure __ghdl_signal_simple_assign_b2 (
  sig: __ghdl_signal_ptr;
  val: __ghdl_bool_type);

external procedure __ghdl_signal_start_assign_b2 (
  sig: __ghdl_signal_ptr;
  reject: std__standard__time__BT;
  val: __ghdl_bool_type;
  after: std__standard__time__BT);

external procedure __ghdl_signal_next_assign_b2 (
  sig: __ghdl_signal_ptr;
  val: __ghdl_bool_type;
  after: std__standard__time__BT);

external procedure __ghdl_signal_associate_b2 (
  sig: __ghdl_signal_ptr;
  val: __ghdl_bool_type);

external function __ghdl_signal_driving_value_b2 (
  sig: __ghdl_signal_ptr)
  return __ghdl_bool_type;

external function __ghdl_create_signal_i32 (
  init_val: __ghdl_i32;
  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 function __ghdl_signal_driving_value_i32 (
  sig: __ghdl_signal_ptr)
  return __ghdl_i32;

external function __ghdl_create_signal_f64 (
  init_val: __ghdl_real;
  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 function __ghdl_signal_driving_value_f64 (
  sig: __ghdl_signal_ptr)
  return __ghdl_real;

external function __ghdl_create_signal_i64 (
  init_val: __ghdl_i64;
  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 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_direct_driver (
  sig: __ghdl_signal_ptr;
  drv: __ghdl_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: std__standard__time__BT)
  return __ghdl_signal_ptr;

external function __ghdl_create_quiet_signal (
  val: std__standard__time__BT)
  return __ghdl_signal_ptr;

external function __ghdl_create_transaction_signal (
  )
  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: std__standard__time__BT)
  return __ghdl_signal_ptr;

external function __ghdl_signal_create_guard (
  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);

external procedure __ghdl_process_wait_set_timeout (
  time: std__standard__time__BT);

external procedure __ghdl_process_wait_add_sensitivity (
  sig: __ghdl_signal_ptr);

external function __ghdl_process_wait_suspend (
  )
  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);

private constant _UI00000000 : subarray __ghdl_chararray[__ghdl_index_type'[11]
  ];

constant _UI00000000 := {__ghdl_char'[114], __ghdl_char'[101],
   __ghdl_char'[112], __ghdl_char'[114], __ghdl_char'[111], __ghdl_char'[46],
   __ghdl_char'[118], __ghdl_char'[104], __ghdl_char'[100], __ghdl_char'[108],
   __ghdl_char'[0]};

--F 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__ELAB (
  INSTANCE: work__repro__INSTPTR);

external constant work__RTI : __ghdl_rtin_type_scalar;

public constant work__repro__RTI : __ghdl_rtin_block;

private constant work__repro__RTISTR : subarray __ghdl_chararray[
  __ghdl_index_type'[6]];

constant work__repro__RTISTR := {__ghdl_char'[114], __ghdl_char'[101],
   __ghdl_char'[112], __ghdl_char'[114], __ghdl_char'[111], __ghdl_char'[0]};

private constant work__repro__RTIARRAY : subarray __ghdl_rti_array[
  __ghdl_index_type'[1]];

constant work__repro__RTIARRAY := {__ghdl_rti_access'[null]};

constant work__repro__RTI := {.common = 
  {.kind = __ghdl_rtik'[__ghdl_rtik_entity], .depth = __ghdl_rti_depth'[1],
   .mode = __ghdl_rti_u8'[0], .max_depth = __ghdl_rti_depth'[0]},
   .name = __ghdl_char_ptr'address (work__repro__RTISTR),
   .loc = {.address = __ghdl_ptr'[null]},
   .parent = __ghdl_rti_access'unchecked_address (work__RTI),
   .size = __ghdl_index_type'sizeof (work__repro__INSTTYPE),
   .nbr_child = __ghdl_index_type'[0],
   .children = __ghdl_rti_arr_acc'address (work__repro__RTIARRAY)};

public procedure work__repro__ELAB (
  INSTANCE: work__repro__INSTPTR)
declare
begin
  --# 1
  --# 1
end;

--F repro.vhdl

-- architecture ghdl_bug

type work__repro__ARCH__ghdl_bug__INSTTYPE is record;

type work__repro__ARCH__ghdl_bug__INSTPTR is access 
  work__repro__ARCH__ghdl_bug__INSTTYPE;

type work__repro__ARCH__ghdl_bug__P0__INSTTYPE is record 
end record;

type work__repro__ARCH__ghdl_bug__P1__INSTTYPE is record 
end record;

type work__repro__ARCH__ghdl_bug__P2__INSTTYPE is record 
end record;

type work__repro__ARCH__ghdl_bug__P3__INSTTYPE is record 
end record;

type work__repro__ARCH__ghdl_bug__INSTTYPE is record 
  ENTITY: work__repro__INSTTYPE; 
  P0: work__repro__ARCH__ghdl_bug__P0__INSTTYPE; 
  P1: work__repro__ARCH__ghdl_bug__P1__INSTTYPE; 
  P2: work__repro__ARCH__ghdl_bug__P2__INSTTYPE; 
  P3: work__repro__ARCH__ghdl_bug__P3__INSTTYPE; 
end record;

public constant work__repro__ARCH__ghdl_bug__INSTSIZE : __ghdl_index_type;

constant work__repro__ARCH__ghdl_bug__INSTSIZE := __ghdl_index_type'sizeof (
  work__repro__ARCH__ghdl_bug__INSTTYPE);

public procedure work__repro__ARCH__ghdl_bug__ELAB (
  INSTANCE: work__repro__INSTPTR);

public constant work__repro__ARCH__ghdl_bug__RTI : __ghdl_rtin_block;

public constant work__repro__ARCH__ghdl_bug__P0__RTI : __ghdl_rtin_block;

private constant work__repro__ARCH__ghdl_bug__P0__RTISTR : subarray 
  __ghdl_chararray[__ghdl_index_type'[3]];

constant work__repro__ARCH__ghdl_bug__P0__RTISTR := {__ghdl_char'[80],
   __ghdl_char'[48], __ghdl_char'[0]};

private constant work__repro__ARCH__ghdl_bug__P0__RTIARRAY : subarray 
  __ghdl_rti_array[__ghdl_index_type'[1]];

constant work__repro__ARCH__ghdl_bug__P0__RTIARRAY := 
  {__ghdl_rti_access'[null]};

constant work__repro__ARCH__ghdl_bug__P0__RTI := {.common = 
  {.kind = __ghdl_rtik'[__ghdl_rtik_process], .depth = __ghdl_rti_depth'[2],
   .mode = __ghdl_rti_u8'[0], .max_depth = __ghdl_rti_depth'[0]},
   .name = __ghdl_char_ptr'address (work__repro__ARCH__ghdl_bug__P0__RTISTR),
   .loc = {.offset = __ghdl_index_type'offsetof (
  work__repro__ARCH__ghdl_bug__INSTTYPE.P0)},
   .parent = __ghdl_rti_access'unchecked_address (
  work__repro__ARCH__ghdl_bug__RTI),
   .size = __ghdl_index_type'sizeof (work__repro__ARCH__ghdl_bug__P0__INSTTYPE)
  , .nbr_child = __ghdl_index_type'[0],
   .children = __ghdl_rti_arr_acc'address (
  work__repro__ARCH__ghdl_bug__P0__RTIARRAY)};

public constant work__repro__ARCH__ghdl_bug__P1__RTI : __ghdl_rtin_block;

private constant work__repro__ARCH__ghdl_bug__P1__RTISTR : subarray 
  __ghdl_chararray[__ghdl_index_type'[3]];

constant work__repro__ARCH__ghdl_bug__P1__RTISTR := {__ghdl_char'[80],
   __ghdl_char'[49], __ghdl_char'[0]};

private constant work__repro__ARCH__ghdl_bug__P1__RTIARRAY : subarray 
  __ghdl_rti_array[__ghdl_index_type'[1]];

constant work__repro__ARCH__ghdl_bug__P1__RTIARRAY := 
  {__ghdl_rti_access'[null]};

constant work__repro__ARCH__ghdl_bug__P1__RTI := {.common = 
  {.kind = __ghdl_rtik'[__ghdl_rtik_process], .depth = __ghdl_rti_depth'[2],
   .mode = __ghdl_rti_u8'[0], .max_depth = __ghdl_rti_depth'[0]},
   .name = __ghdl_char_ptr'address (work__repro__ARCH__ghdl_bug__P1__RTISTR),
   .loc = {.offset = __ghdl_index_type'offsetof (
  work__repro__ARCH__ghdl_bug__INSTTYPE.P1)},
   .parent = __ghdl_rti_access'unchecked_address (
  work__repro__ARCH__ghdl_bug__RTI),
   .size = __ghdl_index_type'sizeof (work__repro__ARCH__ghdl_bug__P1__INSTTYPE)
  , .nbr_child = __ghdl_index_type'[0],
   .children = __ghdl_rti_arr_acc'address (
  work__repro__ARCH__ghdl_bug__P1__RTIARRAY)};

public constant work__repro__ARCH__ghdl_bug__P2__RTI : __ghdl_rtin_block;

private constant work__repro__ARCH__ghdl_bug__P2__RTISTR : subarray 
  __ghdl_chararray[__ghdl_index_type'[3]];

constant work__repro__ARCH__ghdl_bug__P2__RTISTR := {__ghdl_char'[80],
   __ghdl_char'[50], __ghdl_char'[0]};

private constant work__repro__ARCH__ghdl_bug__P2__RTIARRAY : subarray 
  __ghdl_rti_array[__ghdl_index_type'[1]];

constant work__repro__ARCH__ghdl_bug__P2__RTIARRAY := 
  {__ghdl_rti_access'[null]};

constant work__repro__ARCH__ghdl_bug__P2__RTI := {.common = 
  {.kind = __ghdl_rtik'[__ghdl_rtik_process], .depth = __ghdl_rti_depth'[2],
   .mode = __ghdl_rti_u8'[0], .max_depth = __ghdl_rti_depth'[0]},
   .name = __ghdl_char_ptr'address (work__repro__ARCH__ghdl_bug__P2__RTISTR),
   .loc = {.offset = __ghdl_index_type'offsetof (
  work__repro__ARCH__ghdl_bug__INSTTYPE.P2)},
   .parent = __ghdl_rti_access'unchecked_address (
  work__repro__ARCH__ghdl_bug__RTI),
   .size = __ghdl_index_type'sizeof (work__repro__ARCH__ghdl_bug__P2__INSTTYPE)
  , .nbr_child = __ghdl_index_type'[0],
   .children = __ghdl_rti_arr_acc'address (
  work__repro__ARCH__ghdl_bug__P2__RTIARRAY)};

public constant work__repro__ARCH__ghdl_bug__P3__RTI : __ghdl_rtin_block;

private constant work__repro__ARCH__ghdl_bug__P3__RTISTR : subarray 
  __ghdl_chararray[__ghdl_index_type'[3]];

constant work__repro__ARCH__ghdl_bug__P3__RTISTR := {__ghdl_char'[80],
   __ghdl_char'[51], __ghdl_char'[0]};

private constant work__repro__ARCH__ghdl_bug__P3__RTIARRAY : subarray 
  __ghdl_rti_array[__ghdl_index_type'[1]];

constant work__repro__ARCH__ghdl_bug__P3__RTIARRAY := 
  {__ghdl_rti_access'[null]};

constant work__repro__ARCH__ghdl_bug__P3__RTI := {.common = 
  {.kind = __ghdl_rtik'[__ghdl_rtik_process], .depth = __ghdl_rti_depth'[2],
   .mode = __ghdl_rti_u8'[0], .max_depth = __ghdl_rti_depth'[0]},
   .name = __ghdl_char_ptr'address (work__repro__ARCH__ghdl_bug__P3__RTISTR),
   .loc = {.offset = __ghdl_index_type'offsetof (
  work__repro__ARCH__ghdl_bug__INSTTYPE.P3)},
   .parent = __ghdl_rti_access'unchecked_address (
  work__repro__ARCH__ghdl_bug__RTI),
   .size = __ghdl_index_type'sizeof (work__repro__ARCH__ghdl_bug__P3__INSTTYPE)
  , .nbr_child = __ghdl_index_type'[0],
   .children = __ghdl_rti_arr_acc'address (
  work__repro__ARCH__ghdl_bug__P3__RTIARRAY)};

private constant work__repro__ARCH__ghdl_bug__RTISTR : subarray 
  __ghdl_chararray[__ghdl_index_type'[9]];

constant work__repro__ARCH__ghdl_bug__RTISTR := {__ghdl_char'[103],
   __ghdl_char'[104], __ghdl_char'[100], __ghdl_char'[108], __ghdl_char'[95],
   __ghdl_char'[98], __ghdl_char'[117], __ghdl_char'[103], __ghdl_char'[0]};

private constant work__repro__ARCH__ghdl_bug__RTIARRAY : subarray 
  __ghdl_rti_array[__ghdl_index_type'[5]];

constant work__repro__ARCH__ghdl_bug__RTIARRAY := 
  {__ghdl_rti_access'unchecked_address (work__repro__ARCH__ghdl_bug__P0__RTI),
   __ghdl_rti_access'unchecked_address (work__repro__ARCH__ghdl_bug__P1__RTI),
   __ghdl_rti_access'unchecked_address (work__repro__ARCH__ghdl_bug__P2__RTI),
   __ghdl_rti_access'unchecked_address (work__repro__ARCH__ghdl_bug__P3__RTI),
   __ghdl_rti_access'[null]};

constant work__repro__ARCH__ghdl_bug__RTI := {.common = 
  {.kind = __ghdl_rtik'[__ghdl_rtik_architecture],
   .depth = __ghdl_rti_depth'[1], .mode = __ghdl_rti_u8'[0],
   .max_depth = __ghdl_rti_depth'[0]},
   .name = __ghdl_char_ptr'address (work__repro__ARCH__ghdl_bug__RTISTR),
   .loc = {.offset = __ghdl_index_type'offsetof (
  work__repro__ARCH__ghdl_bug__INSTTYPE.ENTITY)},
   .parent = __ghdl_rti_access'unchecked_address (work__repro__RTI),
   .size = __ghdl_index_type'sizeof (work__repro__ARCH__ghdl_bug__INSTTYPE),
   .nbr_child = __ghdl_index_type'[4],
   .children = __ghdl_rti_arr_acc'address (work__repro__ARCH__ghdl_bug__RTIARRAY
  )};


private procedure work__repro__ARCH__ghdl_bug__P0__PROC (
  INSTANCE: work__repro__ARCH__ghdl_bug__INSTPTR)
declare
  type work__repro__ARCH__ghdl_bug__P0__U0 is subarray 
    std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
  private constant _UI00000001 : work__repro__ARCH__ghdl_bug__P0__U0;
  constant _UI00000001 := {};
  private constant work__repro__ARCH__ghdl_bug__P0__U1__STB : 
    std__standard__bit_vector__BOUND;
  constant work__repro__ARCH__ghdl_bug__P0__U1__STB := {.dim_1 = 
    {.left = std__standard__integer__BT'[0],
     .right = std__standard__integer__BT'[4], .dir = __ghdl_dir_type'[dir_to],
     .length = __ghdl_index_type'[5]}};
begin
  --# 7
  declare
    local var T0_0 : std__standard__bit_vector;
    type work__repro__ARCH__ghdl_bug__P0__U2 is subarray 
      std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
    private constant _UI00000002 : work__repro__ARCH__ghdl_bug__P0__U2;
    constant _UI00000002 := {std__standard__bit'[C_1],
       std__standard__bit'[C_1], std__standard__bit'[C_1],
       std__standard__bit'[C_0], std__standard__bit'[C_0]};
    private constant work__repro__ARCH__ghdl_bug__P0__U3__STB : 
      std__standard__bit_vector__BOUND;
    constant work__repro__ARCH__ghdl_bug__P0__U3__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[0],
       .right = std__standard__integer__BT'[4],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[5]}};
    local var T0_1 : std__standard__bit_vector;
    private constant _UI00000003 : __ghdl_location;
    constant _UI00000003 := 
      {.filename = __ghdl_char_ptr'address (_UI00000000),
       .line = __ghdl_i32'[7], .col = __ghdl_i32'[3]};
    type work__repro__ARCH__ghdl_bug__P0__U4 is subarray 
      std__standard__string__BASE[__ghdl_index_type'[16]];
    private constant _UI00000004 : work__repro__ARCH__ghdl_bug__P0__U4;
    constant _UI00000004 := {std__standard__character'[C_r],
       std__standard__character'[C_o], std__standard__character'[C_r],
       std__standard__character'[C20], std__standard__character'[C20],
       std__standard__character'[C_5], std__standard__character'[C20],
       std__standard__character'[C_i], std__standard__character'[C_s],
       std__standard__character'[C20], std__standard__character'[C_b],
       std__standard__character'[C_r], std__standard__character'[C_o],
       std__standard__character'[C_k], std__standard__character'[C_e],
       std__standard__character'[C_n]};
    private constant work__repro__ARCH__ghdl_bug__P0__U5__STB : 
      std__standard__string__BOUND;
    constant work__repro__ARCH__ghdl_bug__P0__U5__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[1],
       .right = std__standard__integer__BT'[16],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[16]}};
  begin
    T0_0.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI00000001));
    T0_0.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P0__U1__STB);
    T0_1.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI00000002));
    T0_1.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P0__U3__STB);
    if not std__standard__bit_vector_EQ (std__standard__bit_vector__PTR
      'address (T0_0), std__standard__bit_vector__PTR'address (T0_1)) then
      declare
        local var T1_0 : std__standard__string;
      begin
        T1_0.BASE := std__standard__string__BASEP'conv (
          std__standard__string__BASEP'address (_UI00000004));
        T1_0.BOUNDS := std__standard__string__BOUNDP'address (
          work__repro__ARCH__ghdl_bug__P0__U5__STB);
        __ghdl_assert_failed (std__standard__string__PTR'address (T1_0), 
          std__standard__severity_level'[warning], __ghdl_location_ptr
          'address (_UI00000003), __ghdl_rti_access'[null]);
      end;
    end if;
  end;
end;


private procedure work__repro__ARCH__ghdl_bug__P1__PROC (
  INSTANCE: work__repro__ARCH__ghdl_bug__INSTPTR)
declare
  type work__repro__ARCH__ghdl_bug__P1__U0 is subarray 
    std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
  private constant _UI00000005 : work__repro__ARCH__ghdl_bug__P1__U0;
  constant _UI00000005 := {std__standard__bit'[C_1], std__standard__bit'[C_1],
     std__standard__bit'[C_1], std__standard__bit'[C_0],
     std__standard__bit'[C_0]};
  private constant work__repro__ARCH__ghdl_bug__P1__U1__STB : 
    std__standard__bit_vector__BOUND;
  constant work__repro__ARCH__ghdl_bug__P1__U1__STB := {.dim_1 = 
    {.left = std__standard__integer__BT'[0],
     .right = std__standard__integer__BT'[4], .dir = __ghdl_dir_type'[dir_to],
     .length = __ghdl_index_type'[5]}};
begin
  --# 8
  declare
    local var T0_0 : std__standard__bit_vector;
    local var T0_1 : __ghdl_ptr;
    local var T0_2 : std__standard__bit_vector;
    type work__repro__ARCH__ghdl_bug__P1__U2 is subarray 
      std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
    private constant _UI00000006 : work__repro__ARCH__ghdl_bug__P1__U2;
    constant _UI00000006 := {std__standard__bit'[C_1],
       std__standard__bit'[C_1], std__standard__bit'[C_1],
       std__standard__bit'[C_0], std__standard__bit'[C_0]};
    private constant work__repro__ARCH__ghdl_bug__P1__U3__STB : 
      std__standard__bit_vector__BOUND;
    constant work__repro__ARCH__ghdl_bug__P1__U3__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[0],
       .right = std__standard__integer__BT'[4],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[5]}};
    local var T0_3 : std__standard__bit_vector;
    private constant _UI00000007 : __ghdl_location;
    constant _UI00000007 := 
      {.filename = __ghdl_char_ptr'address (_UI00000000),
       .line = __ghdl_i32'[8], .col = __ghdl_i32'[3]};
    type work__repro__ARCH__ghdl_bug__P1__U4 is subarray 
      std__standard__string__BASE[__ghdl_index_type'[17]];
    private constant _UI00000008 : work__repro__ARCH__ghdl_bug__P1__U4;
    constant _UI00000008 := {std__standard__character'[C_r],
       std__standard__character'[C_o], std__standard__character'[C_r],
       std__standard__character'[C20], std__standard__character'[C20],
       std__standard__character'[C_5], std__standard__character'[C20],
       std__standard__character'[C_i], std__standard__character'[C_s],
       std__standard__character'[C20], std__standard__character'[C_b],
       std__standard__character'[C_r], std__standard__character'[C_o],
       std__standard__character'[C_k], std__standard__character'[C_e],
       std__standard__character'[C_n], std__standard__character'[C20]};
    private constant work__repro__ARCH__ghdl_bug__P1__U5__STB : 
      std__standard__string__BOUND;
    constant work__repro__ARCH__ghdl_bug__P1__U5__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[1],
       .right = std__standard__integer__BT'[17],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[17]}};
  begin
    T0_0.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI00000005));
    T0_0.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P1__U1__STB);
    T0_1 := __ghdl_stack2_mark ();
    std__standard__bit_vector_ROT (std__standard__bit_vector__PTR'address (T0_2
      ), std__standard__bit_vector__PTR'address (T0_0), 
      std__standard__integer__BT'[5]);
    T0_3.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI00000006));
    T0_3.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P1__U3__STB);
    if not std__standard__bit_vector_EQ (std__standard__bit_vector__PTR
      'address (T0_2), std__standard__bit_vector__PTR'address (T0_3)) then
      declare
        local var T1_0 : std__standard__string;
      begin
        T1_0.BASE := std__standard__string__BASEP'conv (
          std__standard__string__BASEP'address (_UI00000008));
        T1_0.BOUNDS := std__standard__string__BOUNDP'address (
          work__repro__ARCH__ghdl_bug__P1__U5__STB);
        __ghdl_assert_failed (std__standard__string__PTR'address (T1_0), 
          std__standard__severity_level'[warning], __ghdl_location_ptr
          'address (_UI00000007), __ghdl_rti_access'[null]);
      end;
    end if;
    __ghdl_stack2_release (T0_1);
  end;
end;


private procedure work__repro__ARCH__ghdl_bug__P2__PROC (
  INSTANCE: work__repro__ARCH__ghdl_bug__INSTPTR)
declare
  type work__repro__ARCH__ghdl_bug__P2__U0 is subarray 
    std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
  private constant _UI00000009 : work__repro__ARCH__ghdl_bug__P2__U0;
  constant _UI00000009 := {};
  private constant work__repro__ARCH__ghdl_bug__P2__U1__STB : 
    std__standard__bit_vector__BOUND;
  constant work__repro__ARCH__ghdl_bug__P2__U1__STB := {.dim_1 = 
    {.left = std__standard__integer__BT'[0],
     .right = std__standard__integer__BT'[4], .dir = __ghdl_dir_type'[dir_to],
     .length = __ghdl_index_type'[5]}};
begin
  --# 10
  declare
    local var T0_0 : std__standard__bit_vector;
    type work__repro__ARCH__ghdl_bug__P2__U2 is subarray 
      std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
    private constant _UI0000000a : work__repro__ARCH__ghdl_bug__P2__U2;
    constant _UI0000000a := {std__standard__bit'[C_1],
       std__standard__bit'[C_1], std__standard__bit'[C_1],
       std__standard__bit'[C_0], std__standard__bit'[C_0]};
    private constant work__repro__ARCH__ghdl_bug__P2__U3__STB : 
      std__standard__bit_vector__BOUND;
    constant work__repro__ARCH__ghdl_bug__P2__U3__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[0],
       .right = std__standard__integer__BT'[4],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[5]}};
    local var T0_1 : std__standard__bit_vector;
    private constant _UI0000000b : __ghdl_location;
    constant _UI0000000b := 
      {.filename = __ghdl_char_ptr'address (_UI00000000),
       .line = __ghdl_i32'[10], .col = __ghdl_i32'[3]};
    type work__repro__ARCH__ghdl_bug__P2__U4 is subarray 
      std__standard__string__BASE[__ghdl_index_type'[16]];
    private constant _UI0000000c : work__repro__ARCH__ghdl_bug__P2__U4;
    constant _UI0000000c := {std__standard__character'[C_r],
       std__standard__character'[C_o], std__standard__character'[C_l],
       std__standard__character'[C20], std__standard__character'[C2d],
       std__standard__character'[C_5], std__standard__character'[C20],
       std__standard__character'[C_i], std__standard__character'[C_s],
       std__standard__character'[C20], std__standard__character'[C_b],
       std__standard__character'[C_r], std__standard__character'[C_o],
       std__standard__character'[C_k], std__standard__character'[C_e],
       std__standard__character'[C_n]};
    private constant work__repro__ARCH__ghdl_bug__P2__U5__STB : 
      std__standard__string__BOUND;
    constant work__repro__ARCH__ghdl_bug__P2__U5__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[1],
       .right = std__standard__integer__BT'[16],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[16]}};
  begin
    T0_0.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI00000009));
    T0_0.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P2__U1__STB);
    T0_1.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI0000000a));
    T0_1.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P2__U3__STB);
    if not std__standard__bit_vector_EQ (std__standard__bit_vector__PTR
      'address (T0_0), std__standard__bit_vector__PTR'address (T0_1)) then
      declare
        local var T1_0 : std__standard__string;
      begin
        T1_0.BASE := std__standard__string__BASEP'conv (
          std__standard__string__BASEP'address (_UI0000000c));
        T1_0.BOUNDS := std__standard__string__BOUNDP'address (
          work__repro__ARCH__ghdl_bug__P2__U5__STB);
        __ghdl_assert_failed (std__standard__string__PTR'address (T1_0), 
          std__standard__severity_level'[warning], __ghdl_location_ptr
          'address (_UI0000000b), __ghdl_rti_access'[null]);
      end;
    end if;
  end;
end;


private procedure work__repro__ARCH__ghdl_bug__P3__PROC (
  INSTANCE: work__repro__ARCH__ghdl_bug__INSTPTR)
declare
  type work__repro__ARCH__ghdl_bug__P3__U0 is subarray 
    std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
  private constant _UI0000000d : work__repro__ARCH__ghdl_bug__P3__U0;
  constant _UI0000000d := {std__standard__bit'[C_1], std__standard__bit'[C_1],
     std__standard__bit'[C_1], std__standard__bit'[C_0],
     std__standard__bit'[C_0]};
  private constant work__repro__ARCH__ghdl_bug__P3__U1__STB : 
    std__standard__bit_vector__BOUND;
  constant work__repro__ARCH__ghdl_bug__P3__U1__STB := {.dim_1 = 
    {.left = std__standard__integer__BT'[0],
     .right = std__standard__integer__BT'[4], .dir = __ghdl_dir_type'[dir_to],
     .length = __ghdl_index_type'[5]}};
begin
  --# 11
  declare
    local var T0_0 : std__standard__bit_vector;
    local var T0_1 : __ghdl_ptr;
    local var T0_2 : std__standard__bit_vector;
    type work__repro__ARCH__ghdl_bug__P3__U2 is subarray 
      std__standard__bit_vector__BASE[__ghdl_index_type'[5]];
    private constant _UI0000000e : work__repro__ARCH__ghdl_bug__P3__U2;
    constant _UI0000000e := {std__standard__bit'[C_1],
       std__standard__bit'[C_1], std__standard__bit'[C_1],
       std__standard__bit'[C_0], std__standard__bit'[C_0]};
    private constant work__repro__ARCH__ghdl_bug__P3__U3__STB : 
      std__standard__bit_vector__BOUND;
    constant work__repro__ARCH__ghdl_bug__P3__U3__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[0],
       .right = std__standard__integer__BT'[4],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[5]}};
    local var T0_3 : std__standard__bit_vector;
    private constant _UI0000000f : __ghdl_location;
    constant _UI0000000f := 
      {.filename = __ghdl_char_ptr'address (_UI00000000),
       .line = __ghdl_i32'[11], .col = __ghdl_i32'[3]};
    type work__repro__ARCH__ghdl_bug__P3__U4 is subarray 
      std__standard__string__BASE[__ghdl_index_type'[17]];
    private constant _UI00000010 : work__repro__ARCH__ghdl_bug__P3__U4;
    constant _UI00000010 := {std__standard__character'[C_r],
       std__standard__character'[C_o], std__standard__character'[C_l],
       std__standard__character'[C20], std__standard__character'[C2d],
       std__standard__character'[C_5], std__standard__character'[C20],
       std__standard__character'[C_i], std__standard__character'[C_s],
       std__standard__character'[C20], std__standard__character'[C_b],
       std__standard__character'[C_r], std__standard__character'[C_o],
       std__standard__character'[C_k], std__standard__character'[C_e],
       std__standard__character'[C_n], std__standard__character'[C20]};
    private constant work__repro__ARCH__ghdl_bug__P3__U5__STB : 
      std__standard__string__BOUND;
    constant work__repro__ARCH__ghdl_bug__P3__U5__STB := {.dim_1 = 
      {.left = std__standard__integer__BT'[1],
       .right = std__standard__integer__BT'[17],
       .dir = __ghdl_dir_type'[dir_to], .length = __ghdl_index_type'[17]}};
  begin
    T0_0.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI0000000d));
    T0_0.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P3__U1__STB);
    T0_1 := __ghdl_stack2_mark ();
    std__standard__bit_vector_ROT (std__standard__bit_vector__PTR'address (T0_2
      ), std__standard__bit_vector__PTR'address (T0_0), -
      std__standard__integer__BT'[-5]);
    T0_3.BASE := std__standard__bit_vector__BASEP'conv (
      std__standard__bit_vector__BASEP'address (_UI0000000e));
    T0_3.BOUNDS := std__standard__bit_vector__BOUNDP'address (
      work__repro__ARCH__ghdl_bug__P3__U3__STB);
    if not std__standard__bit_vector_EQ (std__standard__bit_vector__PTR
      'address (T0_2), std__standard__bit_vector__PTR'address (T0_3)) then
      declare
        local var T1_0 : std__standard__string;
      begin
        T1_0.BASE := std__standard__string__BASEP'conv (
          std__standard__string__BASEP'address (_UI00000010));
        T1_0.BOUNDS := std__standard__string__BOUNDP'address (
          work__repro__ARCH__ghdl_bug__P3__U5__STB);
        __ghdl_assert_failed (std__standard__string__PTR'address (T1_0), 
          std__standard__severity_level'[warning], __ghdl_location_ptr
          'address (_UI0000000f), __ghdl_rti_access'[null]);
      end;
    end if;
    __ghdl_stack2_release (T0_1);
  end;
end;

public procedure work__repro__ARCH__ghdl_bug__ELAB (
  INSTANCE: work__repro__INSTPTR)
declare
  local var ARCH_INSTANCE : work__repro__ARCH__ghdl_bug__INSTPTR;
begin
  ARCH_INSTANCE := work__repro__ARCH__ghdl_bug__INSTPTR'conv (INSTANCE);
  INSTANCE.all.RTI.rti := __ghdl_rti_access'unchecked_address (
    work__repro__ARCH__ghdl_bug__RTI);
  work__repro__ELAB (INSTANCE);
  --# 4
  --# 4
  --# 7
  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
    ARCH_INSTANCE.all), __ghdl_ptr'subprg_addr (
    work__repro__ARCH__ghdl_bug__P0__PROC), __ghdl_rti_access
    'unchecked_address (work__repro__ARCH__ghdl_bug__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__repro__ARCH__ghdl_bug__P1__PROC), __ghdl_rti_access
    'unchecked_address (work__repro__ARCH__ghdl_bug__P1__RTI), __ghdl_ptr
    'unchecked_address (ARCH_INSTANCE.all.P1));
  --# 10
  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
    ARCH_INSTANCE.all), __ghdl_ptr'subprg_addr (
    work__repro__ARCH__ghdl_bug__P2__PROC), __ghdl_rti_access
    'unchecked_address (work__repro__ARCH__ghdl_bug__P2__RTI), __ghdl_ptr
    'unchecked_address (ARCH_INSTANCE.all.P2));
  --# 11
  __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address (
    ARCH_INSTANCE.all), __ghdl_ptr'subprg_addr (
    work__repro__ARCH__ghdl_bug__P3__PROC), __ghdl_rti_access
    'unchecked_address (work__repro__ARCH__ghdl_bug__P3__RTI), __ghdl_ptr
    'unchecked_address (ARCH_INSTANCE.all.P3));
end;