From 0d58d552bc3ec40f0dec6ab68fddbc619c7395b0 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 23 Nov 2016 20:35:25 +0100 Subject: File testcase for #207 --- testsuite/gna/issue207/pack.vhd | 91 +++++++++++++++++++++++++ testsuite/gna/issue207/pack1.vhd | 128 ++++++++++++++++++++++++++++++++++++ testsuite/gna/issue207/testsuite.sh | 10 +++ 3 files changed, 229 insertions(+) create mode 100644 testsuite/gna/issue207/pack.vhd create mode 100644 testsuite/gna/issue207/pack1.vhd create mode 100755 testsuite/gna/issue207/testsuite.sh (limited to 'testsuite') diff --git a/testsuite/gna/issue207/pack.vhd b/testsuite/gna/issue207/pack.vhd new file mode 100644 index 000000000..124eb9efc --- /dev/null +++ b/testsuite/gna/issue207/pack.vhd @@ -0,0 +1,91 @@ +-------------------------------------------------------------------------------- +-- +-- Package demo with two simple overloaded procedures +-- +-------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package pack is + + procedure inc(signal val:inout std_logic_vector); + procedure inc(signal val:inout unsigned); + procedure inc(signal val:inout signed); + procedure inc(signal val:inout integer); + procedure inc(variable val:inout unsigned); + procedure inc(variable val:inout integer); + procedure dec(signal val:inout std_logic_vector); + procedure dec(signal val:inout unsigned); + procedure dec(signal val:inout signed); + procedure dec(signal val:inout integer); + procedure dec(variable val:inout unsigned); + procedure dec(variable val:inout integer); + +end pack; + +package body pack is + + procedure inc(signal val:inout std_logic_vector) is + begin + val<= std_logic_vector(unsigned(val) + 1); + end; + + procedure inc(signal val:inout signed) is + begin + val<= val + 1; + end; + + procedure inc(signal val:inout unsigned) is + begin + val<= val + 1; + end; + + procedure inc(signal val:inout integer) is + begin + val<= val + 1; + end; + + procedure inc(variable val:inout unsigned) is + begin + val := val + 1; + end; + + procedure inc(variable val:inout integer) is + begin + val := val + 1; + end; + + procedure dec(signal val:inout std_logic_vector) is + begin + val<= std_logic_vector(unsigned(val) - 1); + end; + + procedure dec(signal val:inout unsigned) is + begin + val<= val - 1; + end; + + procedure dec(signal val:inout signed) is + begin + val<= val - 1; + end; + + procedure dec(signal val:inout integer) is + begin + val<= val - 1; + end; + + procedure dec(variable val:inout unsigned) is + begin + val := val - 1; + end; + + procedure dec(variable val:inout integer) is + begin + val := val - 1; + end; + +end; + diff --git a/testsuite/gna/issue207/pack1.vhd b/testsuite/gna/issue207/pack1.vhd new file mode 100644 index 000000000..0951b5a80 --- /dev/null +++ b/testsuite/gna/issue207/pack1.vhd @@ -0,0 +1,128 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package pack0 is + + procedure inc(signal val:inout std_logic_vector); + procedure inc(signal val:inout unsigned); + procedure inc(signal val:inout signed); + procedure inc(signal val:inout integer); + procedure dec(signal val:inout std_logic_vector); + procedure dec(signal val:inout unsigned); + procedure dec(signal val:inout signed); + procedure dec(signal val:inout integer); + +end pack0; + +package body pack0 is + + procedure inc(signal val:inout std_logic_vector) is + begin + val<= std_logic_vector(unsigned(val) + 1); + end; + + procedure inc(signal val:inout signed) is + begin + val<= val + 1; + end; + + procedure inc(signal val:inout unsigned) is + begin + val<= val + 1; + end; + + procedure inc(signal val:inout integer) is + begin + val<= val + 1; + end; + + procedure dec(signal val:inout std_logic_vector) is + begin + val<= std_logic_vector(unsigned(val) - 1); + end; + + procedure dec(signal val:inout unsigned) is + begin + val<= val - 1; + end; + + procedure dec(signal val:inout signed) is + begin + val<= val - 1; + end; + + procedure dec(signal val:inout integer) is + begin + val<= val - 1; + end; + +end; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package pack1 is + + procedure inc(variable val:inout unsigned); + procedure inc(variable val:inout integer); + procedure dec(variable val:inout unsigned); + procedure dec(variable val:inout integer); + +end pack1; + +package body pack1 is + + procedure inc(variable val:inout unsigned) is + begin + val := val + 1; + end; + + procedure inc(variable val:inout integer) is + begin + val := val + 1; + end; + + procedure dec(variable val:inout unsigned) is + begin + val := val - 1; + end; + + procedure dec(variable val:inout integer) is + begin + val := val - 1; + end; + +end; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.pack0.all; +use work.pack1.all; + +entity overload is +end entity; + +architecture foo of overload is + signal sig: unsigned ( 7 downto 0) := (others => '0'); + signal int: integer range 0 to 255; -- 'LEFT = 0 initial value +begin + process + variable isig: unsigned ( 7 downto 0) := (others => '0'); + variable iint: integer range 0 to 255; + begin + inc(sig); + inc(isig); + inc(int); + inc(iint); + wait for 0 ns; + dec(sig); + dec(isig); + dec(int); + dec(iint); + wait; + end process; + +end architecture; diff --git a/testsuite/gna/issue207/testsuite.sh b/testsuite/gna/issue207/testsuite.sh new file mode 100755 index 000000000..3bd9f00f1 --- /dev/null +++ b/testsuite/gna/issue207/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze_failure pack.vhd +analyze_failure pack1.vhd + +clean + +echo "Test successful" -- cgit v1.2.3