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.
