From 49389592e7b2ea683b10a67b657639dcbde9425d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 5 May 2010 10:10:01 +0200 Subject: [PATCH] Preprocessor: never set an equal node as a temporary term --- preprocessor/ExprNode.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/preprocessor/ExprNode.cc b/preprocessor/ExprNode.cc index 6588557a7..c5f2d0091 100644 --- a/preprocessor/ExprNode.cc +++ b/preprocessor/ExprNode.cc @@ -2120,10 +2120,12 @@ BinaryOpNode::computeTemporaryTerms(map &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 &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);