Closed
Description
I'm opening this to track upgrading to LLVM 7.0. This version of LLVM has not been release and is currently in development on the master branch of LLVM itself, but I'd like to track possible regressions over time and otherwise try to routinely build rustc with LLVM 7 and make sure it keeps working
- Current rustc branch - based on 56e541d
- Current LLVM fork - based on alexcrichton/llvm@d9367a9
- Latest test results
Reasons to upgrade to LLVM 7
- LLD has implemented
--gc-sections
for wasm - LLD has implemented DWARF debugging information sections for wasm
- LLD has natively implemented concatenation of custom sections for wasm
- LLD has gained the ability to place the stack first in a wasm module's memory layout, reducing the corruption that happens on a stack overflow
- LLD option to not merge data segments
- Some SIMD generic float intrinsics have been fixed
- LLD optimizing further the size of release binaries
- LLD supports
@
-file syntax
... and likely more coming soon!
Changes required
- Track down and fix rustdoc panic on x86_64 (and maybe i686?)
- Track down, report, and pull in fix for codegen failure on Thumb platform
-
fs::tests::realpath_works_tricky
is failing on x86_64 MSVC - PGO run-make-fulldeps tests failing on x86_64 MSVC
- Update LLD's
@
-syntax to always use GNU quoting - Serialize custom sections to LLVM IR for wasm instead of manually handling them
- IR syntax for memcpy/memmove has changed with argument alignments
- getelementptr syntax has changed with argument alignment
- Pass
--gc-sections
towasm-ld
- Leverage LLVM for wasm custom sections instead of implementing custom support
- Pass the
--stack-first
option towasm-ld
by default - The wasm target is now named
wasm32-unknown-unkonwn
(no trailing-wasm
) - Pass
-O2
to LLD on wasm