diff --git a/preprocessor/ExprNode.cc b/preprocessor/ExprNode.cc index 6588557a77da04d447b846c9eb185a584d3f0617..c5f2d009153de1889f70d8f4add8c3579990e41b 100644 --- a/preprocessor/ExprNode.cc +++ b/preprocessor/ExprNode.cc @@ -2120,10 +2120,12 @@ BinaryOpNode::computeTemporaryTerms(map<NodeID, int> &reference_count, } else { - // If the node has already been encountered, increment its ref count - // and declare it as a temporary term if it is too costly + /* If the node has already been encountered, increment its ref count + 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]++; - 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); } } @@ -2148,7 +2150,8 @@ BinaryOpNode::computeTemporaryTerms(map<NodeID, int> &reference_count, else { 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); v_temporary_terms[first_occurence[this2].first][first_occurence[this2].second].insert(this2);