https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119278
--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:7f476ee30bab3976eefc3226481e617add83401a

commit r15-8058-g7f476ee30bab3976eefc3226481e617add83401a
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Mar 14 15:30:43 2025 +0100

    analyzer: Fix ICE in cmp_csts_same_type on RAW_DATA_CST [PR119278]

    The following testcase ICEs in cmp_csts_same_type because RAW_DATA_CST
    isn't handled there.  As TREE_TYPE (cst1) in that case is INTEGER_TYPE,
    e.g. char/signed char/unsigned char, the type itself doesn't imply
    the size, so the length is compared first, followed by comparing the
    data.
    While at it, I've noticed STRING_CST handling is wrong, because STRING_CST
    can represent even string literals with embedded nul characters.
    We shouldn't stop at those, hence memcmp.
    While for STRING_CST TREE_TYPE should likely already imply the length
    and so same type should imply same TREE_STRING_LENGTH, I've repeated
    the comparisons in there just in case.

    2025-03-14  Jakub Jelinek  <ja...@redhat.com>

            PR analyzer/119278
            * svalue.cc (cmp_csts_same_type): For STRING_CST, compare
            TREE_STRING_LENGTH first just in case and use memcmp rather
            than strcmp.  Handle RAW_DATA_CST.

            * c-c++-common/analyzer/pr119278.c: New test.

Reply via email to