Commit fae111c1 by Roger Sayle Committed by Roger Sayle

* fold-const.c (operand_equal_p): Clarify documentation.

From-SVN: r71214
parent fa531100
2003-09-08 Roger Sayle <roger@eyesopen.com>
* fold-const.c (operand_equal_p): Clarify documentation.
2003-09-08 Richard Henderson <rth@redhat.com>
* c-decl.c (c_expand_body_1): Push and pop function context here.
......
......@@ -1822,13 +1822,27 @@ truth_value_p (enum tree_code code)
|| code == TRUTH_XOR_EXPR || code == TRUTH_NOT_EXPR);
}
/* Return nonzero if two operands are necessarily equal.
/* Return nonzero if two operands (typically of the same tree node)
are necessarily equal. If either argument has side-effects this
function returns zero.
If ONLY_CONST is nonzero, only return nonzero for constants.
This function tests whether the operands are indistinguishable;
it does not test whether they are equal using C's == operation.
The distinction is important for IEEE floating point, because
(1) -0.0 and 0.0 are distinguishable, but -0.0==0.0, and
(2) two NaNs may be indistinguishable, but NaN!=NaN. */
(2) two NaNs may be indistinguishable, but NaN!=NaN.
If ONLY_CONST is zero, a VAR_DECL is considered equal to itself
even though it may hold multiple values during a function.
This is because a GCC tree node guarantees that nothing else is
executed between the evaluation of its "operands" (which may often
be evaluated in arbitrary order). Hence if the operands themselves
don't side-effect, the VAR_DECLs, PARM_DECLs etc... must hold the
same value in each operand/subexpression. Hence a zero value for
ONLY_CONST assumes isochronic (or instantaneous) tree equivalence.
If comparing arbitrary expression trees, such as from different
statements, ONLY_CONST must usually be non-zero. */
int
operand_equal_p (tree arg0, tree arg1, int only_const)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment