diff options
author | Roman Gareev <gareevroman@gmail.com> | 2014-07-24 13:35:27 +0000 |
---|---|---|
committer | Roman Gareev <romangareev@gcc.gnu.org> | 2014-07-24 13:35:27 +0000 |
commit | c4bc3399f7605a632da40532e19d5fd3c33cc09d (patch) | |
tree | b96485ce9e2ff13f63b6643aae6ce0e8d2c3115b /gcc | |
parent | 25be91ac7e13ce5c2de638b8a5a0c4190e5cb0bf (diff) | |
download | gcc-c4bc3399f7605a632da40532e19d5fd3c33cc09d.zip gcc-c4bc3399f7605a632da40532e19d5fd3c33cc09d.tar.gz gcc-c4bc3399f7605a632da40532e19d5fd3c33cc09d.tar.bz2 |
[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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/graphite-isl-ast-to-gimple.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-3.c | 27 |
3 files changed, 44 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96a8161..9ba6bfb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-07-24 Roman Gareev <gareevroman@gmail.com> + + * 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 <kyrylo.tkachov@arm.com> PR middle-end/61876 diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index 6f58c7c..b42d331 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 0000000..d4a902d --- /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; +} |