[LLVMdev] -Woverloaded-virtual
Reid Spencer
reid at x10sys.com
Thu Jun 24 12:38:01 PDT 2004
I've long been an advocate of using -Woverloaded-virtual. The thing
with this option is that it can REALLY help catch some nasty inheritance
bugs. I'm running into these as I'm designing the bytecode analyzer
interface. I make a change to the interface, forget to change a
subclass, and bingo, that method doesn't get called any more and the
compiler doesn't warn me about it.
I asked Chris about this months ago but there was little interest in
changing it. Perhaps we need to file a bug to take care of the warnings
it produces so that LLVm is overloaded virtual clean, then we can turn
on checking for overloaded virtuals.
Reid.
On Thu, 2004-06-24 at 06:40, Vladimir Prus wrote:
> I've just had some fun, because I wanted to override
> FunctionPass::addAnalysisUsage, but forgot "const" after the method name --
> so instead of overriding I've just created a new unrelated method.
>
> After spending some time on this, I've decided to add -Woverloaded-virtual
> option to compiler to catch such cases. However, it also gives some warnings
> on LLVM code:
>
> ../../../include/llvm/Pass.h:264: warning: `virtual bool
> llvm::FunctionPass::run(llvm::Module&)' was hidden
> ../../../include/llvm/Pass.h:326: warning: by `bool
> llvm::BasicBlockPass::run(llvm::BasicBlock&)'
> ../../../include/llvm/Pass.h:275: warning: `virtual void
> llvm::FunctionPass::addToPassManager(llvm::PassManagerT<llvm::Module>*,
> llvm::AnalysisUsage&)' was hidden
> ../../../include/llvm/Pass.h:332: warning: by `virtual void
> llvm::BasicBlockPass::addToPassManager(llvm::PassManagerT<llvm::BasicBlock>*,
> llvm::AnalysisUsage&)'
>
> The problem is that "run" method is virtual in Path (with Module& as
> argument), but another version (non-virtual), which takes BasicBlock& is
> defined in BasicBlockPath.
>
> Do you think this warning is worth fixing? One possible approach is to rename
> virtual run(Module&) to runOnModule, but that would require updating all
> derived classes :-(
>
> - Volodya
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20040624/2648653a/attachment.sig>
More information about the llvm-dev
mailing list