-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Switching to use upstream LLVM backend by default #5488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Nice summary, good to see this making progress.
It's worrying to me that the test suite passes but BananaBread fails, please let's add a test for that issue in the emscripten test suite when we figure it out.
At least on the emscripten benchmark suite, speed looks ok aside from what to do with the lsr pass (need feedback there). Code size is an issue, we need to investigate that more carefully. I saw a significant difference (5-10% I think I remember?) but it was a while ago so probably out of date.
I lean towards waiting for wasm-level linking for switching the default, since I think the compile time difference was large last I checked (2x or so). But if it's small of course (removing lsr might help) that's not an issue. |
This sounds exciting! @dschuff : I have access to a number of project repositories that I can try to compile over with the new backend, ranging from small tests to large commercial projects. Your description sounds like it's a good moment for me to start trying out the new backend on these. Before we default to the new backend, we need to make sure to be able to compile existing projects ok, or if there are some items we need to not support, we should build a migration guide and work on a deprecation path. We should definitely ship the new backend in Emscripten SDK for one version at least with it being available but optional/default off, so that we can also gather feedback from people at emscripten-discuss. Can you document if there are any current gotchas with getting going with building with it? I presume the latest code should be available at https://github.com/llvm-mirror master branch and no need to root to the SVN repository? Are there other knobs to set except the environment variable |
Hope you don't mind me asking, bit will there be any significant change in disk space requirements if the backend is changed? Currently it seems like the fastcomp one requires ~13GB in total which is kind of a lot (using a virtual workspace). Thanks |
@GGAlanSmithee I wouldn't expect there to be a big change. We'll still need LLVM and clang, it will just be the upstream versions instead of fastcomp. I'd guess it will be a bit larger just because it's a newer version of the ever-growing LLVM project. We'll also eventually need lld, although that's not a huge codebase. |
@juj yes, I think now is a great time to start doing that. And as long as nobody minds building/downloading LLVM twice :D shipping an emsdk with support for both sounds good. Manually setting @kripken I'd lean toward not requiring wasm-level linking, because
|
@dschuff thanks for the explanation! 👍 |
This issue has been automatically marked as stale because there has been no activity in the past 2 years. It will be closed automatically if no further activity occurs in the next 7 days. Feel free to re-open at any time if this issue is still relevant. |
Has this been resolved? |
Ha, good call. I guess its not quite the default yet so lets leave this open. |
Yes, this is close to being resolved - we have a few blocker bugs left (9 atm) - but we should indeed keep it open. |
I think we are ready to make the switch. Here is what I propose:
|
Bravo for the hard work! |
When users as for 'latest' or just '1.39.0' we now default to the upstream llvm backend. For versions before 1.39.0 we continue to default to fastcomp. Fixes: emscripten-core/emscripten#5488
When users as for 'latest' or just '1.39.0' we now default to the upstream llvm backend. For versions before 1.39.0 we continue to default to fastcomp. Fixes: emscripten-core/emscripten#5488
When users as for 'latest' or just '1.39.0' we now default to the upstream llvm backend. For versions before 1.39.0 we continue to default to fastcomp. Fixes: emscripten-core/emscripten#5488
The upstream LLVM WebAssembly backend (along with its emscripten integration) is approaching parity with the fastcomp+asm2wasm pipeline, and we'd like to put in some extra effort to push it over the finish line, so that we can set it as the default for emscripten. I'd like to use this issue for discussion and maybe a tracking bug (although github's support for that use case isn't great; so maybe a project board instead?).
There are a few categories of stuff to think about:
So what's the current status?
What do we need to do
Thoughts?
The text was updated successfully, but these errors were encountered: