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 files
- update asmjs-unknown-emscripten to emit WebAssembly object files and use the future wasm2asm backend in Emscripten
- remove PNaCl/NaCl support, since it depends on Fastcomp (Remove support for the deprecated PNaCl technology #42420)