--- gcc-4_1-branch/gcc/tree-ssa-loop-niter.c (wersja 113819) +++ gcc-4_1-branch/gcc/tree-ssa-loop-niter.c (wersja 113820) @@ -1562,15 +1562,20 @@ utype = unsigned_type_for (type); if (tree_int_cst_lt (step, integer_zero_node)) - diff = fold_build2 (MINUS_EXPR, utype, init, + diff = fold_build2 (MINUS_EXPR, type, init, TYPE_MIN_VALUE (type)); else - diff = fold_build2 (MINUS_EXPR, utype, + diff = fold_build2 (MINUS_EXPR, type, TYPE_MAX_VALUE (type), init); - estimation = fold_build2 (CEIL_DIV_EXPR, utype, diff, - step); - record_estimate (loop, estimation, boolean_true_node, stmt); + if (integer_nonzerop (step)) + { + estimation = fold_build2 (CEIL_DIV_EXPR, type, diff, + step); + record_estimate (loop, + fold_convert (utype, estimation), + boolean_true_node, stmt); + } } break;