rust/src
bors 39abcc0413 Auto merge of #47828 - alexcrichton:llvm-6, r=nikomatsakis
rustc: Upgrade to LLVM 6

The following submodules have been updated for a new version of LLVM:

- `src/llvm`
- `src/libcompiler_builtins` - transitively contains compiler-rt
- `src/dlmalloc`

This also updates the docker container for dist-i686-freebsd as the old 16.04
container is no longer capable of building LLVM. The
compiler-rt/compiler-builtins and dlmalloc updates are pretty routine without
much interesting happening, but the LLVM update here is of particular note.
Unlike previous updates I haven't cherry-picked all existing patches we had on
top of our LLVM branch as we have a [huge amount][patches4] and have at this
point forgotten what most of them are for. Instead I started from the current
`release_60` branch in LLVM and only applied patches that were necessary to get
our tests working and building.

The [current set of custom rustc-specific patches](https://github.com/rust-lang/llvm/compare/f1286127b73c0d81ced8595af62e78ed703ced8b...rust-llvm-release-6-0-0) included in this LLVM update are:

* rust-lang/llvm@1187443 - this is how we actually implement
  `cfg(target_feature)` for now and continues to not be upstreamed. While a
  hazard for SIMD stabilization this commit is otherwise keeping the status
  quo of a small rustc-specific feature.
* rust-lang/llvm@013f2ec - this is a rustc-specific optimization that we haven't
  upstreamed, notably teaching LLVM about our allocation-related routines (which
  aren't malloc/free). Once we stabilize the global allocator routines we will
  likely want to upstream this patch, but for now it seems reasonable to keep it
  on our fork.
* rust-lang/llvm@a65bbfd - I found this necessary to fix compilation of LLVM in
  our 32-bit linux container. I'm not really sure why it's necessary but my
  guess is that it's because of the absolutely ancient glibc that we're using.
  In any case it's only updating pieces we're not actually using in LLVM so I'm
  hoping it'll turn out alright. This doesn't seem like something we'll want to
  upstream.c
* rust-lang/llvm@77ab1f0 - this is what's actually enabling LLVM to build in our
  i686-freebsd container, I'm not really sure what's going on but we for sure
  probably don't want to upstream this and otherwise it seems not too bad for
  now at least.
* rust-lang/llvm@9eb9267 - we currently suffer on MSVC from an [upstream bug]
  which although diagnosed to a particular revision isn't currently fixed
  upstream (and the bug itself doesn't seem too active). This commit is a
  partial revert of the suspected cause of this regression (found via a
  bisection). I'm sort of hoping that this eventually gets fixed upstream with a
  similar fix (which we can replace in our branch), but for now I'm also hoping
  it's a relatively harmless change to have.

After applying these patches (plus one [backport] which should be [backported
upstream][llvm-back]) I believe we should have all tests working on all
platforms in our current test suite. I'm like 99% sure that we'll need some more
backports as issues are reported for LLVM 6 when this propagates through
nightlies, but that's sort of just par for the course nowadays!

In any case though some extra scrutiny of the patches here would definitely be
welcome, along with scrutiny of the "missing patches" like a [change to pass
manager order](rust-lang/llvm@2717444), [another change to pass manager
order](rust-lang/llvm@c782feb), some [compile fixes for
sparc](rust-lang/llvm@1a83de6), and some [fixes for
solaris](rust-lang/llvm@c2bfe0a).

[patches4]: rust-lang/llvm@5401fdf...rust-llvm-release-4-0-1
[backport]: rust-lang/llvm@5c54c25
[llvm-back]: https://bugs.llvm.org/show_bug.cgi?id=36114
[upstream bug]: https://bugs.llvm.org/show_bug.cgi?id=36096

---

The update to LLVM 6 is desirable for a number of reasons, notably:

* This'll allow us to keep up with the upstream wasm backend, picking up new
  features as they start landing.
* Upstream LLVM has fixed a number of SIMD-related compilation errors,
  especially around AVX-512 and such.
* There's a few assorted known bugs which are fixed in LLVM 5 and aren't fixed
  in the LLVM 4 branch we're using.
* Overall it's not a great idea to stagnate with our codegen backend!

This update is mostly powered by #47730 which is allowing us to update LLVM
*independent* of the version of LLVM that Emscripten is locked to. This means
that when compiling code for Emscripten we'll still be using the old LLVM 4
backend, but when compiling code for any other target we'll be using the new
LLVM 6 target. Once Emscripten updates we may no longer need this distinction,
but we're not sure when that will happen!

Closes #43370
Closes #43418
Closes #47015
Closes #47683
Closes rust-lang-nursery/stdsimd#157
Closes rust-lang-nursery/rust-wasm#3
2018-02-10 02:52:12 +00:00
..
binaryen@1c9bf65aa0
bootstrap rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
build_helper
ci rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
dlmalloc@a2b424b600 rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
doc Rollup merge of #47948 - pietroalbini:use-nested-groups-stabilize, r=petrochenkov 2018-02-06 02:13:51 +08:00
etc Implement extensible syscall interface for wasm 2018-01-30 23:22:19 +00:00
grammar
jemalloc@1f5a28755e
liballoc Document that Index ops can panic on HashMap & BTreeMap. 2018-01-28 21:51:33 -05:00
liballoc_jemalloc Make liballoc_jemalloc work on CloudABI. 2018-01-18 21:11:24 +01:00
liballoc_system
libarena Rollup merge of #47069 - Kagamihime:master, r=nrc 2018-01-13 02:26:23 +08:00
libbacktrace
libcompiler_builtins@345447948f rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
libcore Auto merge of #48057 - scottmcm:less-match-more-compare, r=dtolnay 2018-02-08 06:38:30 +00:00
libfmt_macros
libgetopts
libgraphviz
liblibc@56444a4545 Update libc 2018-01-24 08:37:33 -02:00
libpanic_abort rustc: Add an option to default hidden visibility 2018-01-30 13:41:20 -08:00
libpanic_unwind
libproc_macro proc_macro: don't panic parsing ..= (fix #47950) 2018-02-06 14:43:01 +00:00
libprofiler_builtins
librustc Auto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakis 2018-02-09 13:04:17 +00:00
librustc_allocator
librustc_apfloat in which the unused-parens lint comes to cover function and method args 2018-01-18 08:33:58 -08:00
librustc_asan
librustc_back Rollup merge of #47890 - pftbest:no_trap, r=alexcrichton 2018-01-31 16:36:17 +08:00
librustc_binaryen Export wasm source map when debug information is enabled 2018-01-30 20:10:58 -06:00
librustc_borrowck Rollup merge of #47543 - topecongiro:issue-42344, r=nikomatsakis 2018-02-06 02:13:46 +08:00
librustc_const_eval Encode (in MIR) whether borrows are explicit in source or arise due to autoref. 2018-02-08 12:16:25 +01:00
librustc_const_math
librustc_cratesio_shim
librustc_data_structures Make region inference use a dirty list 2018-01-26 21:56:49 -03:00
librustc_driver Auto merge of #47203 - varkor:output-filename-conflicts-with-directory, r=estebank 2018-02-06 09:51:03 +00:00
librustc_errors Remove dead code 2018-02-02 09:18:49 +05:30
librustc_incremental Allow runtime switching between trans backends 2018-01-19 20:27:10 +01:00
librustc_lint Add AutoBorrowMutability; its like hir::Mutability but w/ two-phase borrow info too. 2018-02-08 12:16:30 +01:00
librustc_llvm rustc: Split Emscripten to a separate codegen backend 2018-01-28 18:32:45 -08:00
librustc_lsan
librustc_metadata rustc: Load the rustc_trans crate at runtime 2018-01-27 19:16:21 -08:00
librustc_mir Auto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakis 2018-02-09 13:04:17 +00:00
librustc_msan
librustc_passes mir: Add TerminatorKind::FalseUnwind 2018-02-05 15:00:40 -05:00
librustc_platform_intrinsics
librustc_plugin Don't include DefIndex in plugin- and proc-macro registrar fn symbol. 2018-01-16 17:30:11 +01:00
librustc_privacy Reexport -> re-export in prose and documentation comments 2018-01-15 13:36:53 -05:00
librustc_resolve rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
librustc_save_analysis Rollup merge of #48007 - nrc:rls-field-init, r=eddyb 2018-02-06 02:13:55 +08:00
librustc_trans Auto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakis 2018-02-09 13:04:17 +00:00
librustc_trans_utils rustc: Load the rustc_trans crate at runtime 2018-01-27 19:16:21 -08:00
librustc_tsan
librustc_typeck Auto merge of #47489 - pnkfelix:limit-2pb-issue-46747, r=nikomatsakis 2018-02-09 02:26:43 +00:00
librustdoc Pass themes folder as parameter 2018-02-08 10:53:09 +01:00
libserialize Auto merge of #46919 - michaelwoerister:new-leb128, r=sfackler 2018-01-20 02:00:13 +00:00
libstd Rollup merge of #47631 - SimonSapin:nonnull, r=alexcrichton 2018-02-07 08:30:48 -08:00
libstd_unicode Reexport -> re-export in prose and documentation comments 2018-01-15 13:36:53 -05:00
libsyntax Rollup merge of #47613 - estebank:rustc_on_unimplemented, r=nikomatsakis 2018-02-07 08:30:47 -08:00
libsyntax_ext Rollup merge of #46030 - Zoxc:asm-volatile, r=nikomatsakis 2018-02-06 02:13:44 +08:00
libsyntax_pos Rollup merge of #47942 - estebank:macro-spans, r=nikomatsakis Minimize weird spans involving macro context Sometimes the parser attempts to synthesize spans from within a macro context with the span for the captured argument, leading to non-sensical spans with very bad output. Given that an incorrect span is worse than a partially incomplete span, when detecting this situation return only one of the spans without merging them. Fix #32072, #47778. CC #23480. 2018-02-02 22:48:50 +08:00
libterm
libtest libtest: Replace panics with error messages 2018-02-04 06:10:54 +02:00
libunwind Auto merge of #47663 - malbarbo:mips-crt-static, r=alexcrichton 2018-01-28 23:30:15 +00:00
llvm@9f81beaf32 rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
llvm-emscripten@2717444753 rustc: Split Emscripten to a separate codegen backend 2018-01-28 18:32:45 -08:00
rt
rtstartup Remove impl Foo for .. in favor of auto trait Foo 2018-01-13 18:48:00 +03:00
rustc rustc: Load the rustc_trans crate at runtime 2018-01-27 19:16:21 -08:00
rustllvm rustc: Upgrade to LLVM 6 2018-02-09 17:13:14 -08:00
test Auto merge of #47828 - alexcrichton:llvm-6, r=nikomatsakis 2018-02-10 02:52:12 +00:00
tools Convert python script to rust 2018-02-08 10:53:09 +01:00
Cargo.lock Convert python script to rust 2018-02-08 10:53:09 +01:00
Cargo.toml Convert python script to rust 2018-02-08 10:53:09 +01:00
stage0.txt