mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
Fixed memory corruption with new SigSpec API in proc_mux
This commit is contained in:
parent
f80da7b41d
commit
65a939cb27
|
@ -68,20 +68,16 @@ static RTLIL::SigSpec gen_cmp(RTLIL::Module *mod, const RTLIL::SigSpec &signal,
|
||||||
for (auto comp : compare)
|
for (auto comp : compare)
|
||||||
{
|
{
|
||||||
RTLIL::SigSpec sig = signal;
|
RTLIL::SigSpec sig = signal;
|
||||||
sig.expand();
|
|
||||||
comp.expand();
|
|
||||||
|
|
||||||
// get rid of don't-care bits
|
// get rid of don't-care bits
|
||||||
assert(sig.size() == comp.size());
|
assert(sig.size() == comp.size());
|
||||||
for (int i = 0; i < comp.size(); i++)
|
for (int i = 0; i < comp.size(); i++)
|
||||||
if (comp.chunks()[i].wire == NULL && comp.chunks()[i].data.bits[0] == RTLIL::State::Sa) {
|
if (comp[i] == RTLIL::State::Sa) {
|
||||||
sig.remove(i, 1);
|
sig.remove(i);
|
||||||
comp.remove(i--, 1);
|
comp.remove(i--);
|
||||||
}
|
}
|
||||||
if (comp.size() == 0)
|
if (comp.size() == 0)
|
||||||
return RTLIL::SigSpec();
|
return RTLIL::SigSpec();
|
||||||
sig.optimize();
|
|
||||||
comp.optimize();
|
|
||||||
|
|
||||||
if (sig.size() == 1 && comp == RTLIL::SigSpec(1,1))
|
if (sig.size() == 1 && comp == RTLIL::SigSpec(1,1))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue