From 737b089116ad5a0dd98a4158e73c55fac8c793a3 Mon Sep 17 00:00:00 2001 From: Diego Novillo Date: Fri, 3 Aug 2007 09:08:29 -0400 Subject: [PATCH] [multiple changes] 2007-08-03 Andrew Pinski Diego Novillo PR 31521 * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify if the range includes 0. 2007-08-03 Diego Novillo PR 31521 * gcc.dg/tree-ssa/pr31521.c: New test. From-SVN: r127180 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/tree-ssa/pr31521.c | 20 ++++++++++++++++++++ gcc/tree-vrp.c | 2 +- 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr31521.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 04ff2e8f50b..01a8d15aefd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-08-03 Andrew Pinski + Diego Novillo + + PR 31521 + * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify + if the range includes 0. + 2007-08-03 Ben Elliston * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac0b329cfb8..0952f03a9e3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-08-03 Diego Novillo + + PR 31521 + * gcc.dg/tree-ssa/pr31521.c: New test. + 2007-08-03 Thomas Koenig PR fortran/32770 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr31521.c b/gcc/testsuite/gcc.dg/tree-ssa/pr31521.c new file mode 100644 index 00000000000..4f54cc07716 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr31521.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-vrp1" } */ + +void fail(void) __attribute__((noreturn)); +int bar(int); + +int foo(int x) { + int i; + int s = 0; + + if (x <= 0) fail(); + for (i = 0; i < x; ++i) { + /* This division by 4 should be replaced with >> 2. */ + s += bar(i/4); + } + return s; +} + +/* { dg-final { scan-tree-dump-times " = i_.* >> 2" 1 "vrp1" } } */ +/* { dg-final { cleanup-tree-dump "vrp1" } } */ diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index fb31b9a2ad2..11e955f8053 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -5541,7 +5541,7 @@ simplify_div_or_mod_using_ranges (tree stmt, tree rhs, enum tree_code rhs_code) { bool sop = false; - val = compare_range_with_value (GT_EXPR, vr, integer_zero_node, &sop); + val = compare_range_with_value (GE_EXPR, vr, integer_zero_node, &sop); if (val && sop -- 2.11.4.GIT