aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-02-01 11:08:26 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-02-01 11:08:26 +0100
commit31b6733b1628a861de4c545bff40acc97850dbbf (patch)
treef42a2adeb53b018ecc56134e5735e062d67b17fa /gcc/tree-vect-loop.c
parenteae4d8fbb529d67428a2b0eba407b975ee13e7d1 (diff)
downloadgcc-31b6733b1628a861de4c545bff40acc97850dbbf.zip
gcc-31b6733b1628a861de4c545bff40acc97850dbbf.tar.gz
gcc-31b6733b1628a861de4c545bff40acc97850dbbf.tar.bz2
re PR tree-optimization/81661 (ICE in gimplify_modify_expr, at gimplify.c:5638)
PR tree-optimization/81661 PR tree-optimization/84117 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare. * tree-eh.c: Include gimplify.h. (find_trapping_overflow, replace_trapping_overflow, rewrite_to_non_trapping_overflow): New functions. * tree-vect-loop.c: Include tree-eh.h. (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow. * tree-data-ref.c: Include tree-eh.h. (get_segment_min_max): Use rewrite_to_non_trapping_overflow. * gcc.dg/pr81661.c: New test. * gfortran.dg/pr84117.f90: New test. From-SVN: r257284
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index f75a483..c530168 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -53,6 +53,7 @@ along with GCC; see the file COPYING3. If not see
#include "internal-fn.h"
#include "tree-vector-builder.h"
#include "vec-perm-indices.h"
+#include "tree-eh.h"
/* Loop Vectorization Pass.
@@ -1063,7 +1064,8 @@ vect_get_loop_niters (struct loop *loop, tree *assumptions,
may_be_zero));
else
niter = fold_build3 (COND_EXPR, TREE_TYPE (niter), may_be_zero,
- build_int_cst (TREE_TYPE (niter), 0), niter);
+ build_int_cst (TREE_TYPE (niter), 0),
+ rewrite_to_non_trapping_overflow (niter));
may_be_zero = NULL_TREE;
}