[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:

	-indmemrem 
	-insert-block-profiling 
	-insert-function-profiling 
	-insert-null-profiling-rs 
	-insert-rs-profiling-framework 
	-lowerallocs

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


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

	-abcd 
	-always-inline 
	-functionattrs 
	-insert-optimal-edge-profiling 
	-instnamer 
	-iv-users 
	-lazy-value-info 
	-lda 
	-libcall-aa 
	-live-values 
	-mergefunc 
	-partial-inliner 
	-partialspecialization 
	-pointertracking 
	-print-dbginfo 
	-print-dom-info 
	-profile-estimator 
	-profile-verifier 
	-sccvn 
	-scev-aa 
	-simplify-libcalls-halfpowr 
	-split-geps 
	-ssi 
	-ssi-everything 
	-strip-debug-declare 
	-strip-nondebug 

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].

greetings,

Kenneth


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



More information about the llvm-dev mailing list