diff options
author | Tristan Gingold <tgingold@free.fr> | 2015-05-10 16:03:54 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2015-05-10 16:03:54 +0200 |
commit | 7a998f26f619adec0527ebd7e09b63eb058fdf95 (patch) | |
tree | a11ace111425b58dc04f52c6aff64ed494f82613 /testsuite/gna | |
parent | 7b7f3c1113a767b59e13cc49fe818c9c1efde15e (diff) | |
download | ghdl-7a998f26f619adec0527ebd7e09b63eb058fdf95.tar.gz ghdl-7a998f26f619adec0527ebd7e09b63eb058fdf95.tar.bz2 ghdl-7a998f26f619adec0527ebd7e09b63eb058fdf95.zip |
File reproducer for ticket 43 and 44.
Diffstat (limited to 'testsuite/gna')
-rw-r--r-- | testsuite/gna/ticket43/bug.vhdl | 13 | ||||
-rw-r--r-- | testsuite/gna/ticket43/file1.vhd | 41 | ||||
-rw-r--r-- | testsuite/gna/ticket43/file2.vhd | 13 | ||||
-rwxr-xr-x | testsuite/gna/ticket43/testsuite.sh | 13 | ||||
-rw-r--r-- | testsuite/gna/ticket44/file1.vhd | 23 | ||||
-rw-r--r-- | testsuite/gna/ticket44/file2.vhd | 13 | ||||
-rwxr-xr-x | testsuite/gna/ticket44/testsuite.sh | 10 |
7 files changed, 126 insertions, 0 deletions
diff --git a/testsuite/gna/ticket43/bug.vhdl b/testsuite/gna/ticket43/bug.vhdl new file mode 100644 index 000000000..970835c3e --- /dev/null +++ b/testsuite/gna/ticket43/bug.vhdl @@ -0,0 +1,13 @@ +entity bug is +end; + +use work.pkg.all; + +architecture behav of bug is +begin + p: process + variable rec : rec_t; + begin + wait; + end process; +end behav; diff --git a/testsuite/gna/ticket43/file1.vhd b/testsuite/gna/ticket43/file1.vhd new file mode 100644 index 000000000..7ad0a8987 --- /dev/null +++ b/testsuite/gna/ticket43/file1.vhd @@ -0,0 +1,41 @@ +package pkg is + type rec_t is record + boolean_field : boolean; + integer_field : integer; + end record; + + type other_rec_t is record + integer_field : integer; + end record; + + type protected_t is protected + end protected protected_t; + + procedure proc(variable prot : inout protected_t; variable rec : inout rec_t); + procedure proc(variable prot : inout protected_t; variable rec : inout other_rec_t); +end package; + +package body pkg is + type protected_t is protected body + end protected body protected_t; + + procedure proc (variable prot : inout protected_t; variable rec : inout rec_t) is + begin + end; + + procedure proc(variable prot : inout protected_t; variable rec : inout other_rec_t) is + begin + end; +end package body; + +use work.pkg.all; + +package other_pkg is + shared variable default_prot : protected_t; + + procedure other_proc(variable rec : inout rec_t); + alias other_proc is proc[protected_t, rec_t]; + + procedure other_proc(variable rec : inout other_rec_t); + alias other_proc is proc[protected_t, other_rec_t]; +end package; diff --git a/testsuite/gna/ticket43/file2.vhd b/testsuite/gna/ticket43/file2.vhd new file mode 100644 index 000000000..0265adf8a --- /dev/null +++ b/testsuite/gna/ticket43/file2.vhd @@ -0,0 +1,13 @@ +use work.pkg.all; + +package body other_pkg is + procedure other_proc(variable rec : inout rec_t) is + begin + proc(default_prot, rec); + end; + + procedure other_proc(variable rec : inout other_rec_t) is + begin + proc(default_prot, rec); + end; +end package body; diff --git a/testsuite/gna/ticket43/testsuite.sh b/testsuite/gna/ticket43/testsuite.sh new file mode 100755 index 000000000..8e27e9a99 --- /dev/null +++ b/testsuite/gna/ticket43/testsuite.sh @@ -0,0 +1,13 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze --std=02 file1.vhd +analyze --std=02 file2.vhd +analyze --std=02 bug.vhdl + +elab_simulate --std=02 bug + +clean + +echo "Test successful" diff --git a/testsuite/gna/ticket44/file1.vhd b/testsuite/gna/ticket44/file1.vhd new file mode 100644 index 000000000..06c6ddaf4 --- /dev/null +++ b/testsuite/gna/ticket44/file1.vhd @@ -0,0 +1,23 @@ +package pkg is + type protected_t is protected + end protected protected_t; + + procedure proc(variable prot : inout protected_t; variable result : out boolean); +end package; + +package body pkg is + type protected_t is protected body + end protected body protected_t; + + procedure proc(variable prot : inout protected_t; variable result : out boolean) is + begin + end; +end package body pkg; + +use work.pkg.all; + +package other_pkg is + procedure other_proc(variable result : out boolean); + alias other_proc is proc[protected_t, boolean]; + impure function other_proc return boolean; +end package; diff --git a/testsuite/gna/ticket44/file2.vhd b/testsuite/gna/ticket44/file2.vhd new file mode 100644 index 000000000..a9566d5b0 --- /dev/null +++ b/testsuite/gna/ticket44/file2.vhd @@ -0,0 +1,13 @@ +package body other_pkg is + procedure other_proc ( + variable result : out boolean) is + begin + end; + + impure function other_proc + return boolean is + variable result : boolean; + begin + return result; + end function other_proc; +end package body other_pkg; diff --git a/testsuite/gna/ticket44/testsuite.sh b/testsuite/gna/ticket44/testsuite.sh new file mode 100755 index 000000000..45495a26b --- /dev/null +++ b/testsuite/gna/ticket44/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze --std=02 file1.vhd +analyze --std=02 file2.vhd + +clean + +echo "Test successful" |