From c4bc3399f7605a632da40532e19d5fd3c33cc09d Mon Sep 17 00:00:00 2001 From: Roman Gareev Date: Thu, 24 Jul 2014 13:35:27 +0000 Subject: [PATCH] [gcc/] * graphite-isl-ast-to-gimple.c: (binary_op_to_tree): Add calling of translate_isl_ast_node_block. (gcc_expression_from_isl_expr_op): Move isl_ast_op_pdiv_q, isl_ast_op_pdiv_r to the different case. [gcc/testsuite] * gcc.dg/graphite/isl-ast-gen-blocks-3.c: New testcase. From-SVN: r212990 --- gcc/ChangeLog | 9 +++++++ gcc/graphite-isl-ast-to-gimple.c | 10 +++++-- .../gcc.dg/graphite/isl-ast-gen-blocks-3.c | 27 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-3.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96a8161787d..9ba6bfb8890 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-07-24 Roman Gareev + + * graphite-isl-ast-to-gimple.c: + (binary_op_to_tree): Add calling of translate_isl_ast_node_block. + (gcc_expression_from_isl_expr_op): Move isl_ast_op_pdiv_q, + isl_ast_op_pdiv_r to the different case. + + * gcc.dg/graphite/isl-ast-gen-blocks-3.c: New testcase. + 2014-07-24 Kyrylo Tkachov PR middle-end/61876 diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index 6f58c7c600f..b42d3317a6f 100644 --- a/gcc/graphite-isl-ast-to-gimple.c +++ b/gcc/graphite-isl-ast-to-gimple.c @@ -186,6 +186,12 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip) case isl_ast_op_div: return fold_build2 (EXACT_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr); + case isl_ast_op_pdiv_q: + return fold_build2 (TRUNC_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr); + + case isl_ast_op_pdiv_r: + return fold_build2 (TRUNC_MOD_EXPR, type, tree_lhs_expr, tree_rhs_expr); + case isl_ast_op_fdiv_q: return fold_build2 (FLOOR_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr); @@ -299,8 +305,6 @@ gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr, case isl_ast_op_call: case isl_ast_op_and_then: case isl_ast_op_or_else: - case isl_ast_op_pdiv_q: - case isl_ast_op_pdiv_r: case isl_ast_op_select: gcc_unreachable (); @@ -312,6 +316,8 @@ gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr, case isl_ast_op_sub: case isl_ast_op_mul: case isl_ast_op_div: + case isl_ast_op_pdiv_q: + case isl_ast_op_pdiv_r: case isl_ast_op_fdiv_q: case isl_ast_op_and: case isl_ast_op_or: diff --git a/gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-3.c b/gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-3.c new file mode 100644 index 00000000000..d4a902d9d21 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-3.c @@ -0,0 +1,27 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fgraphite-identity -fgraphite-code-generator=isl" } */ + +/* We use a global variable 'k' to avoid ipa-cp. */ +int k = 50; +static int __attribute__((noinline)) +foo () +{ + int i, res = 0; + for (i = k/2; i < k; i++) + res += i; + + return res; +} + +extern void abort (); + +int +main (void) +{ + int res = foo (); + + if (res != 925) + abort (); + + return 0; +}