From 40c3c1b332aefc465959ab7f413583ec5ddbdaa1 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 Jun 2006 08:34:39 +0000 Subject: [PATCH] 2006-06-16 Michael Matz Richard Guenther * fold-const.c (fold_truthop): Only return new tree node if we canonicalized something. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114713 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/fold-const.c | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e600a4e..96ca893 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-06-16 Michael Matz + Richard Guenther + + * fold-const.c (fold_truthop): Only return new tree node if + we canonicalized something. + 2006-06-16 Richard Guenther * function.h (enum function_frequency): Move declaration diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 6522afd..4b49fa9 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -4862,6 +4862,8 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs) tree lntype, rntype, result; int first_bit, end_bit; int volatilep; + tree orig_lhs = lhs, orig_rhs = rhs; + enum tree_code orig_code = code; /* Start by getting the comparison codes. Fail if anything is volatile. If one operand is a BIT_AND_EXPR with the constant one, treat it as if @@ -4955,7 +4957,11 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs) build_int_cst (TREE_TYPE (ll_arg), 0)); if (LOGICAL_OP_NON_SHORT_CIRCUIT) - return build2 (code, truth_type, lhs, rhs); + { + if (code != orig_code || lhs != orig_lhs || rhs != orig_rhs) + return build2 (code, truth_type, lhs, rhs); + return NULL_TREE; + } } /* See if the comparisons can be merged. Then get all the parameters for -- 2.7.4