From c2b63960be7f04f76bbb692993612327c4017730 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 20 May 2000 10:28:17 +0000 Subject: [PATCH] fold-const.c (make_range): Handle degenerated intervals. * fold-const.c (make_range): Handle degenerated intervals. Fixes c-torture/execute/991221-1.c From-SVN: r34045 --- gcc/ChangeLog | 5 +++++ gcc/fold-const.c | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2d140d8713b..72709d2b851 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat May 20 07:27:35 2000 Alexandre Oliva + + * fold-const.c (make_range): Handle degenerated intervals. + Fixes c-torture/execute/991221-1.c + Fri May 19 18:16:31 2000 Richard Kenner * cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 93c5816d9a7..12a8d1a7a40 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -3455,8 +3455,17 @@ make_range (exp, pin_p, plow, phigh) low = range_binop (PLUS_EXPR, type, n_high, 0, integer_one_node, 0); high = range_binop (MINUS_EXPR, type, n_low, 0, - integer_one_node, 0); - in_p = ! in_p; + integer_one_node, 0); + + /* If the range is of the form +/- [ x+1, x ], we won't + be able to normalize it. But then, it represents the + whole range or the empty set, so make it + +/- [ -, - ]. */ + if (tree_int_cst_equal (n_low, low) + && tree_int_cst_equal (n_high, high)) + low = high = 0; + else + in_p = ! in_p; } else low = n_low, high = n_high; -- 2.30.2