https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94355
--- Comment #7 from Ivan Sorokin <vanyacpp at gmail dot com> ---
For me the support for operator new works well for trivially constructible
types. For a non-trivially constructible type I got a false positive:
struct foo { foo(); };
int main()
{
delete new foo();
}
In function 'int main()':
cc1plus: warning: use of possibly-NULL 'operator new(1)' where non-null
expected [CWE-690] [-Wanalyzer-possible-null-argument]
'int main()': event 1
|
|<source>:5:20:
| 5 | delete new foo();
| | ^
| | |
| | (1) this call could return NULL
|
'int main()': event 2
|
|cc1plus:
| (2): argument 'this' ('operator new(1)') from (1) could be NULL where
non-null expected
|
<source>:1:14: note: argument 'this' of 'foo::foo()' must be non-null
1 | struct foo { foo(); };
| ^~~
Compiler returned: 0
https://godbolt.org/z/nPff9EGsY
Also the error location seems to be wrong. Removing "()" from "delete new
foo()" fixes the error location.