aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/issue2144/repro.vhdl
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-07-27 22:22:16 +0200
committerTristan Gingold <tgingold@free.fr>2022-07-27 22:30:44 +0200
commit3976d0f60b3ab41d91767e30ee972ad8ded426a1 (patch)
tree2012570005cdf888f955953f3f7056a5a1e75b77 /testsuite/synth/issue2144/repro.vhdl
parentaf37a8e12d4f06d874c0d4b2a961b7e6b7496c30 (diff)
downloadghdl-3976d0f60b3ab41d91767e30ee972ad8ded426a1.tar.gz
ghdl-3976d0f60b3ab41d91767e30ee972ad8ded426a1.tar.bz2
ghdl-3976d0f60b3ab41d91767e30ee972ad8ded426a1.zip
testsuite/synth: add a test for #2144
Diffstat (limited to 'testsuite/synth/issue2144/repro.vhdl')
-rw-r--r--testsuite/synth/issue2144/repro.vhdl52
1 files changed, 52 insertions, 0 deletions
diff --git a/testsuite/synth/issue2144/repro.vhdl b/testsuite/synth/issue2144/repro.vhdl
new file mode 100644
index 000000000..a89fbcaa5
--- /dev/null
+++ b/testsuite/synth/issue2144/repro.vhdl
@@ -0,0 +1,52 @@
+library IEEE;
+use IEEE.std_logic_1164.all;
+
+entity bug is
+ port (
+ dummy : in std_ulogic
+ );
+end bug;
+
+architecture struct of bug is
+ type table_t is array (natural range<>, natural range<>) of natural;
+
+ function fun return table_t is
+ variable ret : table_t(0 to 1, 0 to 3);
+ begin
+ ret(0,0) := 100;
+ ret(0,1) := 101;
+ ret(0,2) := 102;
+ ret(0,3) := 103;
+ ret(1,0) := 110;
+ ret(1,1) := 111;
+ ret(1,2) := 112;
+ ret(1,3) := 113;
+ for i in ret'range(1) loop
+ for j in ret'range(2) loop
+ report "t("& integer'image(i) & "," & integer'image(j)
+ & ")=" & integer'image(ret(i,j));
+ end loop;
+ end loop;
+ return ret;
+ end function;
+
+ constant table : table_t := fun;
+begin
+ gen_i : for i in table'range(1) generate
+ gen_j : for j in table'range(2) generate
+ b : block is
+ function print return std_ulogic is
+ begin
+ report "index="& integer'image(i) & "," & integer'image(j) & "; " &
+ "length="& integer'image(table'length(1)) & "," & integer'image(table'length(2));
+ return '0';
+ end function;
+
+ constant tmp : std_ulogic := print;
+ constant entry : natural := table(i, j);
+ begin
+
+ end block;
+ end generate;
+ end generate;
+end architecture;