https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117662
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Without the definition of foo_log in main.cc -fanalyzer (without LTO being used), can't figure out that it returns a negative value. One thing you could do is change the defintion of foo_log_oom to be something like: #define foo_log_oom(msg) ({ foo_log(ENOMEM, msg); -ENOMEM; }) Which causes foo_log_oom value to be known to be -ENOMEM.