aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/gna
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/gna')
-rw-r--r--testsuite/gna/bug0117/repro1.vhdl23
-rw-r--r--testsuite/gna/bug0117/repro2.vhdl6
-rw-r--r--testsuite/gna/bug0117/repro3.vhdl13
-rw-r--r--testsuite/gna/bug0117/repro4.vhdl26
-rw-r--r--testsuite/gna/bug0117/repro5.vhdl24
-rwxr-xr-xtestsuite/gna/bug0117/testsuite.sh14
6 files changed, 106 insertions, 0 deletions
diff --git a/testsuite/gna/bug0117/repro1.vhdl b/testsuite/gna/bug0117/repro1.vhdl
new file mode 100644
index 000000000..5d8909b64
--- /dev/null
+++ b/testsuite/gna/bug0117/repro1.vhdl
@@ -0,0 +1,23 @@
+entity repro1 is
+end repro1;
+
+architecture behav of repro1 is
+ type bv_array is array(natural range <>) of bit_vector;
+ type bv_array_ptr is access bv_array;
+
+ procedure reshape (d : bv_array) is
+ constant word_len : natural := d(d'low)'length;
+ variable sym : bv_array_ptr;
+ begin
+ sym := new bv_array (0 to d'length - 1)(word_len - 1 downto 0);
+ sym.all := d;
+ end;
+
+ signal s : bv_array(1 to 2)(7 downto 0);
+begin
+ process
+ begin
+ reshape(s);
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/gna/bug0117/repro2.vhdl b/testsuite/gna/bug0117/repro2.vhdl
new file mode 100644
index 000000000..6a32765bc
--- /dev/null
+++ b/testsuite/gna/bug0117/repro2.vhdl
@@ -0,0 +1,6 @@
+package repro2 is
+ type rec1 is record
+ wr : bit;
+ dat : bit_vector(7 downto 0);
+ end record;
+end repro2;
diff --git a/testsuite/gna/bug0117/repro3.vhdl b/testsuite/gna/bug0117/repro3.vhdl
new file mode 100644
index 000000000..a17e82843
--- /dev/null
+++ b/testsuite/gna/bug0117/repro3.vhdl
@@ -0,0 +1,13 @@
+entity repro3 is
+end;
+
+architecture behav of repro3 is
+ type rec1 is record
+ wr : bit;
+ dat : bit_vector(7 downto 0);
+ end record;
+
+ signal s : rec1;
+begin
+ s <= ('0', x"01");
+end behav;
diff --git a/testsuite/gna/bug0117/repro4.vhdl b/testsuite/gna/bug0117/repro4.vhdl
new file mode 100644
index 000000000..dcecbbd7f
--- /dev/null
+++ b/testsuite/gna/bug0117/repro4.vhdl
@@ -0,0 +1,26 @@
+entity repro4 is
+end repro4;
+
+architecture behav of repro4 is
+ type bv_array is array(natural range <>) of bit_vector;
+ type bv_array_ptr is access bv_array;
+begin
+ process
+ variable count : natural := 0;
+ impure function seven return natural is
+ begin
+ report "seven";
+ count := count + 1;
+ return 7;
+ end seven;
+
+ subtype word_rng is natural range seven downto 0;
+
+ subtype word_array is bv_array(open)(word_rng);
+
+ subtype word_array4 is word_array(0 to 3);
+ begin
+ assert count = 1 severity failure;
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/gna/bug0117/repro5.vhdl b/testsuite/gna/bug0117/repro5.vhdl
new file mode 100644
index 000000000..3f3f8968e
--- /dev/null
+++ b/testsuite/gna/bug0117/repro5.vhdl
@@ -0,0 +1,24 @@
+entity repro5 is
+end repro5;
+
+architecture behav of repro5 is
+ type bv_array is array(natural range <>) of bit_vector;
+ type bv_array_ptr is access bv_array;
+begin
+ process
+ variable count : natural := 0;
+ impure function seven return natural is
+ begin
+ report "seven";
+ count := count + 1;
+ return 7;
+ end seven;
+
+ subtype word_array is bv_array(open)(seven downto 0);
+
+ subtype word_array4 is word_array(0 to 3);
+ begin
+ assert count = 1 severity failure;
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/gna/bug0117/testsuite.sh b/testsuite/gna/bug0117/testsuite.sh
new file mode 100755
index 000000000..d9bb64e30
--- /dev/null
+++ b/testsuite/gna/bug0117/testsuite.sh
@@ -0,0 +1,14 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+export GHDL_STD_FLAGS=--std=08
+analyze repro1.vhdl
+elab_simulate repro1
+
+analyze repro4.vhdl
+elab_simulate repro4
+
+clean
+
+echo "Test successful"