summaryrefslogtreecommitdiff
path: root/gcc/graphite-isl-ast-to-gimple.c
diff options
context:
space:
mode:
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2015-12-02 23:06:29 +0000
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2015-12-02 23:06:29 +0000
commit94f74a2b4eb851f0f0d46a7faf570e48ee19cd5a (patch)
tree6e6a78614a540561d39e5f15e7197c1ce68eb102 /gcc/graphite-isl-ast-to-gimple.c
parente75b0ae0fd8e6b241d82cb4aedf575f1af8a72fa (diff)
downloadgcc-94f74a2b4eb851f0f0d46a7faf570e48ee19cd5a.tar.gz
handle missing isl_ast_expr
From ISL's documentation, isl_ast_op_zdiv_r is equal to zero iff the remainder on integer division is zero. Code generate a modulo operation for that. * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle isl_ast_op_zdiv_r. (gcc_expression_from_isl_expr_op): Same. * gcc.dg/graphite/id-28.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231212 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-isl-ast-to-gimple.c')
-rw-r--r--gcc/graphite-isl-ast-to-gimple.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index 497b200f55a..06a206209d9 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -588,6 +588,7 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
}
return fold_build2 (TRUNC_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr);
+ case isl_ast_op_zdiv_r:
case isl_ast_op_pdiv_r:
/* As ISL operates on arbitrary precision numbers, we may end up with
division by 2^64 that is folded to 0. */
@@ -758,6 +759,7 @@ gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr,
case isl_ast_op_pdiv_q:
case isl_ast_op_pdiv_r:
case isl_ast_op_fdiv_q:
+ case isl_ast_op_zdiv_r:
case isl_ast_op_and:
case isl_ast_op_or:
case isl_ast_op_eq: