https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108893

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Jonny Grant from comment #0) 
> 
> void f(const char * const str) __attribute__((access(read_only, 1)));
> void f(const char * const str)
> {
>     __builtin_puts(str);
> }
> 
> int main()
> {
>     const char * a = nullptr;
>     f(a);
> }
> 
> Tested on trunk in C++
> https://godbolt.org/z/rc8G6bePq

The goldbolt testcase does not match the above testcase. In fact using the
above testcase works and gives us the warning for both -fanalyzer and
-Wnonnull:
```
In function 'void f(const char*)',
    inlined from 'int main()' at <source>:10:6:
<source>:4:19: warning: use of NULL where non-null expected [CWE-476]
[-Wanalyzer-null-argument]
    4 |     __builtin_puts(str);
      |     ~~~~~~~~~~~~~~^~~~~
  'int main()': event 1
    |
    |   10 |     f(a);
    |      |      ^
    |      |      |
    |      |      (1) inlined call to 'f' from 'main'
    |
    +--> 'void f(const char*)': event 2
           |
           |    4 |     __builtin_puts(str);
           |      |     ~~~~~~~~~~~~~~^~~~~
           |      |                   |
           |      |                   (2) argument 1 NULL where non-null
expected
           |
<built-in>: In function 'int main()':
<built-in>: note: argument 1 of 'int __builtin_puts(const char*)' must be
non-null
In function 'void f(const char*)',
    inlined from 'int main()' at <source>:10:6:
<source>:4:19: warning: argument 1 null where non-null expected [-Wnonnull]
<source>:4:19: note: in a call to built-in function 'int __builtin_puts(const
char*)'
```

Reply via email to