From 233314e2144799bf4172eba93cada379a2cae36c Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Tue, 19 Oct 1999 08:40:05 +0000 Subject: Revert this change. Gavin's patch to operand_equal_p is a better fix. * fold-const.c (fold_range_test): Do not try to fold the range test if the rhs or lhs has side effects. Fri Sep 17 15:05:27 1999 Gavin Romig-Koch * fold-const.c (operand_equal_p): Pay attention to side effects. From-SVN: r30082 --- gcc/ChangeLog | 7 +++++++ gcc/fold-const.c | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59c2ada88ae..587dbbca168 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ Tue Oct 19 02:03:00 1999 Jeffrey A Law (law@cygnus.com) + Revert this change. Gavin's patch to operand_equal_p is a better fix. + * fold-const.c (fold_range_test): Do not try to fold the range + test if the rhs or lhs has side effects. + + Fri Sep 17 15:05:27 1999 Gavin Romig-Koch + * fold-const.c (operand_equal_p): Pay attention to side effects. + * reg-stack.c (stack_result): Aggregates are not returned in stack registers. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index c9778ba351d..55dcf9bf1cf 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2177,6 +2177,12 @@ operand_equal_p (arg0, arg1, only_const) TREE_OPERAND (arg1, 0), 0)); case 'r': + /* If either of the pointer (or reference) expressions we are dereferencing + contain a side effect, these cannot be equal. */ + if (TREE_SIDE_EFFECTS (arg0) + || TREE_SIDE_EFFECTS (arg1)) + return 0; + switch (TREE_CODE (arg0)) { case INDIRECT_REF: @@ -3558,10 +3564,6 @@ fold_range_test (exp) tree rhs = make_range (TREE_OPERAND (exp, 1), &in1_p, &low1, &high1); tree tem; - /* Fail if anything is volatile. */ - if (TREE_SIDE_EFFECTS (lhs) || TREE_SIDE_EFFECTS (rhs)) - return 0; - /* If this is an OR operation, invert both sides; we will invert again at the end. */ if (or_op) -- cgit v1.2.1