bhavani krishnan
2008-Oct-27 14:48 UTC
[LLVMdev] Is it possible to use EE within optimization pass?
Hi all, I am repeating my question from yesterday coz I need to find a solution to this ASAP. How do I link the executionengine to an optimization pass. If I use LINK_COMPONENTS=engine in the Makefile, I get the Pass registered multiple times error. And if i dont use anything, it is not able to load the EE. It gives error loading symbol error. So, 1. Is it possible to use the EE within an optimization pass? 2. If it is possible, how do I do it? Please help me out here! Thanks, Bhavani
John Criswell
2008-Oct-27 15:01 UTC
[LLVMdev] Is it possible to use EE within optimization pass?
bhavani krishnan wrote:> Hi all, > > I am repeating my question from yesterday coz I need to find a solution to this ASAP. > > How do I link the executionengine to an optimization pass. If I use LINK_COMPONENTS=engine in the Makefile, I get the Pass registered multiple times error. And if i dont use anything, it is not able to load the EE. It gives error loading symbol error. So, > 1. Is it possible to use the EE within an optimization pass? > 2. If it is possible, how do I do it? >I have a hunch that I know what your problem is. You said that your pass is getting registered twice. Are you sure that your RegisterPass declaration is only being called once? A common error is to put the RegisterPass<MyPass> Foo variable inside a header file that gets included by multiple .cpp files implementing your pass (I'm assuming you've written a custom pass here). This will cause your pass to get registered multiple times, which will make the LLVM pass manager unhappy. I believe this is because the RegisterPass<> constructor does pass registration, so if it's declared multiple times, it registers the pass multiple times. To fix it, put RegisterPass<YourPassName> inside one of the .cpp files implementing your pass. Regarding your more specific questions, I suspect that EE can be used with the Pass Manager to run optimization passes, but that's just a guess on my part; I have never done it myself. I suspect the issue is just getting the right libraries listed in LINK_COMPONENTS and making sure your pass isn't registered twice. Please let us know if the RegisterPass thing is the problem and whether the solution above fixes it. Regards, -- John T.> Please help me out here! > Thanks, > Bhavani > > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
bhavani krishnan
2008-Oct-27 15:14 UTC
[LLVMdev] Is it possible to use EE within optimization pass?
Thanks John! My pass is registered only in 1 cpp file. It registers and executes fine without the EE. I only get the Pass registered multiple times error when I try to link to the EE by using LINK_COMPONENTS=engine in the Makefile. Without that line in the Makefile, my pass gets registered fine but it is not able to create EE(Error reading Symbol). So, how do I link LLVMExecutionEngine.o without causing the multiple registration error. thanks, Bhavani --- On Mon, 10/27/08, John Criswell <criswell at cs.uiuc.edu> wrote:> From: John Criswell <criswell at cs.uiuc.edu> > Subject: Re: [LLVMdev] Is it possible to use EE within optimization pass? > To: "bhavi63 at yahoo.com" <bhavi63 at yahoo.com>, "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu> > Date: Monday, October 27, 2008, 3:01 PM > bhavani krishnan wrote: > > Hi all, > > > > I am repeating my question from yesterday coz I need > to find a solution to this ASAP. > > > > How do I link the executionengine to an optimization > pass. If I use LINK_COMPONENTS=engine in the Makefile, I get > the Pass registered multiple times error. And if i dont use > anything, it is not able to load the EE. It gives error > loading symbol error. So, > > 1. Is it possible to use the EE within an optimization > pass? > > 2. If it is possible, how do I do it? > > > I have a hunch that I know what your problem is. > > You said that your pass is getting registered twice. Are > you sure that > your RegisterPass declaration is only being called once? A > common error > is to put the RegisterPass<MyPass> Foo variable > inside a header file > that gets included by multiple .cpp files implementing your > pass (I'm > assuming you've written a custom pass here). This will > cause your pass > to get registered multiple times, which will make the LLVM > pass manager > unhappy. > > I believe this is because the RegisterPass<> > constructor does pass > registration, so if it's declared multiple times, it > registers the pass > multiple times. > > To fix it, put RegisterPass<YourPassName> inside one > of the .cpp files > implementing your pass. > > Regarding your more specific questions, I suspect that EE > can be used > with the Pass Manager to run optimization passes, but > that's just a > guess on my part; I have never done it myself. I suspect > the issue is > just getting the right libraries listed in LINK_COMPONENTS > and making > sure your pass isn't registered twice. > > Please let us know if the RegisterPass thing is the problem > and whether > the solution above fixes it. > > Regards, > > -- John T. > > > > Please help me out here! > > Thanks, > > Bhavani > > > > > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >
Reasonably Related Threads
- [LLVMdev] Is it possible to use EE within optimization pass?
- [LLVMdev] Is it possible to use EE within optimization pass?
- [LLVMdev] Is it possible to use EE within optimization pass?
- [LLVMdev] Is it possible to use EE within optimization pass?
- [LLVMdev] Is it possible to use EE within optimization pass?