[pushed] c++: Include -Woverloaded-virtual in -Wall [PR87729]

Stephan Bergmann sbergman@redhat.com
Fri Jul 1 20:30:44 GMT 2022


On 6/25/22 00:26, Jason Merrill via Gcc-patches wrote:
> This seems like a good warning to have in -Wall, as requested.  But as
> pointed out in PR20423, some users want a warning only when a derived
> function doesn't override any base function.  So let's put that lesser
> version in -Wall (and -Woverloaded-virtual=1) while leaving the semantics
> for the existing option the same.

This now causes

> $ cat test.cc
> struct S1 {};
> struct S2: S1 { virtual ~S2(); };
> struct S3 { virtual ~S3(); };
> struct S4: S2, S3 { virtual ~S4(); };

> $ g++ -Woverloaded-virtual -fsyntax-only test.cc
> test.cc:3:21: warning: ‘virtual S3::~S3()’ was hidden [-Woverloaded-virtual=]
>     3 | struct S3 { virtual ~S3(); };
>       |                     ^
> test.cc:4:29: note:   by ‘virtual S4::~S4()’
>     4 | struct S4: S2, S3 { virtual ~S4(); };
>       |                             ^
> test.cc:3:21: warning: ‘virtual S3::~S3()’ was hidden [-Woverloaded-virtual=]
>     3 | struct S3 { virtual ~S3(); };
>       |                     ^
> test.cc:4:29: note:   by ‘virtual S4::~S4()’
>     4 | struct S4: S2, S3 { virtual ~S4(); };
>       |                             ^
> test.cc:3:21: warning: ‘virtual S3::~S3()’ was hidden [-Woverloaded-virtual=]
>     3 | struct S3 { virtual ~S3(); };
>       |                     ^
> test.cc:4:29: note:   by ‘virtual S4::~S4()’
>     4 | struct S4: S2, S3 { virtual ~S4(); };
>       |                             ^



More information about the Gcc-patches mailing list