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 <gavin@cygnus.com>
+ * fold-const.c (operand_equal_p): Pay attention to side effects.
+
* reg-stack.c (stack_result): Aggregates are not returned in
stack registers.
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:
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)