mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
Merge pull request #2498 from StefanBruens/Fix_opt_lut
Fix use-after-free in LUT opt pass
This commit is contained in:
commit
2b62b5ef34
|
@ -277,12 +277,13 @@ struct OptLutWorker
|
||||||
module->connect(lut_output, value);
|
module->connect(lut_output, value);
|
||||||
sigmap.add(lut_output, value);
|
sigmap.add(lut_output, value);
|
||||||
|
|
||||||
module->remove(lut);
|
|
||||||
luts.erase(lut);
|
luts.erase(lut);
|
||||||
luts_arity.erase(lut);
|
luts_arity.erase(lut);
|
||||||
luts_dlogics.erase(lut);
|
luts_dlogics.erase(lut);
|
||||||
luts_dlogic_inputs.erase(lut);
|
luts_dlogic_inputs.erase(lut);
|
||||||
|
|
||||||
|
module->remove(lut);
|
||||||
|
|
||||||
eliminated_count++;
|
eliminated_count++;
|
||||||
if (limit > 0)
|
if (limit > 0)
|
||||||
limit--;
|
limit--;
|
||||||
|
@ -493,11 +494,12 @@ struct OptLutWorker
|
||||||
luts_arity[lutM] = lutM_arity;
|
luts_arity[lutM] = lutM_arity;
|
||||||
luts.erase(lutR);
|
luts.erase(lutR);
|
||||||
luts_arity.erase(lutR);
|
luts_arity.erase(lutR);
|
||||||
lutR->module->remove(lutR);
|
|
||||||
|
|
||||||
worklist.insert(lutM);
|
worklist.insert(lutM);
|
||||||
worklist.erase(lutR);
|
worklist.erase(lutR);
|
||||||
|
|
||||||
|
lutR->module->remove(lutR);
|
||||||
|
|
||||||
combined_count++;
|
combined_count++;
|
||||||
if (limit > 0)
|
if (limit > 0)
|
||||||
limit--;
|
limit--;
|
||||||
|
|
Loading…
Reference in a new issue