From def1e2ccbcfc352e37a4245b21086da5cce0e969 Mon Sep 17 00:00:00 2001 From: Ryszard Rozak Date: Wed, 24 Jun 2026 15:59:32 +0200 Subject: [PATCH] Fix lifetime of expression coverage variable (#7834) Signed-off-by: Ryszard Rozak --- src/V3Coverage.cpp | 1 + test_regress/t/t_cover_expr_fork.v | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/V3Coverage.cpp b/src/V3Coverage.cpp index afd932909..9c19319d8 100644 --- a/src/V3Coverage.cpp +++ b/src/V3Coverage.cpp @@ -824,6 +824,7 @@ class CoverageVisitor final : public VNVisitor { if (pair.second) { varp = new AstVar{fl, VVarType::MODULETEMP, m_exprTempNames.get(frefp), dtypep}; + varp->lifetime(VLifetime::AUTOMATIC_EXPLICIT); pair.first->second = varp; if (m_ftaskp) { varp->funcLocal(true); diff --git a/test_regress/t/t_cover_expr_fork.v b/test_regress/t/t_cover_expr_fork.v index fd2474bad..c111e5947 100644 --- a/test_regress/t/t_cover_expr_fork.v +++ b/test_regress/t/t_cover_expr_fork.v @@ -13,6 +13,9 @@ module t; if (!x) begin cnt++; end + if (!$onehot(x)) begin + cnt++; + end end join_none endtask @@ -20,7 +23,7 @@ module t; initial begin myTask(); #1; - if (cnt != 1) $stop; + if (cnt != 2) $stop; $write("*-* All Finished *-*\n"); $finish;