Closed
Description
Breaking Rust's dependency on Fastcomp will allow upgrades to Rust's LLVM to be much smoother because they won't depend on Fastcomp being updated. Smoother upgrades will allow LLVM to be kept up to date more easily (#42389), which will be beneficial across the board but especially for WebAssembly as its LLVM backend matures. It is necessary that the asmjs and wasm targets emit object files instead of LLVM bitcode so that bitcode version mismatches between Rust and Emscripten won't be a problem. Work that needs to be done to break the dependency on Fastcomp includes:
- finish wasm2asm and integrate it into Emscripten as a backend for asm.js (Tracking issue for wasm2asm WebAssembly/binaryen#1141)make Emscripten take WebAssembly object files as input (blocked on LLD supporting WebAssembly https://groups.google.com/forum/#!topic/llvm-dev/BwFL_ulYX4E, https://reviews.llvm.org/D34851)make wasm32-unknown-emscripten emit WebAssembly object filesupdate asmjs-unknown-emscripten to emit WebAssembly object files and use the future wasm2asm backend in Emscriptenremove PNaCl/NaCl support, since it depends on Fastcomp (Remove support for the deprecated PNaCl technology #42420)
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
est31 commentedon Oct 5, 2017
@tlively I guess #42420 would also be part of this? If so, can it be added to the list?
tlively commentedon Oct 5, 2017
@est31 I'm not sure I understand why #42420 is part of this. Does NaCl/PNaCl support depend on Fastcomp as well?
est31 commentedon Oct 5, 2017
@tlively I'm no LLVM expert, but when I look into rust's fork of LLVM, then
lib/Target/JSBackend/NaCl/
is the place I can find the NaCl backend while upstream LLVM seems to lack theJSBackend
subdir entirely. I also can't find any meaningful references to NaCl in upstream LLVM so it wasn't moved or something. It looks like an addition by fastcomp.dylanmckay commentedon Oct 6, 2017
Can confirm - the entire JavaScript backend lives in
lib/Target/JSBackend/
.Every JS-specific modification to LLVM outside of this directory is decorated like so
It is
Auto merge of #45041 - est31:master, r=alexcrichton
est31 commentedon Nov 10, 2017
cc #45905
80 remaining items