aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/issue1014/record_test.vhdl
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/synth/issue1014/record_test.vhdl')
-rw-r--r--testsuite/synth/issue1014/record_test.vhdl31
1 files changed, 31 insertions, 0 deletions
diff --git a/testsuite/synth/issue1014/record_test.vhdl b/testsuite/synth/issue1014/record_test.vhdl
new file mode 100644
index 000000000..9362d7c4a
--- /dev/null
+++ b/testsuite/synth/issue1014/record_test.vhdl
@@ -0,0 +1,31 @@
+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');
+ signal int_test : integer range 0 to rec_constant.int := 0;
+ signal slv_test : std_logic_vector(rec_constant.int downto 0) := (others => '0');
+begin
+ o <= rec_constant.int;
+end rtl;