aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-11-12 09:21:40 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-11-12 09:21:40 +0100
commite4722b81a45e797565b700d1a5af9b66ae56adf0 (patch)
treeafca8a60120ba3f8af9af6fe3a43ac4edf18c4f5 /gcc/tree-vrp.c
parentf03099371687f3f087e4949a68daccf76c8d18bc (diff)
downloadgcc-e4722b81a45e797565b700d1a5af9b66ae56adf0.zip
gcc-e4722b81a45e797565b700d1a5af9b66ae56adf0.tar.gz
gcc-e4722b81a45e797565b700d1a5af9b66ae56adf0.tar.bz2
re PR tree-optimization/92452 (ICE in vrp_prop::check_array_ref at tree-vrp.c:4153)
PR tree-optimization/92452 * tree-vrp.c (vrp_prop::check_array_ref): If TRUNC_DIV_EXPR folds into NULL_TREE, set up_bound to NULL_TREE instead of computing MINUS_EXPR on it. * c-c++-common/pr92452.c: New test. From-SVN: r278080
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index b8b6967..da11dfb 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -4150,8 +4150,11 @@ vrp_prop::check_array_ref (location_t location, tree ref,
up_bound_p1 = int_const_binop (TRUNC_DIV_EXPR, maxbound, eltsize);
- up_bound = int_const_binop (MINUS_EXPR, up_bound_p1,
- build_int_cst (ptrdiff_type_node, 1));
+ if (up_bound_p1 != NULL_TREE)
+ up_bound = int_const_binop (MINUS_EXPR, up_bound_p1,
+ build_int_cst (ptrdiff_type_node, 1));
+ else
+ up_bound = NULL_TREE;
}
}
else