]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agoAuto merge of #47804 - retep007:recursive-requirements, r=pnkfelix
bors [Tue, 13 Feb 2018 00:14:11 +0000 (00:14 +0000)]
Auto merge of #47804 - retep007:recursive-requirements, r=pnkfelix

Optimized error reporting for recursive requirements #47720

Fixes #47720

6 years agoAuto merge of #47843 - estebank:teach, r=nikomatsakis
bors [Mon, 12 Feb 2018 09:38:40 +0000 (09:38 +0000)]
Auto merge of #47843 - estebank:teach, r=nikomatsakis

Add `-Zteach` documentation

Add extra inline documentation to E0019, E0016, E0013, E0396, E0017,
E0018, E0010, E0022, E0030, E0029, E0033, E0026 and E0027.

Follow up to #47652.

6 years agoAuto merge of #48144 - kennytm:reduce-musl-test-size, r=Mark-Simulacrum
bors [Mon, 12 Feb 2018 06:43:24 +0000 (06:43 +0000)]
Auto merge of #48144 - kennytm:reduce-musl-test-size, r=Mark-Simulacrum

Compiletest: delete the compiled program once its test is done.

Reduces CI disk usage which prevents #48118 from succeeding.

6 years agoDelete executables if the test ran successfully.
Mark Simulacrum [Sun, 11 Feb 2018 23:27:33 +0000 (16:27 -0700)]
Delete executables if the test ran successfully.

This isn't a perfect heuristic, but since the amount of run-fail tests
is far lower than run-pass tests for now, it should be sufficient to
ensure that we don't run into CI limits. This makes it possible to run
the test binary manually (e.g., under gdb/lldb) if it failed to attempt
to find out why.

6 years agocompiletest: Delete the executable immediately after running.
kennytm [Sun, 11 Feb 2018 19:04:43 +0000 (03:04 +0800)]
compiletest: Delete the executable immediately after running.

This should save a lot of space on musl test cases (whose standard library
are linked statically).

6 years agoAuto merge of #47752 - mark-i-m:at-most-once-rep, r=nikomatsakis
bors [Sun, 11 Feb 2018 18:11:01 +0000 (18:11 +0000)]
Auto merge of #47752 - mark-i-m:at-most-once-rep, r=nikomatsakis

Implement `?` macro repetition

See rust-lang/rfcs#2298 (with disposition merge)

6 years agoAuto merge of #47614 - dotdash:x86_64_sysv_ffi, r=eddyb
bors [Sun, 11 Feb 2018 15:10:46 +0000 (15:10 +0000)]
Auto merge of #47614 - dotdash:x86_64_sysv_ffi, r=eddyb

Fix oversized loads on x86_64 SysV FFI calls

The x86_64 SysV ABI should use exact sizes for small structs passed in
registers, i.e. a struct that occupies 3 bytes should use an i24,
instead of the i32 it currently uses.

Refs #45543

6 years agoAuto merge of #47657 - algesten:save-analysis-impls, r=nrc
bors [Sun, 11 Feb 2018 05:29:20 +0000 (05:29 +0000)]
Auto merge of #47657 - algesten:save-analysis-impls, r=nrc

Emit data::Impl in save-analysis

As discussed on [internals.rust-lang](https://internals.rust-lang.org/t/rustdoc2-rls-analysis-and-the-compiler-help-wanted/6592/5), this PR emits `rls-data::Impl` in the save-analysis.

A number of questions are outstanding:

- [x] A few `???` around row 356. We need to discuss what goes here, if anything.
- [ ] ~~Deriving `id` for impl using hashing. Is this going to clash with rustc defids?~~
- [ ] ~~Deriving `id` for impl using hashing. Is the conversion from 64 bit -> 32 bit problematic?~~
- [x] Need a new rls-data with an `id` field in `Impl` struct.
- [ ] ~~Need a new rls-data which `derive` `Hash` for `ImplKind` enum.~~

6 years agoAuto merge of #48092 - eddyb:discriminate-the-void, r=nikomatsakis
bors [Sun, 11 Feb 2018 02:42:19 +0000 (02:42 +0000)]
Auto merge of #48092 - eddyb:discriminate-the-void, r=nikomatsakis

 rustc_mir: insert a dummy access to places being matched on, when building MIR.

Fixes #47412 by adding a `_dummy = Discriminant(place)` before each `match place {...}`.

r? @nikomatsakis

6 years agoAuto merge of #47286 - Aaronepower:master, r=Mark-Simulacrum
bors [Sat, 10 Feb 2018 23:50:18 +0000 (23:50 +0000)]
Auto merge of #47286 - Aaronepower:master, r=Mark-Simulacrum

Update RELEASES.md for 1.24.0

[rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)

6 years agoUpdate release notes for 1.24.0
Aaron Power [Tue, 9 Jan 2018 01:38:58 +0000 (01:38 +0000)]
Update release notes for 1.24.0

6 years agoAuto merge of #48113 - kennytm:rollup, r=kennytm
bors [Sat, 10 Feb 2018 19:48:20 +0000 (19:48 +0000)]
Auto merge of #48113 - kennytm:rollup, r=kennytm

Rollup of 20 pull requests

- Successful merges: #47790, #47835, #47854, #48015, #48047, #48051, #48058, #48059, #48064, #48078, #48080, #48086, #48098, #48101, #48107, #48100, #48085, #48120, #48124, #47547
- Failed merges:

6 years agoRollup merge of #47547 - varkor:infinite-iterators-warning-doc, r=frewsxcv
kennytm [Sat, 10 Feb 2018 19:39:53 +0000 (03:39 +0800)]
Rollup merge of #47547 - varkor:infinite-iterators-warning-doc, r=frewsxcv

Document the behaviour of infinite iterators on potentially-computable methods

It’s not entirely clear from the current documentation what behaviour
calling a method such as `min` on an infinite iterator like `RangeFrom`
is. One might expect this to terminate, but in fact, for infinite
iterators, `min` is always nonterminating (at least in the standard
library). This adds a quick note about this behaviour for clarification.

6 years agoRollup merge of #48124 - alexcrichton:clean-up-debugging, r=kennytm
kennytm [Sat, 10 Feb 2018 16:53:47 +0000 (00:53 +0800)]
Rollup merge of #48124 - alexcrichton:clean-up-debugging, r=kennytm

Explain unusual debugging code in librustc

Introduced in #47828 to help track down some bugs, it landed a bit hastily so
this is intended on cleaning it up a bit.

6 years agoRollup merge of #48120 - matthiaskrgr:typos_src_1, r=alexcrichton
kennytm [Sat, 10 Feb 2018 16:53:05 +0000 (00:53 +0800)]
Rollup merge of #48120 - matthiaskrgr:typos_src_1, r=alexcrichton

fix typos in src/{bootstrap,ci,etc,lib{backtrace,core,fmt_macros}}

via codespell

6 years agoRollup merge of #48085 - alexcrichton:update-dlmalloc, r=Mark-Simulacrum
kennytm [Sat, 10 Feb 2018 16:51:56 +0000 (00:51 +0800)]
Rollup merge of #48085 - alexcrichton:update-dlmalloc, r=Mark-Simulacrum

Update the dlmalloc submodule

A bug was recently fixed in dlmalloc which meant that released memory to the
system accidentally wasn't getting reused, causing programs to be far slower
than they should be!

6 years agoExplain unusual debugging code in librustc
Alex Crichton [Sat, 10 Feb 2018 15:03:35 +0000 (07:03 -0800)]
Explain unusual debugging code in librustc

Introduced in #47828 to help track down some bugs, it landed a bit hastily so
this is intended on cleaning it up a bit.

6 years agoUpdate the dlmalloc submodule
Alex Crichton [Fri, 9 Feb 2018 04:45:45 +0000 (20:45 -0800)]
Update the dlmalloc submodule

A bug was recently fixed in dlmalloc which meant that released memory to the
system accidentally wasn't getting reused, causing programs to be far slower
than they should be!

6 years agofix typos in src/{bootstrap,ci,etc,lib{backtrace,core,fmt_macros}}
Matthias Krüger [Sat, 10 Feb 2018 11:22:57 +0000 (12:22 +0100)]
fix typos in src/{bootstrap,ci,etc,lib{backtrace,core,fmt_macros}}

6 years agoRollup merge of #48100 - Mark-Simulacrum:fetch-nand, r=alexcrichton
kennytm [Sat, 10 Feb 2018 06:26:57 +0000 (14:26 +0800)]
Rollup merge of #48100 - Mark-Simulacrum:fetch-nand, r=alexcrichton

Add fetch_nand to atomics

I think this is all fine but I have little familiarity with the atomic code (or libcore in general) so I may have accidentally done something wrong here...

cc #13226 (the tracking issue)

6 years agoRollup merge of #48107 - matthiaskrgr:typo__substract_to_subtract, r=kennytm
kennytm [Sat, 10 Feb 2018 06:24:10 +0000 (14:24 +0800)]
Rollup merge of #48107 - matthiaskrgr:typo__substract_to_subtract, r=kennytm

fix typo: substract -> subtract

6 years agoRollup merge of #48101 - Mark-Simulacrum:new-books, r=steveklabnik
kennytm [Sat, 10 Feb 2018 06:24:08 +0000 (14:24 +0800)]
Rollup merge of #48101 - Mark-Simulacrum:new-books, r=steveklabnik

Update books for next release

r? @steveklabnik

6 years agoRollup merge of #48098 - alexcrichton:fix-i686-dist-bootstrap, r=Mark-Simulacrum
kennytm [Sat, 10 Feb 2018 06:24:07 +0000 (14:24 +0800)]
Rollup merge of #48098 - alexcrichton:fix-i686-dist-bootstrap, r=Mark-Simulacrum

ci: Actually bootstrap on i686 dist

Right now the `--build` option was accidentally omitted, so we're bootstraping
from `x86_64` to `i686`. In addition to being slower (more compiles) that's not
actually bootstrapping!

6 years agoRollup merge of #48086 - Zoxc:gen-fix, r=nikomatsakis
kennytm [Sat, 10 Feb 2018 06:24:06 +0000 (14:24 +0800)]
Rollup merge of #48086 - Zoxc:gen-fix, r=nikomatsakis

Fix visitation order of calls so that it matches execution order. Fixes #48048

r? @nikomatsakis

6 years agoRollup merge of #48080 - GuillaumeGomez:mobile-docs-fixes, r=QuietMisdreavus
kennytm [Sat, 10 Feb 2018 06:24:05 +0000 (14:24 +0800)]
Rollup merge of #48080 - GuillaumeGomez:mobile-docs-fixes, r=QuietMisdreavus

Hide theme button under menu in mobile mode and fix top margin issue …

Fixes #48060.

r? @QuietMisdreavus

6 years agoRollup merge of #48078 - alexcrichton:fix-required-const-and-proc-macro, r=eddyb
kennytm [Sat, 10 Feb 2018 06:24:04 +0000 (14:24 +0800)]
Rollup merge of #48078 - alexcrichton:fix-required-const-and-proc-macro, r=eddyb

Disallow function pointers to #[rustc_args_required_const]

This commit disallows acquiring a function pointer to functions tagged as
`#[rustc_args_required_const]`. This is intended to be used as future-proofing
for the stdsimd crate to avoid taking a function pointer to any intrinsic which
has a hard requirement that one of the arguments is a constant value.

Note that the first commit here isn't related specifically to this feature, but was necessary to get this working in stdsimd!

6 years agoRollup merge of #48064 - Manishearth:intra-doc-bail, r=QuietMisdreavus
kennytm [Sat, 10 Feb 2018 06:24:03 +0000 (14:24 +0800)]
Rollup merge of #48064 - Manishearth:intra-doc-bail, r=QuietMisdreavus

intra-doc-links: bail early for linky things

r? @QuietMisdreavus

6 years agoRollup merge of #48059 - alexcrichton:sccachebs, r=Mark-Simulacrum
kennytm [Sat, 10 Feb 2018 06:24:02 +0000 (14:24 +0800)]
Rollup merge of #48059 - alexcrichton:sccachebs, r=Mark-Simulacrum

rustbuild: Pass `ccache` to build scripts

Right now the ccache setting is only used for LLVM, but this tweaks it to also
be used for build scripts so C++ builds like `librustc_llvm` can be a bit
speedier.

6 years agoRollup merge of #48058 - cuviper:binaryen-gcc8, r=alexcrichton
kennytm [Sat, 10 Feb 2018 06:24:00 +0000 (14:24 +0800)]
Rollup merge of #48058 - cuviper:binaryen-gcc8, r=alexcrichton

Update binaryen to fix -Werror with GCC 8

r? @alexcrichton

6 years agoRollup merge of #48051 - ollie27:rustdoc_fn_unit_return, r=QuietMisdreavus
kennytm [Sat, 10 Feb 2018 06:23:59 +0000 (14:23 +0800)]
Rollup merge of #48051 - ollie27:rustdoc_fn_unit_return, r=QuietMisdreavus

rustdoc: Hide `-> ()` in cross crate inlined Fn* bounds

6 years agoRollup merge of #48047 - etaoins:fix-ice-for-mismatched-args-on-target-without-span...
kennytm [Sat, 10 Feb 2018 06:23:58 +0000 (14:23 +0800)]
Rollup merge of #48047 - etaoins:fix-ice-for-mismatched-args-on-target-without-span, r=estebank

Fix ICE for mismatched args on target without span

Commit 7ed00caacc improved our error reporting by including the target function in our error messages when there is an argument count mismatch. A simple example from the UI tests is:

```
error[E0593]: function is expected to take a single 2-tuple as argument, but it takes 0 arguments
  --> $DIR/closure-arg-count.rs:32:53
   |
32 |     let _it = vec![1, 2, 3].into_iter().enumerate().map(foo);
   |                                                     ^^^ expected function that takes a single 2-tuple as argument
...
44 | fn foo() {}
   | -------- takes 0 arguments
```

However, this assumed the target span was always available. This does not hold true if the target function is in `std` or another crate. A simple example from #48046 is assigning `str::split` to a function type with a different number of arguments.

Fix by omitting all of the labels and suggestions related to the target span when it's not found.

Fixes #48046

r? @estebank

6 years agoRollup merge of #48015 - o01eg:disableable-installation, r=alexcrichton
kennytm [Sat, 10 Feb 2018 06:23:57 +0000 (14:23 +0800)]
Rollup merge of #48015 - o01eg:disableable-installation, r=alexcrichton

Customizable extended tools

This PR adds `build.tools` option to manage installation of extended rust tools.

By default it doesn't change installation. All tools are built and `rls` and `rustfmt` allowed to fail installation.

If some set of tools chosen only those tools are built and installed without any fails allowed.

It solves some slotting issues with extended build enabled: https://bugs.gentoo.org/show_bug.cgi?id=645498

6 years agoRollup merge of #47854 - varkor:create-out-dir, r=pnkfelix
kennytm [Sat, 10 Feb 2018 06:23:56 +0000 (14:23 +0800)]
Rollup merge of #47854 - varkor:create-out-dir, r=pnkfelix

Create a directory for --out-dir if it does not already exist

Currently if `--out-dir` is set to a non-existent directory, the compiler will throw unfriendly messages like `error: could not write output to subdir/example.crate.allocator.rcgu.o: No such file or
directory`, which, while not completely unreadable, isn’t very user-friendly either. This change creates the directory automatically if it does not yet exist.

6 years agoRollup merge of #47835 - Mark-Simulacrum:remove-data-structs, r=nikomatsakis
kennytm [Sat, 10 Feb 2018 06:23:54 +0000 (14:23 +0800)]
Rollup merge of #47835 - Mark-Simulacrum:remove-data-structs, r=nikomatsakis

Remove unused data structures

Cleanup; as far as I can tell the compiler no longer uses these.

6 years agoRollup merge of #47790 - tinaun:patch-1, r=sfackler
kennytm [Sat, 10 Feb 2018 06:23:53 +0000 (14:23 +0800)]
Rollup merge of #47790 - tinaun:patch-1, r=sfackler

derive PartialEq and Eq for `ParseCharError`

unlike the other Parse*Error types, ParseCharError didn't have these implemented for whatever reason

6 years agoAuto merge of #47828 - alexcrichton:llvm-6, r=nikomatsakis
bors [Sat, 10 Feb 2018 02:52:12 +0000 (02:52 +0000)]
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

6 years agoEmit data::Impl in save-analysis
Martin Algesten [Fri, 2 Feb 2018 07:29:59 +0000 (08:29 +0100)]
Emit data::Impl in save-analysis

6 years agorustc: Upgrade to LLVM 6
Alex Crichton [Mon, 22 Jan 2018 22:23:30 +0000 (14:23 -0800)]
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 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@27174447533), [another change to pass manager
order](rust-lang/llvm@c782febb7b9), some [compile fixes for
sparc](rust-lang/llvm@1a83de63c42), and some [fixes for
solaris](rust-lang/llvm@c2bfe0abb).

[patches4]: https://github.com/rust-lang/llvm/compare/5401fdf23...rust-llvm-release-4-0-1
[backport]: https://github.com/rust-lang/llvm/commit/5c54c252db
[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

6 years agofix typo: substract -> subtract.
Matthias Krüger [Fri, 9 Feb 2018 21:18:06 +0000 (22:18 +0100)]
fix typo: substract -> subtract.

6 years agoAdd fetch_nand.
Mark Simulacrum [Fri, 9 Feb 2018 18:19:52 +0000 (11:19 -0700)]
Add fetch_nand.

cc #13226 (the tracking issue)

6 years agorustc_mir: insert a dummy access to places being matched on, when building MIR.
Eduard-Mihai Burtescu [Fri, 9 Feb 2018 14:49:38 +0000 (16:49 +0200)]
rustc_mir: insert a dummy access to places being matched on, when building MIR.

6 years agoUpdate books for next release
Mark Simulacrum [Fri, 9 Feb 2018 18:27:47 +0000 (11:27 -0700)]
Update books for next release

6 years agoci: Actually bootstrap on i686 dist
Alex Crichton [Fri, 9 Feb 2018 18:12:32 +0000 (10:12 -0800)]
ci: Actually bootstrap on i686 dist

Right now the `--build` option was accidentally omitted, so we're bootstraping
from `x86_64` to `i686`. In addition to being slower (more compiles) that's not
actually bootstrapping!

6 years agoAuto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakis
bors [Fri, 9 Feb 2018 13:04:17 +0000 (13:04 +0000)]
Auto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakis

[NLL] Add false edges out of infinite loops

Resolves #46036 by adding a `cleanup` member to the `FalseEdges` terminator kind. There's also a small doc fix to one of the other comments in `into.rs` which I can pull out in to another PR if desired =)

This PR should pass CI but the test suite has been relatively unstable on my system so I'm not 100% sure.

r? @nikomatsakis

6 years agoFix visitation order of calls so that it matches execution order. Fixes #48048
John Kåre Alsaker [Fri, 9 Feb 2018 08:48:54 +0000 (09:48 +0100)]
Fix visitation order of calls so that it matches execution order. Fixes #48048

6 years agoAuto merge of #47761 - GuillaumeGomez:test-themes, r=Mark-Simulacrum
bors [Fri, 9 Feb 2018 08:23:53 +0000 (08:23 +0000)]
Auto merge of #47761 - GuillaumeGomez:test-themes, r=Mark-Simulacrum

Test themes

r? @QuietMisdreavus

cc @Mark-Simulacrum

6 years agoFix the test
Mark Mansi [Fri, 9 Feb 2018 05:00:38 +0000 (23:00 -0600)]
Fix the test

6 years agoUpdate feature gate test
Mark Mansi [Fri, 9 Feb 2018 04:00:51 +0000 (22:00 -0600)]
Update feature gate test

6 years agoAuto merge of #47489 - pnkfelix:limit-2pb-issue-46747, r=nikomatsakis
bors [Fri, 9 Feb 2018 02:26:43 +0000 (02:26 +0000)]
Auto merge of #47489 - pnkfelix:limit-2pb-issue-46747, r=nikomatsakis

NLL: Limit two-phase borrows to autoref-introduced borrows

This imposes a restriction on two-phase borrows so that it only applies to autoref-introduced borrows.

The goal is to ensure that our initial deployment of two-phase borrows is very conservative. We want it to still cover the `v.push(v.len());` example, but we do not want it to cover cases like `let imm = &v; let mu = &mut v; mu.push(imm.len());`

(Why do we want it to be conservative? Because when you are not conservative, then the results you get, at least with the current analysis, are tightly coupled to details of the MIR construction that we would rather remain invisible to the end user.)

Fix #46747

I decided, for this PR, to add a debug-flag `-Z two-phase-beyond-autoref`, to re-enable the more general approach. But my intention here is *not* that we would eventually turn on that debugflag by default; the main reason I added it was that I thought it was useful for writing tests to be able to write source that looks like desugared MIR.

6 years agoUse the right tracking issue
Mark Mansi [Fri, 9 Feb 2018 00:40:00 +0000 (18:40 -0600)]
Use the right tracking issue

6 years agorustbuild: Pass `ccache` to build scripts
Alex Crichton [Wed, 7 Feb 2018 20:56:04 +0000 (12:56 -0800)]
rustbuild: Pass `ccache` to build scripts

Right now the ccache setting is only used for LLVM, but this tweaks it to also
be used for build scripts so C++ builds like `librustc_llvm` can be a bit
speedier.

6 years agoHide theme button under menu in mobile mode and fix top margin issue (in mobile too)
Guillaume Gomez [Thu, 8 Feb 2018 22:47:49 +0000 (23:47 +0100)]
Hide theme button under menu in mobile mode and fix top margin issue (in mobile too)

6 years agoDisallow function pointers to #[rustc_args_required_const]
Alex Crichton [Thu, 8 Feb 2018 21:11:13 +0000 (13:11 -0800)]
Disallow function pointers to #[rustc_args_required_const]

This commit disallows acquiring a function pointer to functions tagged as
`#[rustc_args_required_const]`. This is intended to be used as future-proofing
for the stdsimd crate to avoid taking a function pointer to any intrinsic which
has a hard requirement that one of the arguments is a constant value.

6 years agoAdd `rustc_args_required_const` to the feature whitelist
Alex Crichton [Thu, 8 Feb 2018 20:48:25 +0000 (12:48 -0800)]
Add `rustc_args_required_const` to the feature whitelist

Unfortunately left out it means that when the `#![feature(proc_macro)]` flag is
in effect it fails to find `rustc_args_required_const` for expansion. This
version, however, is verified to work with stdsimd's requirements!

6 years agoMove some E0XXX to `ui`
Esteban Küber [Thu, 8 Feb 2018 03:35:35 +0000 (19:35 -0800)]
Move some E0XXX to `ui`

6 years agorustc: don't ICE when using Rvalue::Discriminant on a non-ADT.
Eduard-Mihai Burtescu [Thu, 8 Feb 2018 15:15:41 +0000 (17:15 +0200)]
rustc: don't ICE when using Rvalue::Discriminant on a non-ADT.

6 years agoFix oversized loads on x86_64 SysV FFI calls
Björn Steinbrink [Sat, 20 Jan 2018 16:09:55 +0000 (17:09 +0100)]
Fix oversized loads on x86_64 SysV FFI calls

The x86_64 SysV ABI should use exact sizes for small structs passed in
registers, i.e. a struct that occupies 3 bytes should use an i24,
instead of the i32 it currently uses.

Refs #45543

6 years agoFleshed out the test a lot more.
Felix S. Klock II [Tue, 6 Feb 2018 15:47:38 +0000 (16:47 +0100)]
Fleshed out the test a lot more.

6 years agoTest that autoref'ing beyond method receivers does not leak into two-phase borrows.
Felix S. Klock II [Tue, 6 Feb 2018 11:48:36 +0000 (12:48 +0100)]
Test that autoref'ing beyond method receivers does not leak into two-phase borrows.

6 years agoAdd `AutoBorrowMutability`; its like `hir::Mutability` but w/ two-phase borrow info...
Felix S. Klock II [Tue, 23 Jan 2018 12:31:11 +0000 (13:31 +0100)]
Add `AutoBorrowMutability`; its like `hir::Mutability`  but w/ two-phase borrow info too.

Namely, the mutable borrows also carries a flag indicating whether
they should support two-phase borrows.

This allows us to thread down, from the point of the borrow's
introduction, whether the particular adjustment that created it is one
that yields two-phase mutable borrows.

6 years agoRestrict two-phase borrows to solely borrows introduced via autoref.
Felix S. Klock II [Tue, 16 Jan 2018 09:52:52 +0000 (10:52 +0100)]
Restrict two-phase borrows to solely borrows introduced via autoref.

Added `-Z two-phase-beyond-autoref` to bring back old behavior (mainly
to allow demonstration of desugared examples).

Updated tests to use aforementioned flag when necessary. (But in each
case where I added the flag, I made sure to also include a revision
without the flag so that one can readily see what the actual behavior
we expect is for the initial deployment of NLL.)

6 years agoEncode (in MIR) whether borrows are explicit in source or arise due to autoref.
Felix S. Klock II [Mon, 15 Jan 2018 11:47:26 +0000 (12:47 +0100)]
Encode (in MIR) whether borrows are explicit in source or arise due to autoref.

This is foundation for issue 46747 (limit two-phase borrows to method-call autorefs).

6 years agoConvert python script to rust
Guillaume Gomez [Mon, 5 Feb 2018 22:43:53 +0000 (23:43 +0100)]
Convert python script to rust

6 years agoPass themes folder as parameter
Guillaume Gomez [Sat, 27 Jan 2018 21:12:28 +0000 (22:12 +0100)]
Pass themes folder as parameter

6 years agoAdd tests for themes
Guillaume Gomez [Thu, 25 Jan 2018 23:44:52 +0000 (00:44 +0100)]
Add tests for themes

6 years agoImprove output a bit in case of error
Guillaume Gomez [Thu, 25 Jan 2018 23:43:57 +0000 (00:43 +0100)]
Improve output a bit in case of error

6 years agoAdd test when trying to add new theme
Guillaume Gomez [Thu, 25 Jan 2018 22:31:48 +0000 (23:31 +0100)]
Add test when trying to add new theme

6 years agoHandle comments in css selector and add tests
Guillaume Gomez [Thu, 25 Jan 2018 22:23:09 +0000 (23:23 +0100)]
Handle comments in css selector and add tests

6 years agoFix missing rules for dark.css
Guillaume Gomez [Thu, 25 Jan 2018 20:59:54 +0000 (21:59 +0100)]
Fix missing rules for dark.css

6 years agoget differences
Guillaume Gomez [Thu, 25 Jan 2018 20:58:10 +0000 (21:58 +0100)]
get differences

6 years agoAdd theme tests
Guillaume Gomez [Tue, 23 Jan 2018 23:38:41 +0000 (00:38 +0100)]
Add theme tests

6 years agoAuto merge of #48057 - scottmcm:less-match-more-compare, r=dtolnay
bors [Thu, 8 Feb 2018 06:38:30 +0000 (06:38 +0000)]
Auto merge of #48057 - scottmcm:less-match-more-compare, r=dtolnay

Simplify RangeInclusive::next[_back]

`match`ing on an `Option<Ordering>` seems cause some confusion for LLVM; switching to just using comparison operators removes a few jumps from the simple `for` loops I was trying.

cc https://github.com/rust-lang/rust/issues/45222 https://github.com/rust-lang/rust/issues/28237#issuecomment-363706510

Example:
```rust
#[no_mangle]
pub fn coresum(x: std::ops::RangeInclusive<u64>) -> u64 {
    let mut sum = 0;
    for i in x {
        sum += i ^ (i-1);
    }
    sum
}
```
Today:
```asm
coresum:
    xor r8d, r8d
    mov r9, -1
    xor eax, eax
    jmp .LBB0_1
.LBB0_4:
    lea rcx, [rdi - 1]
    xor rcx, rdi
    add rax, rcx
    mov rsi, rdx
    mov rdi, r10
.LBB0_1:
    cmp rdi, rsi
    mov ecx, 1
    cmovb   rcx, r9
    cmove   rcx, r8
    test    rcx, rcx
    mov edx, 0
    mov r10d, 1
    je  .LBB0_4         // 1
    cmp rcx, -1
    jne .LBB0_5         // 2
    lea r10, [rdi + 1]
    mov rdx, rsi
    jmp .LBB0_4         // 3
.LBB0_5:
    ret
```
With this PR:
```asm
coresum:
cmp rcx, rdx
jbe .LBB0_2
xor eax, eax
ret
.LBB0_2:
xor r8d, r8d
mov r9d, 1
xor eax, eax
.p2align 4, 0x90
.LBB0_3:
lea r10, [rcx + 1]
cmp rcx, rdx
cmovae rdx, r8
cmovae r10, r9
lea r11, [rcx - 1]
xor r11, rcx
add rax, r11
mov rcx, r10
cmp r10, rdx
jbe .LBB0_3         // Just this
ret
```

<details><summary>Though using internal iteration (`.map(|i| i ^ (i-1)).sum()`) is still shorter to type, and lets the compiler unroll it</summary>

```asm
coresum_inner:
.Lcfi0:
.seh_proc coresum_inner
sub rsp, 168
.Lcfi1:
.seh_stackalloc 168
vmovdqa xmmword ptr [rsp + 144], xmm15
.Lcfi2:
.seh_savexmm 15, 144
vmovdqa xmmword ptr [rsp + 128], xmm14
.Lcfi3:
.seh_savexmm 14, 128
vmovdqa xmmword ptr [rsp + 112], xmm13
.Lcfi4:
.seh_savexmm 13, 112
vmovdqa xmmword ptr [rsp + 96], xmm12
.Lcfi5:
.seh_savexmm 12, 96
vmovdqa xmmword ptr [rsp + 80], xmm11
.Lcfi6:
.seh_savexmm 11, 80
vmovdqa xmmword ptr [rsp + 64], xmm10
.Lcfi7:
.seh_savexmm 10, 64
vmovdqa xmmword ptr [rsp + 48], xmm9
.Lcfi8:
.seh_savexmm 9, 48
vmovdqa xmmword ptr [rsp + 32], xmm8
.Lcfi9:
.seh_savexmm 8, 32
vmovdqa xmmword ptr [rsp + 16], xmm7
.Lcfi10:
.seh_savexmm 7, 16
vmovdqa xmmword ptr [rsp], xmm6
.Lcfi11:
.seh_savexmm 6, 0
.Lcfi12:
.seh_endprologue
cmp rdx, rcx
jae .LBB1_2
xor eax, eax
jmp .LBB1_13
.LBB1_2:
mov r8, rdx
sub r8, rcx
jbe .LBB1_3
cmp r8, 7
jbe .LBB1_5
mov rax, r8
and rax, -8
mov r9, r8
and r9, -8
je .LBB1_5
add rax, rcx
vmovq xmm0, rcx
vpshufd xmm0, xmm0, 68
mov ecx, 1
vmovq xmm1, rcx
vpslldq xmm1, xmm1, 8
vpaddq xmm1, xmm0, xmm1
vpxor xmm0, xmm0, xmm0
vpcmpeqd xmm11, xmm11, xmm11
vmovdqa xmm12, xmmword ptr [rip + __xmm@00000000000000010000000000000001]
vmovdqa xmm13, xmmword ptr [rip + __xmm@00000000000000030000000000000003]
vmovdqa xmm14, xmmword ptr [rip + __xmm@00000000000000050000000000000005]
vmovdqa xmm15, xmmword ptr [rip + __xmm@00000000000000080000000000000008]
mov rcx, r9
vpxor xmm4, xmm4, xmm4
vpxor xmm5, xmm5, xmm5
vpxor xmm6, xmm6, xmm6
.p2align 4, 0x90
.LBB1_9:
vpaddq xmm7, xmm1, xmmword ptr [rip + __xmm@00000000000000020000000000000002]
vpaddq xmm9, xmm1, xmmword ptr [rip + __xmm@00000000000000040000000000000004]
vpaddq xmm10, xmm1, xmmword ptr [rip + __xmm@00000000000000060000000000000006]
vpaddq xmm8, xmm1, xmm12
vpxor xmm7, xmm8, xmm7
vpaddq xmm2, xmm1, xmm13
vpxor xmm8, xmm2, xmm9
vpaddq xmm3, xmm1, xmm14
vpxor xmm3, xmm3, xmm10
vpaddq xmm2, xmm1, xmm11
vpxor xmm2, xmm2, xmm1
vpaddq xmm0, xmm2, xmm0
vpaddq xmm4, xmm7, xmm4
vpaddq xmm5, xmm8, xmm5
vpaddq xmm6, xmm3, xmm6
vpaddq xmm1, xmm1, xmm15
add rcx, -8
jne .LBB1_9
vpaddq xmm0, xmm4, xmm0
vpaddq xmm0, xmm5, xmm0
vpaddq xmm0, xmm6, xmm0
vpshufd xmm1, xmm0, 78
vpaddq xmm0, xmm0, xmm1
vmovq r10, xmm0
cmp r8, r9
jne .LBB1_6
jmp .LBB1_11
.LBB1_3:
xor r10d, r10d
jmp .LBB1_12
.LBB1_5:
xor r10d, r10d
mov rax, rcx
.p2align 4, 0x90
.LBB1_6:
lea rcx, [rax - 1]
xor rcx, rax
inc rax
add r10, rcx
cmp rdx, rax
jne .LBB1_6
.LBB1_11:
mov rcx, rdx
.LBB1_12:
lea rax, [rcx - 1]
xor rax, rcx
add rax, r10
.LBB1_13:
vmovaps xmm6, xmmword ptr [rsp]
vmovaps xmm7, xmmword ptr [rsp + 16]
vmovaps xmm8, xmmword ptr [rsp + 32]
vmovaps xmm9, xmmword ptr [rsp + 48]
vmovaps xmm10, xmmword ptr [rsp + 64]
vmovaps xmm11, xmmword ptr [rsp + 80]
vmovaps xmm12, xmmword ptr [rsp + 96]
vmovaps xmm13, xmmword ptr [rsp + 112]
vmovaps xmm14, xmmword ptr [rsp + 128]
vmovaps xmm15, xmmword ptr [rsp + 144]
add rsp, 168
ret
.seh_handlerdata
.section .text,"xr",one_only,coresum_inner
.Lcfi13:
.seh_endproc
```

</details>

6 years agoAdd `-Zteach` documentation
Esteban Küber [Mon, 29 Jan 2018 05:44:04 +0000 (21:44 -0800)]
Add `-Zteach` documentation

Add extra inline documentation to E0019, E0016, E0013, E0396, E0017,
E0018, E0010, E0022, E0030, E0029, E0033, E0026 and E0027.

6 years agoFix tests for MIR loop lowering
bobtwinkles [Thu, 8 Feb 2018 01:00:54 +0000 (20:00 -0500)]
Fix tests for MIR loop lowering

Fixes the hash test to recognize that MirValidated can change when changing
around labels, and add a new test that makes sure we're lowering loop statements
correctly.

6 years agointra-doc-links: bail early for linky things
Manish Goregaokar [Thu, 8 Feb 2018 00:35:40 +0000 (16:35 -0800)]
intra-doc-links: bail early for linky things

6 years agoUpdate binaryen to fix -Werror with GCC 8
Josh Stone [Wed, 7 Feb 2018 20:20:25 +0000 (12:20 -0800)]
Update binaryen to fix -Werror with GCC 8

6 years ago[ci skip] Generate false edges from loop_block
bobtwinkles [Wed, 7 Feb 2018 19:25:08 +0000 (14:25 -0500)]
[ci skip] Generate false edges from loop_block

As opposed to using weirdness involving pretending the body block
is the loop block. This does not pass tests

This commit is [ci skip] because I know it doesn't pass tests yet.
Somehow this commit introduces nondeterminism into the handling of
loops.

6 years agoSimplify RangeInclusive::next[_back]
Scott McMurray [Wed, 7 Feb 2018 19:11:54 +0000 (11:11 -0800)]
Simplify RangeInclusive::next[_back]

`match`ing on an `Option<Ordering>` seems cause some confusion for LLVM; switching to just using comparison operators removes a few jumps from the simple `for` loops I was trying.

6 years agoRefactor checks on list of extended tools.
O01eg [Wed, 7 Feb 2018 17:57:02 +0000 (20:57 +0300)]
Refactor checks on list of extended tools.

6 years agoAuto merge of #48053 - Manishearth:rollup, r=Manishearth
bors [Wed, 7 Feb 2018 17:51:52 +0000 (17:51 +0000)]
Auto merge of #48053 - Manishearth:rollup, r=Manishearth

Rollup of 10 pull requests

- Successful merges: #47613, #47631, #47810, #47883, #47922, #47944, #48014, #48018, #48020, #48028
- Failed merges:

6 years agoRollup merge of #48028 - zackmdavis:and_the_span_of_the_unknown_type, r=estebank
Manish Goregaokar [Wed, 7 Feb 2018 16:30:58 +0000 (08:30 -0800)]
Rollup merge of #48028 - zackmdavis:and_the_span_of_the_unknown_type, r=estebank

correct E0619 span re method call receivers whose type must be known

Previously, when the type of a method receiver could not be determined,
the error message would, potentially confusingly, highlight the span of
the entire method call.

![unknown_receiver_type](https://user-images.githubusercontent.com/1076988/35838930-a595b17c-0aa2-11e8-9364-6b8e2329f051.png)

Resolves #36598, resolves #42234.

6 years agoRollup merge of #48020 - RalfJung:type-alias-bounds, r=petrochenkov
Manish Goregaokar [Wed, 7 Feb 2018 16:30:57 +0000 (08:30 -0800)]
Rollup merge of #48020 - RalfJung:type-alias-bounds, r=petrochenkov

Warn about more ignored bounds in type aliases

It seems that all bounds in type aliases are entirely ignored, not just type bounds. This extends the warning appropriately.

I assume this should be made a hard error with the next epoch? I can't see any reason to accept these programs. (And suddenly enforcing these type bounds would be a breaking change.)

6 years agoRollup merge of #48018 - alexcrichton:require-const-arg, r=eddyb
Manish Goregaokar [Wed, 7 Feb 2018 16:30:56 +0000 (08:30 -0800)]
Rollup merge of #48018 - alexcrichton:require-const-arg, r=eddyb

rustc: Add `#[rustc_args_required_const]`

This commit adds a new unstable attribute to the compiler which requires that
arguments to a function are always provided as constants. The primary use case
for this is SIMD intrinsics where arguments are defined by vendors to be
constant and in LLVM they indeed must be constant as well.

For now this is mostly just a semantic guarantee in rustc that an argument is a
constant when invoked, phases like trans don't actually take advantage of it
yet. This means that we'll be able to use this in stdsimd but we won't be able
to remove the `constify_*` macros just yet. Hopefully soon though!

6 years agoRollup merge of #48014 - Manishearth:stealing-chickens-on-the-internet, r=nikomatsakis
Manish Goregaokar [Wed, 7 Feb 2018 16:30:54 +0000 (08:30 -0800)]
Rollup merge of #48014 - Manishearth:stealing-chickens-on-the-internet, r=nikomatsakis

Implement RFC 2052 (Epochs)

This adds -Zepochs and uses it for tyvar_behind_raw_pointer (#46906)

When we move this to --epoch=XXX, we'll need to gate the 2018 epoch on nightly, but not the 2015 one. I can make these changes here itself though it's kinda pointless given that the entire flag is nightly-only.

r? @nikomatsakis @aturon

cc #44581 (epoch tracking)
cc #46906 (tyvar_behind_raw_pointer)

6 years agoRollup merge of #47944 - oberien:unboundediterator-trustedlen, r=bluss
Manish Goregaokar [Wed, 7 Feb 2018 16:30:53 +0000 (08:30 -0800)]
Rollup merge of #47944 - oberien:unboundediterator-trustedlen, r=bluss

Implement TrustedLen for Take<Repeat> and Take<RangeFrom>

This will allow optimization of simple `repeat(x).take(n).collect()` iterators, which are currently not vectorized and have capacity checks.

This will only support a few aggregates on `Repeat` and `RangeFrom`, which might be enough for simple cases, but doesn't optimize more complex ones. Namely, Cycle, StepBy, Filter, FilterMap, Peekable, SkipWhile, Skip, FlatMap, Fuse and Inspect are not marked `TrustedLen` when the inner iterator is infinite.

Previous discussion can be found in #47082

r? @alexcrichton

6 years agoRollup merge of #47922 - zackmdavis:and_the_case_of_the_unused_field_pattern, r=estebank
Manish Goregaokar [Wed, 7 Feb 2018 16:30:52 +0000 (08:30 -0800)]
Rollup merge of #47922 - zackmdavis:and_the_case_of_the_unused_field_pattern, r=estebank

correct unused field pattern suggestions

![unused_field_pattern_local](https://user-images.githubusercontent.com/1076988/35662336-7a69488a-06cc-11e8-9901-8d22b5cf924f.png)

r? @estebank

6 years agoRollup merge of #47883 - yurydelendik:wasm-map, r=alexcrichton
Manish Goregaokar [Wed, 7 Feb 2018 16:30:51 +0000 (08:30 -0800)]
Rollup merge of #47883 - yurydelendik:wasm-map, r=alexcrichton

Export wasm source map when debug information is enabled

We use binaryen's linker to produce a wasm file (via s2wasm). The wasm writer has capabilities to export source maps. The pilot support for source maps is added to Firefox.

The produced source map contains references to the original file, that might require additional source map file processing to include / package original files with it.

/cc @alexcrichton

6 years agoRollup merge of #47810 - GuillaumeGomez:fix-theme-but-position, r=QuietMisdreavus
Manish Goregaokar [Wed, 7 Feb 2018 16:30:49 +0000 (08:30 -0800)]
Rollup merge of #47810 - GuillaumeGomez:fix-theme-but-position, r=QuietMisdreavus

Fix rendering issues on mobile

Fixes #47723

r? @QuietMisdreavus

6 years agoRollup merge of #47631 - SimonSapin:nonnull, r=alexcrichton
Manish Goregaokar [Wed, 7 Feb 2018 16:30:48 +0000 (08:30 -0800)]
Rollup merge of #47631 - SimonSapin:nonnull, r=alexcrichton

Add some APIs to ptr::NonNull and fix `since` attributes

This is a follow-up to its stabilization in https://github.com/rust-lang/rust/pull/46952. Tracking issue: https://github.com/rust-lang/rust/issues/27730.

* These trait impls are insta-stable: `Hash`, `PartialEq`, `Eq`, `PartialOrd` and `Ord`.
* The new `cast<U>() -> NonNull<U>`  method is `#[unstable]`. It was proposed in https://github.com/rust-lang/rust/pull/46952#issuecomment-359220010.

6 years agoRollup merge of #47613 - estebank:rustc_on_unimplemented, r=nikomatsakis
Manish Goregaokar [Wed, 7 Feb 2018 16:30:47 +0000 (08:30 -0800)]
Rollup merge of #47613 - estebank:rustc_on_unimplemented, r=nikomatsakis

Add filtering options to `rustc_on_unimplemented`

- Add filtering options to `rustc_on_unimplemented` for local traits, filtering on `Self` and type arguments.
- Add a way to provide custom notes.
- Tweak binops text.
- Add filter to detect wether `Self` is local or belongs to another crate.
- Add filter to `Iterator` diagnostic for `&str`.

Partly addresses #44755 with a different syntax, as a first approach. Fixes #46216, fixes #37522, CC #34297, #46806.

6 years agoAuto merge of #47957 - bobtwinkles:fix_mir_consts, r=nikomatsakis
bors [Wed, 7 Feb 2018 14:54:15 +0000 (14:54 +0000)]
Auto merge of #47957 - bobtwinkles:fix_mir_consts, r=nikomatsakis

[NLL] Improve DefiningTy::Const

Fixes #47590 by fixing the way DefiningTy represents constants. Previously, constants were represented using just the type of the variable. However, this will fail to capture early-bound regions as NLL inference vars, resulting in an ICE when we try to compute region VIDs a little bit later in the universal
region resolution process. (ref #47590)

6 years agorustdoc: Hide `-> ()` in cross crate inlined Fn* bounds
Oliver Middleton [Wed, 7 Feb 2018 13:14:37 +0000 (13:14 +0000)]
rustdoc: Hide `-> ()` in cross crate inlined Fn* bounds

6 years agoFix ICE for mismatched args on target without span
Ryan Cumming [Wed, 7 Feb 2018 07:34:45 +0000 (18:34 +1100)]
Fix ICE for mismatched args on target without span

Commit 7ed00caacc improved our error reporting by including the target
function in our error messages when there is an argument count mismatch.
A simple example from the UI tests is:

```
error[E0593]: function is expected to take a single 2-tuple as argument, but it takes 0 arguments
  --> $DIR/closure-arg-count.rs:32:53
   |
32 |     let _it = vec![1, 2, 3].into_iter().enumerate().map(foo);
   |                                                     ^^^ expected function that takes a single 2-tuple as argument
...
44 | fn foo() {}
   | -------- takes 0 arguments
```

However, this assumed the target span was always available. This does
not hold true if the target function is in `std` or another crate. A
simple example from #48046 is assigning `str::split` to a function type
with a different number of arguments.

Fix by removing all of the labels and suggestions related to the target
span when it's not found.

Fixes #48046

6 years agoUpdate trait-associated-const test to new format
bobtwinkles [Wed, 7 Feb 2018 05:46:36 +0000 (00:46 -0500)]
Update trait-associated-const test to new format

6 years agomir: Fix DefiningTy::Const
bobtwinkles [Fri, 2 Feb 2018 03:26:48 +0000 (22:26 -0500)]
mir: Fix DefiningTy::Const

Fixes #47590 by fixing the way DefiningTy represents constants. Previously,
constants were represented using just the type of the variable. However, this
will fail to capture early-bound regions as NLL inference vars, resulting in an
ICE when we try to compute region VIDs a little bit later in the universal
region resolution process.

6 years agoAuto merge of #47607 - davidtwco:issue-45697, r=nikomatsakis
bors [Wed, 7 Feb 2018 02:20:23 +0000 (02:20 +0000)]
Auto merge of #47607 - davidtwco:issue-45697, r=nikomatsakis

MIR-borrowck: augmented assignment causes duplicate errors

Fixes #45697. This PR resolves the error duplication. I attempted to replace the existing sets since there were quite a few but only managed to replace two of them.

r? @nikomatsakis

6 years agoAdd tests for -Zepoch using tyvar_raw_pointer
Manish Goregaokar [Mon, 5 Feb 2018 22:04:50 +0000 (17:04 -0500)]
Add tests for -Zepoch using tyvar_raw_pointer

6 years agoFill in long diagnostic
Manish Goregaokar [Sun, 4 Feb 2018 20:30:37 +0000 (02:00 +0530)]
Fill in long diagnostic

6 years agoAuto merge of #48040 - kennytm:rollup, r=kennytm
bors [Tue, 6 Feb 2018 19:28:54 +0000 (19:28 +0000)]
Auto merge of #48040 - kennytm:rollup, r=kennytm

Rollup of 7 pull requests

- Successful merges: #46962, #47986, #48012, #48013, #48026, #48031, #48036
- Failed merges:

6 years agoRollup merge of #48036 - durka:proc-macro-doteq, r=alexcrichton
kennytm [Tue, 6 Feb 2018 19:23:30 +0000 (03:23 +0800)]
Rollup merge of #48036 - durka:proc-macro-doteq, r=alexcrichton

proc_macro: don't panic parsing ..= (fix #47950)