https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77436
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
As usual this is sign-extension behavior of wide-ints that does not exactly
match double-ints. tree_fold_binomial likes to do infinite precision math.
The int_fits_type_p check below is not effective as wide_int_to_tree
truncates the value to be in-range.
/* Result = Numerator / Denominator. */
wide_int di_res = wi::udiv_trunc (num, denom);
res = wide_int_to_tree (type, di_res);
return int_fits_type_p (res, type) ? res : NULL_TREE;
I have a patch restoring previous behavior. IMHO the whole chrec_evaluate
should use GMP, there is no need to give up - the final truncation is still
valid.