aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-11-06 21:02:50 +0100
committerTristan Gingold <tgingold@free.fr>2019-11-06 21:02:50 +0100
commit75145fb7f4405448ab2ee31e795d358b9928afaf (patch)
tree12678968c06201927a8db5071e186a67adf1758e /testsuite
parent0548bf11b1dab488335c647f380a66a17caa2433 (diff)
downloadghdl-75145fb7f4405448ab2ee31e795d358b9928afaf.tar.gz
ghdl-75145fb7f4405448ab2ee31e795d358b9928afaf.tar.bz2
ghdl-75145fb7f4405448ab2ee31e795d358b9928afaf.zip
Add testcase for #1011
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/synth/issue1011/record_test.vhdl29
-rwxr-xr-xtestsuite/synth/issue1011/testsuite.sh11
2 files changed, 40 insertions, 0 deletions
diff --git a/testsuite/synth/issue1011/record_test.vhdl b/testsuite/synth/issue1011/record_test.vhdl
new file mode 100644
index 000000000..3cd66d4fe
--- /dev/null
+++ b/testsuite/synth/issue1011/record_test.vhdl
@@ -0,0 +1,29 @@
+library ieee;
+ use ieee.std_logic_1164.all;
+
+entity record_test is
+ port (
+ o : out integer
+ );
+end record_test;
+
+architecture rtl of record_test is
+ type t_record is record
+ int : integer;
+ end record t_record;
+
+ function get_constants(choice : std_logic) return t_record is
+ variable v_const : t_record;
+ begin
+ if choice = '0' then
+ v_const := (int => 27.777 us / 83.333 ns);
+ elsif choice = '1' then
+ v_const := (int => 26.316 us / 83.333 ns);
+ end if;
+ return v_const;
+ end function get_constants;
+
+ constant rec_constant : t_record := get_constants('0');
+begin
+ o <= rec_constant.int;
+end rtl;
diff --git a/testsuite/synth/issue1011/testsuite.sh b/testsuite/synth/issue1011/testsuite.sh
new file mode 100755
index 000000000..8ea172328
--- /dev/null
+++ b/testsuite/synth/issue1011/testsuite.sh
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+t=record_test
+synth $t.vhdl -e $t > syn_$t.vhdl
+analyze syn_$t.vhdl
+
+clean
+
+echo "Test successful"