[LLVMdev] -Woverloaded-virtual
Vladimir Prus
ghost at cs.msu.su
Thu Jun 24 08:42:02 PDT 2004
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
More information about the llvm-dev
mailing list