From e7ac0b990b5d4fbc77acdc1604a5612a43fc920b Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Thu, 25 Apr 2024 21:42:07 +0100 Subject: [PATCH] Improve duplicate check when generating sensitivity list --- src/simp.c | 15 ++++++--------- test/simp/allsens.vhd | 6 ++++++ test/test_simp.c | 9 +++++++++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/simp.c b/src/simp.c index a657dcfb..cb15607f 100644 --- a/src/simp.c +++ b/src/simp.c @@ -621,15 +621,12 @@ static void simp_build_wait_cb(tree_t expr, void *ctx) { tree_t wait = ctx; - if (tree_kind(expr) == T_REF) { - // Check for duplicates - tree_t decl = tree_ref(expr); - const int ntriggers = tree_triggers(wait); - for (int i = 0; i < ntriggers; i++) { - tree_t t = tree_trigger(wait, i); - if (tree_kind(t) == T_REF && tree_ref(t) == decl) - return; - } + // Check for duplicates + const int ntriggers = tree_triggers(wait); + for (int i = 0; i < ntriggers; i++) { + tree_t t = tree_trigger(wait, i); + if (same_tree(t, expr)) + return; } tree_add_trigger(wait, expr); diff --git a/test/simp/allsens.vhd b/test/simp/allsens.vhd index bb4aa58e..04ca2e4e 100644 --- a/test/simp/allsens.vhd +++ b/test/simp/allsens.vhd @@ -76,4 +76,10 @@ begin p15: x <= c(n); -- n + p16: process (all) is -- v(1) + begin + v(2) <= v(1); + v(3) <= v(1); + end process; + end architecture; diff --git a/test/test_simp.c b/test/test_simp.c index 5e15cb99..fff41919 100644 --- a/test/test_simp.c +++ b/test/test_simp.c @@ -862,6 +862,15 @@ START_TEST(test_allsens) e = tree_trigger(w, 0); fail_unless(tree_kind(e) == T_REF); fail_unless(tree_ident(e) == ident_new("N")); + + // P16: v(1) + w = tree_stmt(tree_stmt(a, 16), 2); + fail_unless(tree_kind(w) == T_WAIT); + fail_unless(tree_triggers(w) == 1); + e = tree_trigger(w, 0); + fail_unless(tree_kind(e) == T_ARRAY_REF); + fail_unless(tree_kind(tree_value(tree_param(e, 0))) == T_LITERAL); + fail_unless(tree_ident(tree_value(e)) == ident_new("V")); } END_TEST -- 2.39.2