[LLVMdev] list of LLVM optimization passes

Kenneth Hoste kenneth.hoste at elis.ugent.be
Sun Jul 4 07:19:27 PDT 2010

Hello LLVMers,

I'm putting together some (extensive) experiments with using a genetic algorithm to construct sets of optimization
passes that are as close as optimal in a number of ways, e.g. compilation time, execution time, code size, ...

I've figured out which LLVM tools I should use for this (llvm-gcc to obtain bitcode, opt to optimize, llc to obtain assembly, ...),
and I'm now looking into which optimization passes I should take into account in my experiments.

First, one thing that is not entirely clear to me: do analysis passes result in additional information being made available
to other passes, e.g. does "-domtree" enable more aggressive optimization being done by other passes?
In other words, should I consider some analysis passes in my setup, and if so, which ones?

Initially, I just used the set of 58 'transform' passes listed at [1].
Unfortunately, it turns out that this list if not up to date. Below are my findings, comparing [1] to "opt -help".

If someone can clarify the points below, I'll try and put together a patch for [1], resolving the inconsistencies...

Several transform passes listed at [1] are no longer supported by the opt tool:


Is assume this is known? Were these passes removed recently?

A large number of passes mentioned in "opt -help" are not mentioned in [1]:


It's unclear to me which of these passes are transform passes, and which ones are analysis passes.
If someone here can point out the transform and analysis passes for me, I can try and come up with a
patch for [1].



[1] http://llvm.org/docs/Passes.html

More information about the llvm-dev mailing list