[Bug c++/96003] [11 Regression] spurious -Wnonnull calling a member on the result of static_cast
sbergman at redhat dot com
gcc-bugzilla@gcc.gnu.org
Tue Jul 21 19:27:30 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96003
--- Comment #11 from Stephan Bergmann <sbergman at redhat dot com> ---
(In reply to Martin Sebor from comment #10)
> Patch for the static cast:
> https://gcc.gnu.org/pipermail/gcc-patches/2020-July/550231.html
LibreOffice runs into the same issue, but while the above patch fixes my first
reduced test case
> $ cat test1.cc
> struct S1 {};
> struct S2: S1 {};
> struct S3: S1 {};
> struct S4: S2, S3 { void f(); };
> void g(S3 * p) { static_cast<S4 *>(p)->f(); }
it does not fix the second
> $ cat test2.cc
> struct S1 { virtual ~S1(); };
> struct S2 { virtual ~S2(); };
> struct S3: S1, S2 { void f() const; };
> void g(S2 * p) { static_cast<S3 const *>(p)->f(); }
> $ g++ -Wnonnull -fsyntax-only test2.cc
> test2.cc: In function ‘void g(S2*)’:
> test2.cc:4:48: warning: ‘this’ pointer null [-Wnonnull]
> 4 | void g(S2 * p) { static_cast<S3 const *>(p)->f(); }
> | ^
> test2.cc:3:26: note: in a call to non-static member function ‘void S3::f() const’
> 3 | struct S3: S1, S2 { void f() const; };
> | ^
More information about the Gcc-bugs
mailing list