https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106785
--- Comment #9 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:bdfe0d1ce0aebdb68b77e2c04a0f45956c56b449

commit r13-2334-gbdfe0d1ce0aebdb68b77e2c04a0f45956c56b449
Author: Aldy Hernandez <al...@redhat.com>
Date:   Wed Aug 31 14:31:12 2022 +0200

    Make frange selftests work on !HONOR_NANS systems.

    I'm just shuffling the FP self tests here, with no change to existing
    functionality.

    If we agree that explicit NANs in the source code with !HONOR_NANS
    should behave any differently, I'm happy to address whatever needs
    fixing, but for now I'd like to unblock the !HONOR_NANS build systems.

    I have added an adaptation of a test Jakub suggested we handle in the PR:

    void funk(int cond)
    {
      float x;

      if (cond)
        x = __builtin_nan ("");
      else
        x = 1.24;

      bar(x);
    }

    For !HONOR_NANS, the range for the PHI of x_1 is the union of 1.24 and
    NAN which is really 1.24 with a maybe NAN.  This reflects the IL-- the
    presence of the actual NAN.  However, VRP will propagate this because
    it sees the 1.24 and ignores the possibility of a NAN, per
    !HONOR_NANS.  IMO, this is correct.  OTOH, for HONOR_NANS the unknown
    NAN property keeps us from propagating the value.

    Is there a reason we don't warn for calls to __builtin_nan when
    !HONOR_NANS?  That makes no sense to me.

            PR tree-optimization/106785

    gcc/ChangeLog:

            * value-range.cc (range_tests_nan): Adjust tests for !HONOR_NANS.
            (range_tests_floats): Same.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/vrp-float-nan-1.c: New test.

Reply via email to