From 3c9b009121d8d034401ad260359a8d1f80ef7a95 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 20 Apr 1997 21:27:07 -0400 Subject: [PATCH] (operand_equal_p): Constants are not equal if there has been an overflow. From-SVN: r13949 --- gcc/fold-const.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/fold-const.c b/gcc/fold-const.c index f75d479637e..84e098a6c15 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -1759,11 +1759,16 @@ operand_equal_p (arg0, arg1, only_const) switch (TREE_CODE (arg0)) { case INTEGER_CST: - return (TREE_INT_CST_LOW (arg0) == TREE_INT_CST_LOW (arg1) + return (! TREE_CONSTANT_OVERFLOW (arg0) + && ! TREE_CONSTANT_OVERFLOW (arg1) + && TREE_INT_CST_LOW (arg0) == TREE_INT_CST_LOW (arg1) && TREE_INT_CST_HIGH (arg0) == TREE_INT_CST_HIGH (arg1)); case REAL_CST: - return REAL_VALUES_EQUAL (TREE_REAL_CST (arg0), TREE_REAL_CST (arg1)); + return (! TREE_CONSTANT_OVERFLOW (arg0) + && ! TREE_CONSTANT_OVERFLOW (arg1) + && REAL_VALUES_EQUAL (TREE_REAL_CST (arg0), + TREE_REAL_CST (arg1))); case COMPLEX_CST: return (operand_equal_p (TREE_REALPART (arg0), TREE_REALPART (arg1), -- 2.30.2