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

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:07c86323a199ca15177d99ad6c488b8f5fb5c729

commit r10-6058-g07c86323a199ca15177d99ad6c488b8f5fb5c729
Author: David Malcolm <dmalc...@redhat.com>
Date:   Thu Jan 16 09:46:30 2020 -0500

    analyzer: prevent ICE on isnan (PR 93290)

    PR analyzer/93290 reports an ICE on calls to isnan().
    The root cause is that an UNORDERED_EXPR is passed
    to region_model::eval_condition_without_cm, and there's
    a stray gcc_unreachable () in the case where we're comparing
    an svalue against itself.

    I attempted a more involved patch that properly handled NaN in general
    but it seems I've baked the assumption of reflexivity too deeply into
    the constraint_manager code.

    For now, this patch avoids the ICE and documents the limitation.

    gcc/analyzer/ChangeLog:
        PR analyzer/93290
        * region-model.cc (region_model::eval_condition_without_cm): Avoid
        gcc_unreachable for unexpected operations for the case where
        we're comparing an svalue against itself.

    gcc/ChangeLog
        * doc/analyzer.texi (Limitations): Add note about NaN.

    gcc/testsuite/ChangeLog:
        PR analyzer/93290
        * gcc.dg/analyzer/pr93290.c: New test.

Reply via email to