ExpandedExceptionVisitor memory error

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-09-06 16:18:21 -07:00
parent 2163a5c6b9
commit 26be60906c
1 changed files with 31 additions and 29 deletions

View File

@ -2159,37 +2159,39 @@ ExpandedExceptionVisitor::expandThru(ExceptionFrom *expanded_from,
ExceptionThruSeq::Iterator &thru_iter, ExceptionThruSeq::Iterator &thru_iter,
ExceptionThruSeq *expanded_thrus) ExceptionThruSeq *expanded_thrus)
{ {
if (thru_iter.hasNext()) { if (exception_->thrus()) {
ExceptionThru *thru = thru_iter.next(); if (thru_iter.hasNext()) {
const RiseFallBoth *rf = thru->transition(); ExceptionThru *thru = thru_iter.next();
if (thru->pins()) { const RiseFallBoth *rf = thru->transition();
for (const Pin *pin : *thru->pins()) { if (thru->pins()) {
PinSet pins(network_); for (const Pin *pin : *thru->pins()) {
pins.insert(pin); PinSet pins(network_);
ExceptionThru expanded_thru(&pins, nullptr, nullptr, rf, false, network_); pins.insert(pin);
expanded_thrus->push_back(&expanded_thru); ExceptionThru expanded_thru(&pins, nullptr, nullptr, rf, false, network_);
expandThru(expanded_from, thru_iter, expanded_thrus); expanded_thrus->push_back(&expanded_thru);
expanded_thrus->pop_back(); expandThru(expanded_from, thru_iter, expanded_thrus);
expanded_thrus->pop_back();
}
} }
} if (thru->nets()) {
if (thru->nets()) { for (const Net *net : *thru->nets()) {
for (const Net *net : *thru->nets()) { NetSet nets(network_);
NetSet nets(network_); nets.insert(net);
nets.insert(net); ExceptionThru expanded_thru(nullptr, &nets, nullptr, rf, false, network_);
ExceptionThru expanded_thru(nullptr, &nets, nullptr, rf, false, network_); expanded_thrus->push_back(&expanded_thru);
expanded_thrus->push_back(&expanded_thru); expandThru(expanded_from, thru_iter, expanded_thrus);
expandThru(expanded_from, thru_iter, expanded_thrus); expanded_thrus->pop_back();
expanded_thrus->pop_back(); }
} }
} if (thru->instances()) {
if (thru->instances()) { for (const Instance *inst : *thru->instances()) {
for (const Instance *inst : *thru->instances()) { InstanceSet insts(network_);
InstanceSet insts(network_); insts.insert(inst);
insts.insert(inst); ExceptionThru expanded_thru(nullptr, nullptr, &insts, rf, false, network_);
ExceptionThru expanded_thru(nullptr, nullptr, &insts, rf, false, network_); expanded_thrus->push_back(&expanded_thru);
expanded_thrus->push_back(&expanded_thru); expandThru(expanded_from, thru_iter, expanded_thrus);
expandThru(expanded_from, thru_iter, expanded_thrus); expanded_thrus->pop_back();
expanded_thrus->pop_back(); }
} }
} }
} }