From: Jakub Jelinek Date: Tue, 22 Jan 2019 09:58:23 +0000 (+0100) Subject: re PR tree-optimization/88044 (gfortran.dg/transfer_intrinsic_3.f90 hangs after r266171) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9a6585859fa1c126523b5b02857aaabc8dc43c1e;p=gcc.git re PR tree-optimization/88044 (gfortran.dg/transfer_intrinsic_3.f90 hangs after r266171) PR tree-optimization/88044 * tree-ssa-loop-niter.c (number_of_iterations_cond): If condition is false in the first iteration, but !every_iteration, return false instead of true with niter->niter zero. From-SVN: r268143 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 64f920ece33..feda772ffc6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2019-01-22 Jakub Jelinek + PR tree-optimization/88044 + * tree-ssa-loop-niter.c (number_of_iterations_cond): If condition + is false in the first iteration, but !every_iteration, return false + instead of true with niter->niter zero. + PR rtl-optimization/88904 * cfgcleanup.c (thread_jump): Verify cond2 doesn't mention any nonequal registers before processing BB_END (b). diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 622d18abacb..470b6a295be 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -1824,6 +1824,8 @@ number_of_iterations_cond (struct loop *loop, tree tem = fold_binary (code, boolean_type_node, iv0->base, iv1->base); if (tem && integer_zerop (tem)) { + if (!every_iteration) + return false; niter->niter = build_int_cst (unsigned_type_for (type), 0); niter->max = 0; return true;