From 22a8a52d650ef0c4718d04289862f6319f8a8d9d Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Wed, 2 May 2007 21:57:50 +0000 Subject: if-div.c: New file. 2007-05-02 Eric Christopher * gcc.dg/cpp/if-div.c: New file. 2007-05-02 Eric Christopher * expr.c (num_div_op): Don't overflow if the result is zero. From-SVN: r124358 --- libcpp/expr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'libcpp/expr.c') diff --git a/libcpp/expr.c b/libcpp/expr.c index 574b85f..a006140 100644 --- a/libcpp/expr.c +++ b/libcpp/expr.c @@ -91,7 +91,7 @@ interpret_float_suffix (const uchar *s, size_t len) case 'l': case 'L': l++; break; case 'i': case 'I': case 'j': case 'J': i++; break; - case 'd': case 'D': + case 'd': case 'D': /* Disallow fd, ld suffixes. */ if (d && (f || l)) return 0; @@ -441,7 +441,7 @@ append_digit (cpp_num num, int digit, int base, size_t precision) if (add_low + digit < add_low) add_high++; add_low += digit; - + if (result.low + add_low < result.low) add_high++; if (result.high + add_high < result.high) @@ -1527,7 +1527,8 @@ num_div_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op) { if (negate) result = num_negate (result, precision); - result.overflow = num_positive (result, precision) ^ !negate; + result.overflow = (num_positive (result, precision) ^ !negate + && !num_zerop (result)); } return result; -- cgit v1.1