diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-02-26 18:52:52 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-02-26 18:52:52 +0100 |
commit | e58709aefc057b4af0d7c011fc1c7d45d6176e10 (patch) | |
tree | dc340d5c5845c1755f545ce9c45dd55442f22d1b /testsuite/gna/issue1980/repro4.on | |
parent | 739a8b346660bd2c8d2a2d8d2269d73a812eed71 (diff) | |
download | ghdl-e58709aefc057b4af0d7c011fc1c7d45d6176e10.tar.gz ghdl-e58709aefc057b4af0d7c011fc1c7d45d6176e10.tar.bz2 ghdl-e58709aefc057b4af0d7c011fc1c7d45d6176e10.zip |
testsuite/gna: add a test for #1980
Diffstat (limited to 'testsuite/gna/issue1980/repro4.on')
-rw-r--r-- | testsuite/gna/issue1980/repro4.on | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/testsuite/gna/issue1980/repro4.on b/testsuite/gna/issue1980/repro4.on new file mode 100644 index 000000000..4926d2e34 --- /dev/null +++ b/testsuite/gna/issue1980/repro4.on @@ -0,0 +1,290 @@ +-- 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_sizes_ptr IS ACCESS __ghdl_sizes_type; + +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; + +-- package std.standard + +TYPE std__standard__boolean IS BOOLEAN {false, true}; + + +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__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; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue1980/OsvvmLibraries/osvvm/AlertLogPkg.vhd + +-- package body alertlogpkg + + +TYPE osvvm__alertlogpkg__alertlogstructptype IS RECORD; + +TYPE osvvm__alertlogpkg__alertlogstructptype__PTR IS ACCESS + osvvm__alertlogpkg__alertlogstructptype; + + +TYPE + osvvm__alertlogpkg__alertlogstructptype__alertlogstructptype__setjustify__PARAMSTYPE + IS RECORD + alertlogid: std__standard__integer__BT; + STATE: __ghdl_index_type; + FRAME: __ghdl_ptr; +END RECORD; + +TYPE + osvvm__alertlogpkg__alertlogstructptype__alertlogstructptype__setjustify__PARAMSPTR + IS ACCESS + osvvm__alertlogpkg__alertlogstructptype__alertlogstructptype__setjustify__PARAMSTYPE + ; + +PRIVATE PROCEDURE osvvm__alertlogpkg__alertlogstructptype__calcjustify ( + OBJ: osvvm__alertlogpkg__alertlogstructptype__PTR; + alertlogid: std__standard__integer__BT; + currentlength: std__standard__integer__BT; + indentamount: std__standard__integer__BT; + idseparatorlength: std__standard__integer__BT) +DECLARE +BEGIN +END; + + +TYPE osvvm__alertlogpkg__alertlogstructptype__setjustify___FRAMETYPE IS RECORD + OBJ: osvvm__alertlogpkg__alertlogstructptype__PTR; + PARAMS: + osvvm__alertlogpkg__alertlogstructptype__alertlogstructptype__setjustify__PARAMSPTR + ; + separator: std__standard__string; +END RECORD; + +TYPE osvvm__alertlogpkg__alertlogstructptype__setjustify___FRAMEPTR IS ACCESS + osvvm__alertlogpkg__alertlogstructptype__setjustify___FRAMETYPE; + +PRIVATE PROCEDURE osvvm__alertlogpkg__alertlogstructptype__setjustify ( + PARAMS: + osvvm__alertlogpkg__alertlogstructptype__alertlogstructptype__setjustify__PARAMSPTR + ; + OBJ: osvvm__alertlogpkg__alertlogstructptype__PTR) +DECLARE + LOCAL VAR FRAMEPTR : + osvvm__alertlogpkg__alertlogstructptype__setjustify___FRAMEPTR; +BEGIN + --# 1172 + FRAMEPTR := osvvm__alertlogpkg__alertlogstructptype__setjustify___FRAMEPTR + 'conv# (PARAMS.ALL.FRAME); + PARAMS.ALL.FRAME := __ghdl_ptr'conv# (FRAMEPTR); + FRAMEPTR.ALL.OBJ := OBJ; + FRAMEPTR.ALL.PARAMS := PARAMS; + --# 1180 + osvvm__alertlogpkg__alertlogstructptype__calcjustify ( + osvvm__alertlogpkg__alertlogstructptype__PTR'address (OBJ.ALL), + PARAMS.ALL.alertlogid, 0, 0, std__standard__integer__BT'conv# ( + FRAMEPTR.ALL.separator.BOUNDS.ALL.dim_1.length)); +END; + +PUBLIC FUNCTION main (a : __ghdl_index_type) RETURN __ghdl_index_type +DECLARE +BEGIN + RETURN a; +END; |