From 588be5904c58fa82724c8f6432cd87accf77dd7f Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 6 May 2014 12:01:21 +0000 Subject: [PATCH] 2014-05-06 Richard Biener Backport from mainline 2014-04-14 Richard Biener PR middle-end/55022 * fold-const.c (negate_expr_p): Don't negate directional rounding division. (fold_negate_expr): Likewise. * gcc.dg/graphite/pr55022.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch@210104 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/fold-const.c | 4 ---- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/graphite/pr55022.c | 27 +++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr55022.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b70d476113b..e9c0b4f57d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,16 @@ 2014-05-06 Richard Biener Backport from mainline + 2014-04-14 Richard Biener + + PR middle-end/55022 + * fold-const.c (negate_expr_p): Don't negate directional rounding + division. + (fold_negate_expr): Likewise. + +2014-05-06 Richard Biener + + Backport from mainline 2014-04-17 Richard Biener PR middle-end/60849 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index b4ff75e5d98..3a60201e224 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -461,8 +461,6 @@ negate_expr_p (tree t) case TRUNC_DIV_EXPR: case ROUND_DIV_EXPR: - case FLOOR_DIV_EXPR: - case CEIL_DIV_EXPR: case EXACT_DIV_EXPR: /* In general we can't negate A / B, because if A is INT_MIN and B is 1, we may turn this into INT_MIN / -1 which is undefined @@ -644,8 +642,6 @@ fold_negate_expr (location_t loc, tree t) case TRUNC_DIV_EXPR: case ROUND_DIV_EXPR: - case FLOOR_DIV_EXPR: - case CEIL_DIV_EXPR: case EXACT_DIV_EXPR: /* In general we can't negate A / B, because if A is INT_MIN and B is 1, we may turn this into INT_MIN / -1 which is undefined diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a81e46eee89..a74b5e5e09d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,14 @@ 2014-05-06 Richard Biener Backport from mainline + 2014-04-14 Richard Biener + + PR middle-end/55022 + * gcc.dg/graphite/pr55022.c: New testcase. + +2014-05-06 Richard Biener + + Backport from mainline 2014-04-17 Richard Biener PR middle-end/60849 diff --git a/gcc/testsuite/gcc.dg/graphite/pr55022.c b/gcc/testsuite/gcc.dg/graphite/pr55022.c new file mode 100644 index 00000000000..c631c0e23e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr55022.c @@ -0,0 +1,27 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fgraphite-identity" } */ + +extern void abort (void); + +void __attribute__((noinline,noclone)) +f(int *limit, int minLen, int maxLen) +{ + int i; + + for (i = minLen; i <= maxLen; i++) { + limit[i] = i; + } +} + +int main() +{ + int limit[256], i; + f (limit, 0, 255); + for (i = 0; i < 256; ++i) + { + if (limit[i] != i) + abort (); + __asm__ volatile ("" : : : "memory"); + } + return 0; +} -- 2.11.4.GIT