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

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <[email protected]>:

https://gcc.gnu.org/g:761e0d3d785794064477e7b68310dd5c6ae1003c

commit r16-7671-g761e0d3d785794064477e7b68310dd5c6ae1003c
Author: David Malcolm <[email protected]>
Date:   Tue Feb 24 17:16:58 2026 -0500

    analyzer: fix ICE on division by zero [PR124195]

    gcc/analyzer/ChangeLog:
            PR analyzer/124195
            * region-model-manager.cc
            (region_model_manager::maybe_fold_binop): Bulletproof against
            division by zero by returning "unknown".
            * region-model.cc (region_model::get_gassign_result): Bail out for
            division by zero.
            * svalue.cc (svalue::maybe_get_value_range): Rename to...
            (svalue::maybe_get_value_range_1): ...this.
            (constant_svalue::maybe_get_value_range): Rename to...
            (constant_svalue::maybe_get_value_range_1): ...this.
            (unknown_svalue::maybe_get_value_range): Rename to...
            (unknown_svalue::maybe_get_value_range_1): ...this.
            (unaryop_svalue::maybe_get_value_range): Rename to...
            (unaryop_svalue::maybe_get_value_range_1): ...this.
            (binop_svalue::maybe_get_value_range): Rename to...
            (binop_svalue::maybe_get_value_range_1): ...this.
            * svalue.h (svalue::maybe_get_value_range): Reimplement inline,
            asserting that if we get a result it is not undefined_p.  Use
            maybe_get_value_range_1 for the vfunc.
            (svalue::maybe_get_value_range_1): Rename from above.
            (constant_svalue::maybe_get_value_range): Rename to...
            (constant_svalue::maybe_get_value_range_1): ...this.
            (unknown_svalue::maybe_get_value_range): Rename to...
            (unknown_svalue::maybe_get_value_range_1): ...this.
            (unaryop_svalue::maybe_get_value_range): Rename to...
            (unaryop_svalue::maybe_get_value_range_1): ...this.
            (binop_svalue::maybe_get_value_range): Rename to...
            (binop_svalue::maybe_get_value_range_1): ...this.

    gcc/testsuite/ChangeLog:
            PR analyzer/124195
            * c-c++-common/analyzer/divide-by-zero-1.c: New test.
            * c-c++-common/analyzer/divide-by-zero-pr124195-2.c: New test.
            * gcc.dg/analyzer/divide-by-zero-pr124195-1.c: New test.

    Signed-off-by: David Malcolm <[email protected]>

Reply via email to