From cfc292a4d7319d6599b1d9f74b879301d71af63d Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Tue, 20 Nov 2018 17:24:36 +0100
Subject: Add reproducer for #610.

---
 testsuite/gna/issue610/repro1.vhdl  | 18 ++++++++++++++++++
 testsuite/gna/issue610/repro2.vhdl  | 15 +++++++++++++++
 testsuite/gna/issue610/repro3.vhdl  | 17 +++++++++++++++++
 testsuite/gna/issue610/repro4.vhdl  | 19 +++++++++++++++++++
 testsuite/gna/issue610/testsuite.sh | 23 +++++++++++++++++++++++
 5 files changed, 92 insertions(+)
 create mode 100644 testsuite/gna/issue610/repro1.vhdl
 create mode 100644 testsuite/gna/issue610/repro2.vhdl
 create mode 100644 testsuite/gna/issue610/repro3.vhdl
 create mode 100644 testsuite/gna/issue610/repro4.vhdl
 create mode 100755 testsuite/gna/issue610/testsuite.sh

(limited to 'testsuite/gna/issue610')

diff --git a/testsuite/gna/issue610/repro1.vhdl b/testsuite/gna/issue610/repro1.vhdl
new file mode 100644
index 000000000..dfbc91f7d
--- /dev/null
+++ b/testsuite/gna/issue610/repro1.vhdl
@@ -0,0 +1,18 @@
+entity repro1 is
+   port (d : bit_vector := x"01");
+end repro1;
+
+
+architecture behav of repro1
+is
+  type t_bv_array is array (natural range <>) of bit_vector;
+begin
+  process
+    variable v : t_bv_array (0 to 0)(d'length - 1 downto 0);
+  begin
+    v(0) := d;
+    assert v(0)(0) = '1' severity failure;
+    assert v(0)(1) = '0' severity failure;
+    wait;
+  end process;
+end behav;
diff --git a/testsuite/gna/issue610/repro2.vhdl b/testsuite/gna/issue610/repro2.vhdl
new file mode 100644
index 000000000..1473eeb76
--- /dev/null
+++ b/testsuite/gna/issue610/repro2.vhdl
@@ -0,0 +1,15 @@
+entity repro2 is
+  generic (l : natural := 10);
+end repro2;
+
+architecture behav of repro2 is
+begin
+   process
+     variable v : string (0 to l);
+     alias a : string is v;
+   begin
+     v := (others => ' ');
+     a := (others => 'x');
+     wait;
+   end process;
+end behav;
diff --git a/testsuite/gna/issue610/repro3.vhdl b/testsuite/gna/issue610/repro3.vhdl
new file mode 100644
index 000000000..dda5b8963
--- /dev/null
+++ b/testsuite/gna/issue610/repro3.vhdl
@@ -0,0 +1,17 @@
+entity repro3 is
+end repro3;
+
+architecture behav of repro3 is
+  procedure set (v : out string) is
+  begin
+    v := (others => ' ');
+  end set;
+begin
+  process
+    variable s : string (1 to 4);
+  begin
+    set (s);
+    assert s = "    " severity failure;
+    wait;
+  end process;
+end behav;
diff --git a/testsuite/gna/issue610/repro4.vhdl b/testsuite/gna/issue610/repro4.vhdl
new file mode 100644
index 000000000..6ede420d2
--- /dev/null
+++ b/testsuite/gna/issue610/repro4.vhdl
@@ -0,0 +1,19 @@
+entity repro4 is
+end repro4;
+
+architecture behav of repro4 is
+  procedure set (signal v : out string) is
+  begin
+    v <= (others => ' ');
+  end set;
+  signal s : string (1 to 3);
+begin
+  set (s);
+
+  process
+  begin
+    wait for 0 ns;
+    assert s = "   " severity failure;
+    wait;
+  end process;
+end behav;
diff --git a/testsuite/gna/issue610/testsuite.sh b/testsuite/gna/issue610/testsuite.sh
new file mode 100755
index 000000000..9c9cc5c5c
--- /dev/null
+++ b/testsuite/gna/issue610/testsuite.sh
@@ -0,0 +1,23 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+export GHDL_STD_FLAGS=--std=08
+analyze repro1.vhdl
+elab_simulate repro1
+
+clean
+
+export GHDL_STD_FLAGS=-frelaxed-rules
+analyze repro2.vhdl
+elab_simulate repro2
+
+analyze repro3.vhdl
+#elab_simulate repro3
+
+analyze repro4.vhdl
+#elab_simulate repro4
+
+clean
+
+echo "Test successful"
-- 
cgit v1.2.3