analyzer: fix ICE on strlen ((char *)&VECTOR_CST) [PR111361]
commitd5604febcfb09445eb738dcb8c675a4cb9671519
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 18 Jan 2024 17:11:57 +0000 (18 12:11 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Thu, 18 Jan 2024 17:11:57 +0000 (18 12:11 -0500)
tree72591169c0bcfd3f255c3d0b6f3a9895797674b4
parent84096e665c5f7d7ffb07f18a5fd5e804a94b237b
analyzer: fix ICE on strlen ((char *)&VECTOR_CST) [PR111361]

gcc/analyzer/ChangeLog:
PR analyzer/111361
* region-model.cc (svalue_byte_range_has_null_terminator_1): The
initial byte of an all-zeroes SVAL is a zero byte.  Remove
gcc_unreachable from SK_CONSTANT for constants that aren't
STRING_CST or INTEGER_CST.

gcc/testsuite/ChangeLog:
PR analyzer/111361
* c-c++-common/analyzer/strlen-pr111361.c: New test.
* c-c++-common/analyzer/strncpy-1.c (test_zero_fill): Remove fixed
xfail.
* c-c++-common/analyzer/strncpy-pr111361.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/region-model.cc
gcc/testsuite/c-c++-common/analyzer/strlen-pr111361.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/analyzer/strncpy-1.c
gcc/testsuite/c-c++-common/analyzer/strncpy-pr111361.c [new file with mode: 0644]