mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-18 11:58:32 +00:00
proc_clean: remove any empty cases at the end of the switch.
Previously, only completely empty switches were removed.
This commit is contained in:
parent
ee8a7589e0
commit
b784440857
1 changed files with 3 additions and 7 deletions
|
@ -77,18 +77,14 @@ void proc_clean_switch(RTLIL::SwitchRule *sw, RTLIL::CaseRule *parent, bool &did
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool all_cases_are_empty = true;
|
|
||||||
for (auto cs : sw->cases) {
|
for (auto cs : sw->cases) {
|
||||||
if (cs->actions.size() != 0 || cs->switches.size() != 0)
|
|
||||||
all_cases_are_empty = false;
|
|
||||||
if (max_depth != 0)
|
if (max_depth != 0)
|
||||||
proc_clean_case(cs, did_something, count, max_depth-1);
|
proc_clean_case(cs, did_something, count, max_depth-1);
|
||||||
}
|
}
|
||||||
if (all_cases_are_empty) {
|
while (!sw->cases.empty() && (sw->cases.back()->actions.empty() && sw->cases.back()->switches.empty())) {
|
||||||
did_something = true;
|
did_something = true;
|
||||||
for (auto cs : sw->cases)
|
delete sw->cases.back();
|
||||||
delete cs;
|
sw->cases.pop_back();
|
||||||
sw->cases.clear();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue