mirror of
https://github.com/verilator/verilator.git
synced 2026-10-06 01:54:01 +02:00
Optimize more always blocks in Dfg (#7775)
Optimize always blocks that: - drive an unused variable (so logic can be pruned) - write only a single variable (regardless of CFG size)
This commit is contained in:
+7
-1
@@ -78,7 +78,13 @@ void V3DfgPasses::removeUnobservable(DfgGraph& dfg, V3DfgContext& dfgCtx) {
|
||||
&& !vVtxp->hasExtWrRefs() //
|
||||
&& !vVtxp->hasModWrRefs();
|
||||
VL_DO_DANGLING(vVtxp->unlinkDelete(dfg), vVtxp);
|
||||
if (srcp) VL_DO_DANGLING(srcp->unlinkDelete(dfg), srcp);
|
||||
if (srcp) {
|
||||
srcp->foreachSource([&](DfgVertex& src) {
|
||||
src.as<DfgLogic>()->setDrivesUnusedVars();
|
||||
return false;
|
||||
});
|
||||
VL_DO_DANGLING(srcp->unlinkDelete(dfg), srcp);
|
||||
}
|
||||
if (delAst) {
|
||||
VL_DO_DANGLING(vscp->unlinkFrBack()->deleteTree(), vscp);
|
||||
++ctx.m_varsDeleted;
|
||||
|
||||
Reference in New Issue
Block a user