[LLVMdev] Requiring dynamically loaded passes

John Criswell criswell at cs.uiuc.edu
Tue Dec 4 08:56:34 PST 2007

Adve, Vikram Sadanand wrote:
> Is it possible to AddRequired<...> a pass that is dynamically
> loaded?  This would be very convenient for a course project but the
> documentation about pass interactions says nothing about dynamically
> loaded passes and vice versa.
> More specifically, to refer to the pass name in AddRequired, I need
> to declare it first but then I can't think of a way to load the
> module implementing the pass dynamically instead of linking it
> statically.
I believe SAFECode and Pool Allocation already do this.  You can use
addRequired to specify that a pass is required; the header file defined
the pass to be required must be #include'd into the source of the your
pass.  Everything should compile, but you'll have undefined symbols.

When you use opt, you'll need to use multiple -load options to load your
passes.  I believe you should load the prerequisite pass first and then
your pass.  Just make sure that there are no circular dependences
between the two passes.  If that doesn't work, use gcc to create a new
dynamic library that contains the prerequisite pass library and your
pass library; you can load that with a single -load option to opt.

-- John T.

> --Vikram
> http://www.cs.uiuc.edu/~vadve
> http://llvm.org
> _______________________________________________
> 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