[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