aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-04-28 19:34:12 +0200
committerTristan Gingold <tgingold@free.fr>2022-04-28 19:34:12 +0200
commit12938904c0413f9b7398a9a1fe2ee54b74f1b1d0 (patch)
tree3d8e758294cde90f1b169d162e521f33021d64d1 /testsuite/synth
parent3a91c5620268b27aa4b57cc9b1ca8fda6d48a0eb (diff)
downloadghdl-12938904c0413f9b7398a9a1fe2ee54b74f1b1d0.tar.gz
ghdl-12938904c0413f9b7398a9a1fe2ee54b74f1b1d0.tar.bz2
ghdl-12938904c0413f9b7398a9a1fe2ee54b74f1b1d0.zip
testsuite/synth: add a test for #2045
Diffstat (limited to 'testsuite/synth')
-rw-r--r--testsuite/synth/issue2045/ghdlcrash.vhdl35
-rwxr-xr-xtestsuite/synth/issue2045/testsuite.sh8
2 files changed, 43 insertions, 0 deletions
diff --git a/testsuite/synth/issue2045/ghdlcrash.vhdl b/testsuite/synth/issue2045/ghdlcrash.vhdl
new file mode 100644
index 000000000..4fda4dde4
--- /dev/null
+++ b/testsuite/synth/issue2045/ghdlcrash.vhdl
@@ -0,0 +1,35 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity ghdlcrash is
+ port (
+ i : in std_logic;
+ o : out std_logic
+ );
+end ghdlcrash;
+
+architecture synth of ghdlcrash is
+
+ -- Utility function to calculate minimum of two values
+ function min(a, b : natural) return natural is
+ variable m : natural := 0;
+ begin
+
+ -- This line makes GHDL crash
+ m := a when a <= b else b;
+
+ -- This works
+ if a <= b then m := a ; else m := b; end if;
+
+ return m;
+ end function;
+
+ -- Initialize general input grouping
+ constant CST : natural := min(0, 0);
+
+begin
+
+ -- Phony functionality
+ o <= i;
+
+end architecture;
diff --git a/testsuite/synth/issue2045/testsuite.sh b/testsuite/synth/issue2045/testsuite.sh
new file mode 100755
index 000000000..541971758
--- /dev/null
+++ b/testsuite/synth/issue2045/testsuite.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+GHDL_STD_FLAGS=--std=08
+synth_only ghdlcrash
+
+echo "Test successful"