https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96003
--- Comment #8 from Sergei Trofimovich <slyfox at inbox dot ru> ---
(In reply to Sergei Trofimovich from comment #6)
> (In reply to Martin Sebor from comment #4)
> > The warning in the test case in comment #3 looks correct to me.
>
> Thank you! I'll try to re-reduce and not introduce new NULLs.
Here is the second attempt at reducing firefox case, also related to
static_cast<>:
struct D;
struct B {
B* next;
D* Next();
};
struct D : public B {
virtual ~D();
};
struct Iterator {
D* current;
void advance() {
current = static_cast<B*>(current)->Next();
}
};
$ x86_64-pc-linux-gnu-g++ -o bug.o -c bug.cpp -Werror=nonnull
-fno-strict-aliasing
bug.cpp: In member function 'void Iterator::advance()':
bug.cpp:14:46: error: 'this' pointer null [-Werror=nonnull]
14 | current = static_cast<B*>(current)->Next();
| ^
bug.cpp:4:6: note: in a call to non-static member function 'D* B::Next()'
4 | D* Next();
| ^~~~
cc1plus: some warnings being treated as errors
Also, the "'this' pointer null" error wording is not very clear. Should it be
"'this' pointer is null"? Or "'this' pointer may be null"?