[LLVMdev] Passing parameters to LLVM optimisation passes

John Criswell criswell at uiuc.edu
Wed Feb 27 07:42:29 PST 2008


Ian Jason wrote:
> I'm fairly new to LLVM, and am writing an optimisation pass to be run by
> 'opt'.  However, i'd like this pass to be parameterisable; as such i'd like
> to be able to pass an option to it (preferably via the command line to
> 'opt').
>
> e.g. so i can do something like this "opt -load mypass.so
> -MyPass=MyPassOption < inputfile.bc ..."
>   
Yes, this is possible.  In your source code, you simply need to add a 
new command line option using LLVM's command line library.  This library 
allows you to create a global variable for each command line option that 
you want.  When you load your pass into opt, the global variables' 
constructors automatically register your command line options with the 
opt tool.

For example, you might do something like this in your code:

namespace {
  cl::opt<bool> OnlyPrintMain("only-print-main-ds", cl::ReallyHidden);
}

This defines a command line option "-only-print-main-ds" that toggles a 
boolean flag.  The OnlyPrintMain variable than acts like a C++ boolean:

if (OnlyPrintMain)
    do something
else
    do something else

More information on the command line library can be found in its 
documentation: http://llvm.org/docs/CommandLine.html

-- John T.

> (for example one thing I would like to do is pass a list of function names
> to optimise, the pass would then optimise these (and their children) and
> ignore everything else)
>
> I've had a trawl through the documentation but can't seem to see a way of
> doing this within the pass framework.  I may be missing something.  Is it
> possible?  If so, could someone point me in the right direction?
>
> Thanks,
> Ian
> --
> View this message in context: http://www.nabble.com/Passing-parameters-to-LLVM-optimisation-passes-tp15711960p15711960.html
> Sent from the LLVM - Dev mailing list archive at Nabble.com.
>
> _______________________________________________
> 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