aboutsummaryrefslogtreecommitdiffstats
path: root/passes/opt/opt_mem.cc
diff options
context:
space:
mode:
Diffstat (limited to 'passes/opt/opt_mem.cc')
-rw-r--r--passes/opt/opt_mem.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/passes/opt/opt_mem.cc b/passes/opt/opt_mem.cc
index 49a0ac51a..0409fb736 100644
--- a/passes/opt/opt_mem.cc
+++ b/passes/opt/opt_mem.cc
@@ -52,6 +52,18 @@ struct OptMemPass : public Pass {
int total_count = 0;
for (auto module : design->selected_modules()) {
for (auto &mem : Mem::get_selected_memories(module)) {
+ bool changed = false;
+ for (auto &port : mem.wr_ports) {
+ if (port.en.is_fully_zero()) {
+ port.removed = true;
+ changed = true;
+ total_count++;
+ }
+ }
+ if (changed) {
+ mem.emit();
+ }
+
if (mem.wr_ports.empty() && mem.inits.empty()) {
mem.remove();
total_count++;