[llvm-dev] Definitive list of optimisations at each optimisation level

Sean Silva via llvm-dev llvm-dev at lists.llvm.org
Sat Jun 24 12:52:31 PDT 2017

The most definitive list you can probably hope to get will be obtained by
passing -mllvm -debug-pass=Structure to a clang invocation.

-- Sean Silva

On Jun 24, 2017 7:10 AM, "Martin J. O'Riordan via llvm-dev" <
llvm-dev at lists.llvm.org> wrote:

I am often asked what optimisations “our” compiler performs at each level.
But “our” compiler is actually CLang/LLVM which we have retargeted to our
proprietary target.

Most of the work we do is in maintaining our target specific backend.
Certainly there are optimisations that we do to take best advantage of our
instruction set during lowering and instruction selection, and we have also
added a couple of additional passes which manipulate the IR in advance of
lowering to better shape it for our target.

But in practice the vast majority of optimisations are contributed by the
continuously evolving and excellent LLVM target independent passes, and
have little or nothing to do with the work we do in our backend - though it
is obviously directed/tuned by the various target call-backs and the target
cost models.

Is there a “one stop shop” list of the optimisation passes that LLVM
performs, and identification of which are enabled by default for each of
the 4 standard optimisation levels ‘-O0’ thru ‘-O3’?

The reason that I ask, is that I really don’t have an honest or informed
answer that I can provide to people when they ask, and I haven’t found a
definitive statement of this in the LLVM documentation that I could refer
them to.



LLVM Developers mailing list
llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170624/cc2d44f1/attachment.html>

More information about the llvm-dev mailing list