From 5f8c9462de0347b816cb015ff31772d3e06e9cf2 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Sun, 29 Dec 2013 18:55:34 +0100 Subject: Fix bug17127: extend the life of Alloc_Stack variables. --- testsuite/gna/bug17127/bug2.vhdl | 28 ++++++++++++++++++++++++++++ testsuite/gna/bug17127/testsuite.sh | 10 ++++++++++ testsuite/gna/sr2655/bug.vhdl | 29 +++++++++++++++++++++++++++++ testsuite/gna/sr2655/testsuite.sh | 10 ++++++++++ 4 files changed, 77 insertions(+) create mode 100644 testsuite/gna/bug17127/bug2.vhdl create mode 100755 testsuite/gna/bug17127/testsuite.sh create mode 100644 testsuite/gna/sr2655/bug.vhdl create mode 100755 testsuite/gna/sr2655/testsuite.sh (limited to 'testsuite') diff --git a/testsuite/gna/bug17127/bug2.vhdl b/testsuite/gna/bug17127/bug2.vhdl new file mode 100644 index 000000000..b4880dda3 --- /dev/null +++ b/testsuite/gna/bug17127/bug2.vhdl @@ -0,0 +1,28 @@ +library ieee; +use ieee.std_logic_1164.all; + +entity bug2 is +end; + +architecture this of bug2 is + function f return integer is + constant cc1: std_logic_vector := "1100"; + constant cc2: std_logic_vector := cc1; + variable r: std_logic_vector(3 downto 0); + begin + assert false report "case2-a: "&integer'image(cc1'length) severity note; + assert false report "case2-b: "&integer'image(cc2'length) severity note;--This reports "0". Correct one would be "4"! + return 0; + end; + constant c1: std_logic_vector := "1010"; + constant c2: std_logic_vector := c1; + signal i: integer; +begin + process + begin + assert false report "case1-a: "&integer'image(c1'length) severity note; + assert false report "case1-b: "&integer'image(c2'length) severity note; + i <= f; + wait; + end process; +end; diff --git a/testsuite/gna/bug17127/testsuite.sh b/testsuite/gna/bug17127/testsuite.sh new file mode 100755 index 000000000..0d0b6fa08 --- /dev/null +++ b/testsuite/gna/bug17127/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze bug2.vhdl +elab_simulate bug2 + +clean + +echo "Test successful" diff --git a/testsuite/gna/sr2655/bug.vhdl b/testsuite/gna/sr2655/bug.vhdl new file mode 100644 index 000000000..682ece509 --- /dev/null +++ b/testsuite/gna/sr2655/bug.vhdl @@ -0,0 +1,29 @@ +library ieee; +use ieee.std_logic_1164.all; + +entity bug is +end; + +architecture this of bug is + function f return integer is + constant v: std_logic_vector := std_logic_vector'("01HLZX-U"); + begin + assert false report "case 2 starts" severity note; + for i in v'range loop + assert false report "case 2: "&integer'image(i) severity note; + end loop; + return 0; + end; +begin + process + constant v: std_logic_vector := std_logic_vector'("01HLZX-U"); + variable a: integer; + begin + assert false report "case 1 starts" severity note; + for i in v'range loop + assert false report "case 1: "&integer'image(i) severity note; + end loop; + a := f; + wait; + end process; +end; diff --git a/testsuite/gna/sr2655/testsuite.sh b/testsuite/gna/sr2655/testsuite.sh new file mode 100755 index 000000000..8fe9a9494 --- /dev/null +++ b/testsuite/gna/sr2655/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze bug.vhdl +elab_simulate bug + +clean + +echo "Test successful" -- cgit v1.2.3