aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/sm-pattern-test.cc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2024-07-04 14:44:51 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2024-07-04 14:44:51 -0400
commita6fdb1a2a2906103afd70fa68cf7c45e896b8fbb (patch)
tree9de0f9c5c229569792b47f38999666d822d497d3 /gcc/analyzer/sm-pattern-test.cc
parentb611f3969249967d7f098c6adfcf5f701192a2d0 (diff)
downloadgcc-a6fdb1a2a2906103afd70fa68cf7c45e896b8fbb.zip
gcc-a6fdb1a2a2906103afd70fa68cf7c45e896b8fbb.tar.gz
gcc-a6fdb1a2a2906103afd70fa68cf7c45e896b8fbb.tar.bz2
analyzer: handle <error.h> at -O0 [PR115724]
At -O0, glibc's: __extern_always_inline void error (int __status, int __errnum, const char *__format, ...) { if (__builtin_constant_p (__status) && __status != 0) __error_noreturn (__status, __errnum, __format, __builtin_va_arg_pack ()); else __error_alias (__status, __errnum, __format, __builtin_va_arg_pack ()); } becomes just: __extern_always_inline void error (int __status, int __errnum, const char *__format, ...) { if (0) __error_noreturn (__status, __errnum, __format, __builtin_va_arg_pack ()); else __error_alias (__status, __errnum, __format, __builtin_va_arg_pack ()); } and thus calls to "error" are calls to "__error_alias" by the time -fanalyzer "sees" them. Handle them with more special-casing in kf.cc. gcc/analyzer/ChangeLog: PR analyzer/115724 * kf.cc (register_known_functions): Add __error_alias and __error_at_line_alias. gcc/testsuite/ChangeLog: PR analyzer/115724 * c-c++-common/analyzer/error-pr115724.c: New test. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc/analyzer/sm-pattern-test.cc')
0 files changed, 0 insertions, 0 deletions