summaryrefslogtreecommitdiff
path: root/testsuite/gna/ticket43
diff options
context:
space:
mode:
authorTristan Gingold2015-05-10 16:03:54 +0200
committerTristan Gingold2015-05-10 16:03:54 +0200
commit7a998f26f619adec0527ebd7e09b63eb058fdf95 (patch)
treea11ace111425b58dc04f52c6aff64ed494f82613 /testsuite/gna/ticket43
parent7b7f3c1113a767b59e13cc49fe818c9c1efde15e (diff)
downloadghdl-7a998f26f619adec0527ebd7e09b63eb058fdf95.tar.gz
ghdl-7a998f26f619adec0527ebd7e09b63eb058fdf95.tar.bz2
ghdl-7a998f26f619adec0527ebd7e09b63eb058fdf95.zip
File reproducer for ticket 43 and 44.
Diffstat (limited to 'testsuite/gna/ticket43')
-rw-r--r--testsuite/gna/ticket43/bug.vhdl13
-rw-r--r--testsuite/gna/ticket43/file1.vhd41
-rw-r--r--testsuite/gna/ticket43/file2.vhd13
-rwxr-xr-xtestsuite/gna/ticket43/testsuite.sh13
4 files changed, 80 insertions, 0 deletions
diff --git a/testsuite/gna/ticket43/bug.vhdl b/testsuite/gna/ticket43/bug.vhdl
new file mode 100644
index 0000000..970835c
--- /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 0000000..7ad0a89
--- /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 0000000..0265adf
--- /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 0000000..8e27e9a
--- /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"