aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoman Gareev <gareevroman@gmail.com>2014-07-24 13:35:27 +0000
committerRoman Gareev <romangareev@gcc.gnu.org>2014-07-24 13:35:27 +0000
commitc4bc3399f7605a632da40532e19d5fd3c33cc09d (patch)
treeb96485ce9e2ff13f63b6643aae6ce0e8d2c3115b /gcc
parent25be91ac7e13ce5c2de638b8a5a0c4190e5cb0bf (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/graphite-isl-ast-to-gimple.c10
-rw-r--r--gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-3.c27
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;
+}