From eb461d9a6f010d9cb77a0cee6e9850b1aee0dcf7 Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Sun, 5 Nov 2017 07:49:12 +0100
Subject: Handle complex subtype in unbounded records.

---
 testsuite/gna/issue418/repro3.vhdl  | 37 +++++++++++++++++++++++++++++++++++++
 testsuite/gna/issue418/testsuite.sh |  3 +++
 2 files changed, 40 insertions(+)
 create mode 100644 testsuite/gna/issue418/repro3.vhdl

(limited to 'testsuite/gna/issue418')

diff --git a/testsuite/gna/issue418/repro3.vhdl b/testsuite/gna/issue418/repro3.vhdl
new file mode 100644
index 000000000..b9f2182e9
--- /dev/null
+++ b/testsuite/gna/issue418/repro3.vhdl
@@ -0,0 +1,37 @@
+entity repro3 is
+  generic (blen : natural := 8);
+end;
+
+architecture behav of repro3 is
+   -- AXI-Lite Interface signals
+  type address_channel is record
+    --DUT inputs
+    awaddr  : bit_vector;
+    awvalid : bit;
+  end record;
+
+
+  type t_if is record
+    write_channel  : address_channel;
+    data : bit_vector (blen - 1 downto 0);
+  end record;
+
+  subtype ST_IF_32 is t_if  (
+    write_channel (
+        awaddr(31 downto 0)  )
+    );
+
+  signal s : st_if_32;
+begin
+  s.write_channel.awaddr <= x"0000_1000", x"1000_ffff" after 2 ns;
+  s.data <= (others => '1');
+  process
+  begin
+    wait for 1 ns;
+    assert s.write_channel.awvalid = '0';
+    assert s.write_channel.awaddr(12) = '1';
+    wait for 2 ns;
+    assert s.write_channel.awaddr(14) = '1';
+    wait;
+  end process;
+end;
diff --git a/testsuite/gna/issue418/testsuite.sh b/testsuite/gna/issue418/testsuite.sh
index 111e0e6d6..ffbba4d1c 100755
--- a/testsuite/gna/issue418/testsuite.sh
+++ b/testsuite/gna/issue418/testsuite.sh
@@ -19,6 +19,9 @@ if ghdl_has_feature repro2 ghw; then
   # How to test the ghw ?  Use ghwdump ?
 fi
 
+analyze repro3.vhdl
+elab_simulate repro3
+
 clean
 rm -f repro.ghw repro2.ghw tc749.ghw
 
-- 
cgit v1.2.3