Message ID | 5DDAEC42.6020405@gmx.de |
---|---|
State | New |
Headers | show |
Series | [Fortran] PR92629 - ICE in convert_mpz_to_unsigned, at fortran/simplify.c:173 | expand |
On Sun, Nov 24, 2019 at 10:47 PM Harald Anlauf <anlauf@gmx.de> wrote: > > In convert_mpz_to_unsigned, an assert was triggered when a positive > argument larger than HUGE() of the respective kind was passed while > -fno-range-check was specified. The assert should be consistently > skipped in this case. > > Regtested on x86_64-pc-linux-gnu. > > OK for trunk / 9 / 8? > > Thanks, > Harald > > 2019-11-24 Harald Anlauf <anlauf@gmx.de> > > PR fortran/92629 > * simplify.c (convert_mpz_to_unsigned): Skip assert for argument > range when -fno-range-check is specified. > > > 2019-11-24 Harald Anlauf <anlauf@gmx.de> > > PR fortran/92629 > * gfortran.dg/pr92629.f90: New testcase. Ok, thanks.
Index: gcc/fortran/simplify.c =================================================================== --- gcc/fortran/simplify.c (Revision 278629) +++ gcc/fortran/simplify.c (Arbeitskopie) @@ -169,8 +169,10 @@ convert_mpz_to_unsigned (mpz_t x, int bitsize) } else { - /* Confirm that no bits above the signed range are set. */ - gcc_assert (mpz_scan1 (x, bitsize-1) == ULONG_MAX); + /* Confirm that no bits above the signed range are set if we + are doing range checking. */ + if (flag_range_check != 0) + gcc_assert (mpz_scan1 (x, bitsize-1) == ULONG_MAX); } }