The incoming branches now have an optimization which avoids llvm-link when
possible. This is kind of a hack, but looks like it's worth it - it pushes
linking into the opt call we do afterwards anyhow, which avoids saving and
then loading the entire module. On large codebases, this matters a lot it
turns out, much more than I expected.

I also optimizing llvm linking in some other ways (avoid a copy of the
first input), and disabled extra verifications in optimized builds.

On incoming, I see a 30% speedup on Poppler and 35% on Unity, on -O2 builds.

This did change some toolchain code, please test and report bugs if you
find any.

Side note, it looks like linking order matters a lot in llvm. It is always
better to have the larger file first in the link command, because the llvm
linker starts with the first module, then links the second into it. So you
want to write

emcc bigger-bitcode.bc smaller-bitcode.bc

both when linking them to bitcode and when compiling to JS. (Of course,
sometimes you can't change the link order, like when using .a files where
the order matters.)

- Alon

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to