aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testsuite/gna/issue1453/bug.vhdl13
-rw-r--r--testsuite/gna/issue1453/ent.vhdl22
-rwxr-xr-xtestsuite/gna/issue1453/testsuite.sh11
3 files changed, 46 insertions, 0 deletions
diff --git a/testsuite/gna/issue1453/bug.vhdl b/testsuite/gna/issue1453/bug.vhdl
new file mode 100644
index 000000000..3be7969eb
--- /dev/null
+++ b/testsuite/gna/issue1453/bug.vhdl
@@ -0,0 +1,13 @@
+library ieee;
+use ieee.numeric_std.all;
+package bug is
+ subtype byte is unsigned (7 downto 0);
+ subtype word is unsigned (15 downto 0);
+ function high_byte(w: word) return byte;
+end bug;
+package body bug is
+ function high_byte(w: word) return byte is
+ begin
+ return (7 downto 0 => w(15 downto 8));
+ end;
+end bug;
diff --git a/testsuite/gna/issue1453/ent.vhdl b/testsuite/gna/issue1453/ent.vhdl
new file mode 100644
index 000000000..2f355720d
--- /dev/null
+++ b/testsuite/gna/issue1453/ent.vhdl
@@ -0,0 +1,22 @@
+entity ent is
+end;
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+use work.bug.all;
+
+architecture behav of ent is
+ signal w : word;
+ signal b : byte;
+begin
+ process
+ begin
+ w <= x"1234";
+ wait for 1 ns;
+ b <= high_byte(w);
+ wait for 1 ns;
+ assert b = x"12" severity failure;
+ wait;
+ end process;
+end;
diff --git a/testsuite/gna/issue1453/testsuite.sh b/testsuite/gna/issue1453/testsuite.sh
new file mode 100755
index 000000000..6ee9d8280
--- /dev/null
+++ b/testsuite/gna/issue1453/testsuite.sh
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+export GHDL_STD_FLAGS=--std=08
+analyze bug.vhdl ent.vhdl
+elab_simulate ent
+
+clean
+
+echo "Test successful"