Preprocessor: never set an equal node as a temporary term

time-shift
Sébastien Villemot 2010-05-05 10:10:01 +02:00
parent 7eff7c40c6
commit 49389592e7
1 changed files with 7 additions and 4 deletions

View File

@ -2120,10 +2120,12 @@ BinaryOpNode::computeTemporaryTerms(map<NodeID, int> &reference_count,
} }
else else
{ {
// If the node has already been encountered, increment its ref count /* If the node has already been encountered, increment its ref count
// and declare it as a temporary term if it is too costly and declare it as a temporary term if it is too costly (except if it is
an equal node: we don't want them as temporary terms) */
reference_count[this2]++; reference_count[this2]++;
if (reference_count[this2] * cost(temporary_terms, is_matlab) > MIN_COST(is_matlab)) if (reference_count[this2] * cost(temporary_terms, is_matlab) > MIN_COST(is_matlab)
&& op_code != oEqual)
temporary_terms.insert(this2); temporary_terms.insert(this2);
} }
} }
@ -2148,7 +2150,8 @@ BinaryOpNode::computeTemporaryTerms(map<NodeID, int> &reference_count,
else else
{ {
reference_count[this2]++; reference_count[this2]++;
if (reference_count[this2] * cost(temporary_terms, false) > MIN_COST_C) if (reference_count[this2] * cost(temporary_terms, false) > MIN_COST_C
&& op_code != oEqual)
{ {
temporary_terms.insert(this2); temporary_terms.insert(this2);
v_temporary_terms[first_occurence[this2].first][first_occurence[this2].second].insert(this2); v_temporary_terms[first_occurence[this2].first][first_occurence[this2].second].insert(this2);