[LLVMdev] Strange Multiple Inheritance Errors Using LLVM 2.7

Chris Lattner clattner at apple.com
Thu Mar 25 09:33:02 PDT 2010


On Mar 25, 2010, at 8:18 AM, John Criswell wrote:

> Dear All,
> 
> I'm currently upgrading SAFECode to the LLVM 2.7 API.  I'm getting some 
> strange errors in LLVM Passes that use analysis groups and multiple 
> inheritance.

Hey John,

This is almost certainly due to the "eliminate rtti" work.  You probably need to implement "getAdjustedAnalysisPointer" methods in your passes, see BasicAliasAnalysis or BasicCallGraph as examples.

-Chris

> 
> To create analysis groups in LLVM 2.6, I would first create a base class 
> for the analysis group and then another class that inherited from both 
> ModulePass and the analysis group base class.  That worked in LLVM 2.6, 
> but now in LLVM 2.7 I'm getting strange behavior.  In particular, I'm 
> seeing the wrong functions called when virtual methods of my passes are 
> called.  For example, when a SAFECode pass would call the getDSGraph() 
> method of the PoolAllocateSimple pass, the releaseMemory() method would 
> be called instead.
> 
> Has anyone else seen this really bizarre behavior or know what might be 
> causing it?  Eliminating multiple inheritance seems to fix the problem, 
> but it seems to introduce other problems when chaining analysis passes 
> of the same group together.
> 
> I see this behavior both on Mac OS X and Linux.
> 
> -- John T.
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list