]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/analyzer/region-model.cc
analyzer: extract bits from integer constants [PR105783]
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 7 Oct 2022 16:41:59 +0000 (12:41 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Fri, 7 Oct 2022 16:41:59 +0000 (12:41 -0400)
commitf09b99550a3c6cd16f5e9150ebd4b1d87033dcbd
tree5dfa5182f6242910eb9770406e78020e5cdd534b
parenteb491ea5c10955c667ceeda76dede393c93a377b
analyzer: extract bits from integer constants [PR105783]

Fix a false positive from -Wanalyzer-null-dereference due to -fanalyzer
failing to grok the value of a particular boolean field initialized to a
constant.

gcc/analyzer/ChangeLog:
PR analyzer/105783
* region-model.cc (selftest::get_bit): New function.
(selftest::test_bits_within_svalue_folding): New.
(selfftest::analyzer_region_model_cc_tests): Call it.
* svalue.cc (constant_svalue::maybe_fold_bits_within): Handle the
case of extracting a single bit.

gcc/testsuite/ChangeLog:
PR analyzer/105783
* gcc.dg/analyzer/pr105783.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/region-model.cc
gcc/analyzer/svalue.cc
gcc/testsuite/gcc.dg/analyzer/pr105783.c [new file with mode: 0644]