Disable GCC's -Woverloaded-virtual in the configure+make build. Clang's is better.
authorDavid Blaikie <dblaikie@gmail.com>
Thu, 18 Sep 2014 16:34:25 +0000 (16:34 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Thu, 18 Sep 2014 16:34:25 +0000 (16:34 +0000)
Turns out Clang's -Woverloaded-virtual is enabled by -Wall in both CMake
and Configure builds. We were only explicitly specifying it (thus
enabling GCC's version of the warning) in the Configure build.

The specific case of interest is:

  struct base {
    virtual void func();
    virtual void func(int);
  };
  struct derived: base {
    virtual void func(); // GCC warns here, because this causes
                         // func(int) to be hidden
  };

I don't think that's worth getting fussed about (& Clang (indirectly
me... since I improved this warning in Clang) agrees or we would've made
the warning catch these cases.

Technically this could still lead to bugs/confusion if base had
func(int) and func(bool), derived overrode func(bool) and then a caller
with a derived object tried to call func(42) - it would silently call
func(bool). We should probably improve clang's warnings to catch this at
the call site at some point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218059 91177308-0d34-0410-b5e6-96231b3b80d8

Makefile.rules

index e802f8cab184ac3c7b411985c67e2df4795ccd90..4662e4986d41bd7dd16c262de26b204d2dbe3594 100644 (file)
@@ -449,7 +449,6 @@ ifeq ($(HOST_OS),MingW)
   endif
 endif
 
-CXX.Flags     += -Woverloaded-virtual
 CPP.BaseFlags += $(CPP.Defines)
 AR.Flags      := cru