[llvm-dev] Can LLVM emit machine code faster with no optimization passes?

Andrew Kelley via llvm-dev
Wed, 12 Oct 2016 15:15:35 -0000

Hello,

Recently Jonathan Blow posted a short screencast discussing build time of
his compiler with when no optimizations are run on the user's code.

Part 1: https://www.youtube.com/watch?v=HLk4eiGUic8
Part 2: https://www.youtube.com/watch?v=mIjGYbol0O4

He discusses what parts are taking the longest to compile, and the
ultimately shows this:
http://i.imgur.com/BkbKcJK.png
...which shows that emitting LLVM IR in memory and
LLVMTargetMachineEmitToFile is the bottleneck in his compiler toolchain.

In fact, it was significantly faster to emit C to disk and compile with
MSVC than to emit LLVM in memory and call LLVMTargetMachineEmitToFile.

His conclusion is that he will not depend on LLVM when his users compile
with optimizations off, instead directly emitting x86_64 machine code into
an object file.

Needless to say, this is duplicate effort. Is there any way the LLVM
project could speed things up when no optimizations are run?

As another compiler author (http://ziglang.org/), I want to compete with
Jon's speed without having to duplicate the effort that LLVM already solves.

Thanks for your time.
Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20161012/520a6075/attachment.html>