mirror of https://github.com/YosysHQ/yosys.git
genrtlil: avoid converting SigSpec to set<SigBit> when going through removeSignalFromCaseTree()
This commit is contained in:
parent
cd3e1095b0
commit
34969d4140
|
@ -379,7 +379,7 @@ struct AST_INTERNAL::ProcessGenerator
|
||||||
// e.g. when the last statement in the code "a = 23; if (b) a = 42; a = 0;" is processed this
|
// e.g. when the last statement in the code "a = 23; if (b) a = 42; a = 0;" is processed this
|
||||||
// function is called to clean up the first two assignments as they are overwritten by
|
// function is called to clean up the first two assignments as they are overwritten by
|
||||||
// the third assignment.
|
// the third assignment.
|
||||||
void removeSignalFromCaseTree(const std::set<RTLIL::SigBit> &pattern, RTLIL::CaseRule *cs)
|
void removeSignalFromCaseTree(const RTLIL::SigSpec &pattern, RTLIL::CaseRule *cs)
|
||||||
{
|
{
|
||||||
for (auto it = cs->actions.begin(); it != cs->actions.end(); it++)
|
for (auto it = cs->actions.begin(); it != cs->actions.end(); it++)
|
||||||
it->first.remove2(pattern, &it->second);
|
it->first.remove2(pattern, &it->second);
|
||||||
|
@ -434,7 +434,7 @@ struct AST_INTERNAL::ProcessGenerator
|
||||||
subst_rvalue_map.set(unmapped_lvalue[i], rvalue[i]);
|
subst_rvalue_map.set(unmapped_lvalue[i], rvalue[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeSignalFromCaseTree(lvalue.to_sigbit_set(), current_case);
|
removeSignalFromCaseTree(lvalue, current_case);
|
||||||
remove_unwanted_lvalue_bits(lvalue, rvalue);
|
remove_unwanted_lvalue_bits(lvalue, rvalue);
|
||||||
current_case->actions.push_back(RTLIL::SigSig(lvalue, rvalue));
|
current_case->actions.push_back(RTLIL::SigSig(lvalue, rvalue));
|
||||||
}
|
}
|
||||||
|
@ -511,7 +511,7 @@ struct AST_INTERNAL::ProcessGenerator
|
||||||
subst_rvalue_map.set(this_case_eq_lvalue[i], this_case_eq_ltemp[i]);
|
subst_rvalue_map.set(this_case_eq_lvalue[i], this_case_eq_ltemp[i]);
|
||||||
|
|
||||||
this_case_eq_lvalue.replace(subst_lvalue_map.stdmap());
|
this_case_eq_lvalue.replace(subst_lvalue_map.stdmap());
|
||||||
removeSignalFromCaseTree(this_case_eq_lvalue.to_sigbit_set(), current_case);
|
removeSignalFromCaseTree(this_case_eq_lvalue, current_case);
|
||||||
addChunkActions(current_case->actions, this_case_eq_lvalue, this_case_eq_ltemp);
|
addChunkActions(current_case->actions, this_case_eq_lvalue, this_case_eq_ltemp);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue