https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107394

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Aldy Hernandez <al...@gcc.gnu.org>:

https://gcc.gnu.org/g:2b1fb720818a85d5c893ce65d140add40debf2ff

commit r13-3525-g2b1fb720818a85d5c893ce65d140add40debf2ff
Author: Aldy Hernandez <al...@redhat.com>
Date:   Tue Oct 25 22:44:51 2022 +0200

    [PR tree-optimization/107394] Canonicalize global franges as they are read
back.

    The problem here is that we're inlining a global range with NANs into
    a function that has been tagged with __attribute__((optimize
    ("-ffinite-math-only"))).  As the global range is copied from
    SSA_NAME_RANGE_INFO, its NAN bits are copied, which then cause
    frange::verify_range() to fail a sanity check making sure no NANs
    creep in when !HONOR_NANS.

    I think what we should do is nuke the NAN bits as we're restoring the
    global range.  For that matter, if we use the frange constructor,
    everything except that NAN sign will be done automatically, including
    dropping INFs to the min/max representable range when appropriate.

            PR tree-optimization/107394

    gcc/ChangeLog:

            * value-range-storage.cc (frange_storage_slot::get_frange): Use
            frange constructor.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/pr107394.c: New test.

Reply via email to