PR 63427: Missing wrapping operation in wi::from_mpz
Jeff Law
law@redhat.com
Mon Feb 23 23:03:00 GMT 2015
On 02/23/15 15:00, Richard Sandiford wrote:
> The comment for wi::from_mpz says:
>
> /* Returns X converted to TYPE. If WRAP is true, then out-of-range
> values of VAL will be wrapped; otherwise, they will be set to the
> appropriate minimum or maximum TYPE bound. */
>
> The problem in PR 63427 was that we didn't actually implement the WRAP
> case; we just read the whole thing into a wide_int and hoped that it
> was already in range of the target precision. In the testcase this
> resulted in the "len" field being too big for the precision, which
> "only" showed up as a failure when ubsan was enabled. But in more
> extreme cases we could walk well beyond the end up of the buffer,
> as shown by a segfault in the attached testcase.
>
> Tested on x86_64-linux-gnu. OK to install?
>
> Thanks,
> Richard
>
>
> gcc/
> PR fortran/63427
> * wide-int.cc (wi::from_mpz): Cope with unwrapped values that are
> too big for a wide_int. Implement missing wrapping operation.
>
> gcc/testsuite/
> PR fortran/63427
> * gfortran.dg/integer_exponentiation_6.F90: New test.
OK.
jeff
More information about the Gcc-patches
mailing list