LLVM最適化パスLLVMは、様々な種類の、様々なトレードオフを持つ、多くの最適化パスを提供する。他のシステムと違って、LLVMは、ある最適化が全ての言語や全ての状況において正しい、という誤った考えは持っていない。LLVMでは、コンパイラの実装者が、どの場合に、どういう順番で、どの最適化を使うかについて全て好きに選択することが可能となっている。(しばしばそれはファイル全体である。リンク時の場合は、プログラム全体の実体部分となりうる。)また、他の関数を見ずに、一度にひとつの関数だけを処理するための”関数単位(per-function)”のパスをサポートする。パスの詳しい情報や、パスがどうやって動作するかについては、ドキュメントの”LLVMのパス一欄“のページと、”パスの書き方“のページを参照。万華鏡については、現状では、ユーザが関数を入力したときに、一度にひとつずつ、オンザフライで関数を生成している。このような状況では、もの凄い最適化体験というものは得られないが、簡単で手っ取り早く似たようなことを行う方法はある。ユーザーが関数を入力した際に、”関数単位(per-function)”の最適化をいくつか施そうというのである。スタティックな万華鏡コンパイラを作りたい場合は、ファイル全体が構文解析されるまで最適化の実行を遅らせなきゃいけないという点を除いて、現在我々が持っているコードがそのまま使える。スタティックなコンパイラというのはJITコンパイラに対して普通のコンパイラの事を指してるものと思われる。関数毎の最適化を実行するには、実行したいLLVM最適化をまとめて保持するためのFunctionPassManagerをセットアップする必要がある。一度それを行えば、実行したい最適化を追加することが出来る。以下のような感じである。オプティマイザのパイプラインを準備する。ターゲットがデータ構造をどうやって配置するかについての情報をまず登録する。大域値番号付け)のために、基本的なエイリアス解析のサポートを提供する。簡単なピープホール最適化(覗き穴最適化)とビット操作最適化を行わせる。