diff --git a/preprocessor/ExprNode.cc b/preprocessor/ExprNode.cc index c4e56ff03572e0912d1de9afae68f0391fe186b7..67a38ebcc1ccb65750949d5b8594120193f26a15 100644 --- a/preprocessor/ExprNode.cc +++ b/preprocessor/ExprNode.cc @@ -2024,10 +2024,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); } } @@ -2052,7 +2054,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);