https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100201
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Last reconfirmed| |2021-04-22 Ever confirmed|0 |1 Status|UNCONFIRMED |ASSIGNED --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- It's similar, yes. wi::overflow_type ovf = wi::OVF_NONE; off = wi::mul (off, (HOST_WIDE_INT)BITS_PER_UNIT, SIGNED, &ovf); if (ovf == wi::OVF_NONE) doesn't like me though. In file included from /home/rguenther/src/gcc3/gcc/coretypes.h:469:0, from /home/rguenther/src/gcc3/gcc/tree-ssa-sccvn.c:23: /home/rguenther/src/gcc3/gcc/poly-int.h: In instantiation of 'poly_int<N, C>& poly_int<N, T>::operator=(const poly_int_pod<N, Ca>&) [with Ca = generic_wide_int<fixed_wide_int_storage<192> >; unsigned int N = 1; C = long int]': /home/rguenther/src/gcc3/gcc/tree-ssa-sccvn.c:1544:70: required from here /home/rguenther/src/gcc3/gcc/poly-int.h:693:21: error: cannot convert 'const generic_wide_int<fixed_wide_int_storage<192> >' to 'long int' in assignment this->coeffs[i] = a.coeffs[i]; ~~~~~~~~~~~~~~~~^~~~~~~~~~~ neither attempts to go via poly_offset_int and a "fits uhwi" (fold_ctor_referece takes an unsigned offset).