analyzer: Recognize __builtin_free as a matching deallocator
commit84606efb0c6b1c1598d5ec6b05544e71596663b5
authorSiddhesh Poyarekar <siddhesh@gotplt.org>
Wed, 28 Jul 2021 05:03:46 +0000 (28 10:33 +0530)
committerSiddhesh Poyarekar <siddhesh@gotplt.org>
Wed, 28 Jul 2021 12:13:15 +0000 (28 17:43 +0530)
treecf703ac4b2312c424d3590d5cc935b5b74d0f797
parent54ec50bada94a8ff92edb04ee5216c27fa4bf942
analyzer: Recognize __builtin_free as a matching deallocator

Recognize __builtin_free as being equivalent to free when passed into
__attribute__((malloc ())), similar to how it is treated when it is
encountered as a call.  This fixes spurious warnings in glibc where
xmalloc family of allocators as well as reallocarray, memalign,
etc. are declared to have __builtin_free as the free function.

gcc/analyzer/ChangeLog:

* sm-malloc.cc
(malloc_state_machine::get_or_create_deallocator): Recognize
__builtin_free.

gcc/testsuite/ChangeLog:

* gcc.dg/analyzer/attr-malloc-1.c (compatible_alloc,
compatible_alloc2): New extern allocator declarations.
(test_9, test_10): New tests.
gcc/analyzer/sm-malloc.cc
gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c