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

Martin J. O'Riordan via llvm-dev llvm-dev at lists.llvm.org
Sat Jun 24 07:10:21 PDT 2017


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.

 

Thanks,

 

            MartinO

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170624/f21eadc5/attachment.html>


More information about the llvm-dev mailing list