diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-02-01 11:08:26 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-02-01 11:08:26 +0100 |
commit | 31b6733b1628a861de4c545bff40acc97850dbbf (patch) | |
tree | f42a2adeb53b018ecc56134e5735e062d67b17fa /gcc/tree-vect-loop.c | |
parent | eae4d8fbb529d67428a2b0eba407b975ee13e7d1 (diff) | |
download | gcc-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.c | 4 |
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; } |