Revert "Remove nested $fork handling from union detection"

This reverts commit 10a4056e3b.
This commit is contained in:
Akash Levy 2026-05-27 03:55:03 -07:00
parent e421fa8547
commit 7b68f5d532
1 changed files with 20 additions and 0 deletions

View File

@ -175,6 +175,26 @@ void FstData::extractVarNames()
while ((h = fstReaderIterateHier(ctx))) {
switch (h->htyp) {
case FST_HT_SCOPE: {
// Handle tracking for potential union structs with $fork.
if (!detect_union && h->u.scope.typ == FST_ST_VCD_FORK) {
detect_union = true;
fork_parent_scope = fst_scope_name;
fork_name = h->u.scope.name;
fork_vars.clear();
} else if (detect_union && h->u.scope.typ == FST_ST_VCD_STRUCT) {
// Signal that a nested $fork can not be a candidate for union struct detection.
log_warning("Nested $fork '%s' inside $fork '%s'; "
"abandoning union detection for this scope...\n",
h->u.scope.name, fork_name.c_str());
for (auto &v : fork_vars) registerVar(v);
detect_union = false;
fork_vars.clear();
}
// Push the scope onto the stack to 'descend' into the hierarchy.
fst_scope_name = fstReaderPushScope(ctx, h->u.scope.name, NULL);
break;
}
case FST_HT_SCOPE: {
// Handle tracking for potential union structs with $fork.
if (!detect_union && h->u.scope.typ == FST_ST_VCD_FORK) {