Commit graph

87355 commits

Author SHA1 Message Date
Mazdak Farrokhzad
cee0bddd0a
Rollup merge of #56857 - tbu-:pr_doc_abssub, r=zackmdavis
Fix a small mistake regarding NaNs in a deprecation message

`max` on floats returns the other argument if one of them is NaN, which
would be `0.0` in this case. This is unlike the C functions `fdim` and
`fdimf` which return NaN if either of their arguments is NaN.

https://doc.rust-lang.org/1.31.0/std/primitive.f32.html#method.max
https://en.cppreference.com/w/c/numeric/math/fdim
2018-12-16 14:08:39 +01:00
Mazdak Farrokhzad
a777754c4d
Rollup merge of #56855 - nikic:remove-cttz-hack, r=nagisa
Remove u8 cttz hack

This issue has since been fixed in LLVM: 1886c8e29a

Furthermore this code doesn't actually work, because the 8 literal does not match the $BITS provided from the macro invocation, so effectively this was just dead code. Ref #43024.

What LLVM does is still not ideal for CPUs that only have bsf but not tzcnt, will create a patch for that later.

r? @nagisa
2018-12-16 14:08:37 +01:00
Mazdak Farrokhzad
8662946cee
Rollup merge of #56850 - alexreg:fix-self-in-typedefs, r=petrochenkov
Fixed issue with using `Self` ctor in typedefs

Added two regression tests.

This is definitely suitable for a beta backport.

CC @Centril
2018-12-16 14:08:36 +01:00
Mazdak Farrokhzad
75d4eda8c3
Rollup merge of #56844 - GuillaumeGomez:improve-css-rule, r=QuietMisdreavus
Improve CSS rule

Needed for #56819.

r? @QuietMisdreavus
2018-12-16 14:08:34 +01:00
Mazdak Farrokhzad
cbb5f13288
Rollup merge of #56832 - alexcrichton:external-demangle, r=Mark-Simulacrum
std: Use `rustc_demangle` from crates.io

No more need to duplicate the demangling routine between crates.io and
the standard library, we can use the exact same one!
2018-12-16 14:08:33 +01:00
Mazdak Farrokhzad
95d52a8724
Rollup merge of #56826 - alexcrichton:atomic-u128, r=gnzlbg
rustc: Add the `cmpxchg16b` target feature on x86/x86_64

This appears to be called `cx16` in LLVM and a few other locations, but
the Intel Intrinsic Guide doesn't have a name for this and the CPU
manual from Intel only mentions `cmpxchg16b`, so that's the name chosen
here.
2018-12-16 14:08:32 +01:00
Mazdak Farrokhzad
32a6a95f41
Rollup merge of #56793 - QuietMisdreavus:better-doctests, r=GuillaumeGomez
rustdoc: look for comments when scraping attributes/crates from doctests

Fixes https://github.com/rust-lang/rust/issues/56727

When scraping out crate-level attributes and `extern crate` statements, we wouldn't look for comments, so any presence of comments would shunt it and everything after it into "everything else". This could cause parsing issues when looking for `fn main` and `extern crate my_crate` later on, which would in turn cause rustdoc to incorrectly wrap a test with `fn main` when it already had one declared.

I took the opportunity to clean up the logic a little bit, but it would still benefit from a libsyntax-based loop like the `fn main` detection.
2018-12-16 14:08:30 +01:00
Mazdak Farrokhzad
d91032a9ef
Rollup merge of #56790 - rust-lang:borrowck-niche-discriminants, r=nikomatsakis
Make RValue::Discriminant a normal Shallow read

Enum layout optimizations mean that the discriminant of an enum may not be stored in a tag disjoint from the rest of the fields of the enum. Stop borrow checking as though they are.

Run with MIRI to see why this is needed: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=09a3236685a06b6096e2e2e3968b852c.

This issue exists with the lexical borrow checker as well (see #45045) so migrate mode should prevent this from being immediately breaking.

r? @nikomatsakis

Fixes #56797
2018-12-16 14:08:29 +01:00
Mazdak Farrokhzad
f1fa9d4261
Rollup merge of #56789 - alexcrichton:simd_select_bitmask, r=rkruppe
rustc: Add an unstable `simd_select_bitmask` intrinsic

This is going to be required for binding a number of AVX-512 intrinsics
in the `stdsimd` repository, and this intrinsic is the same as
`simd_select` except that it takes a bitmask as the first argument
instead of a SIMD vector. This bitmask is then transmuted into a `<NN x
i8>` argument, depending on how many bits it is.

cc rust-lang-nursery/stdsimd#310
2018-12-16 14:08:28 +01:00
Mazdak Farrokhzad
c269468eb9
Rollup merge of #56781 - nikic:llvm-update, r=alexcrichton
Update LLVM submodule

Fixes #52026.
Fixes #56618.

r? @alexcrichton
2018-12-16 14:08:27 +01:00
Mazdak Farrokhzad
c52a13dcdf
Rollup merge of #56761 - estebank:path-display, r=zackmdavis
Suggest using `.display()` when trying to print a `Path`

Fix #38997.
2018-12-16 14:08:25 +01:00
Mazdak Farrokhzad
af3f9072f5
Rollup merge of #56742 - ljedrz:remove_query_response_box, r=oli-obk
infer: remove Box from a returned Iterator
2018-12-16 14:08:24 +01:00
Mazdak Farrokhzad
3552499010
Rollup merge of #56706 - oli-obk:const_unsafe_fn, r=Centril
Make `const unsafe fn` bodies `unsafe`

r? @Centril

Updated for tracking issue discussion https://github.com/rust-lang/rust/issues/55607#issuecomment-445882296
2018-12-16 14:08:22 +01:00
Mazdak Farrokhzad
c69ed5e5e9
Rollup merge of #56672 - ccouzens:master, r=nikic
Document time of back operations of a Linked List

Popping and pushing from the end of a linked list is constant time. This
documentation is already there for popping and pushing from the front.

@bors: r+ 38fe8d2 rollup
2018-12-16 14:08:21 +01:00
Mazdak Farrokhzad
9133798b92
Rollup merge of #56648 - RalfJung:btree, r=sfackler
Fix BTreeMap UB

BTreeMap currently causes UB by created a shared reference to a too-small allocation.  This PR fixes that by introducing a `NodeHeader` type and using that until we really need access to the key/value arrays.  Avoiding run-time checks in `into_key_slice` was somewhat tricky, see the comments embedded in the code.

I also adjusted `as_leaf_mut` to return a raw pointer, because creating a mutable reference asserts that there are no aliases to the pointee, but that's not always correct: We use `as_leaf_mut` twice to create two mutable slices for keys and values; the second call overlaps with the first slice and hence is not a unique pointer.

Fixes https://github.com/rust-lang/rust/issues/54957

Cc @nikomatsakis @Gankro
2018-12-16 14:08:19 +01:00
Mazdak Farrokhzad
32f922e526
Rollup merge of #56640 - myfreeweb:patch-1, r=alexcrichton
Add FreeBSD unsigned char platforms to std::os::raw

Reference: https://www.freebsd.org/cgi/man.cgi?query=arch&apropos=0&sektion=7
2018-12-16 14:08:17 +01:00
Mazdak Farrokhzad
6ec6f48769
Rollup merge of #56439 - JohnGinger:master, r=nikomatsakis
Clearer error message for dead assign

I'm not that this is the right place for this (if it needs an RFC or not).

I had the problem where I misunderstood the compiler lint message https://github.com/rust-lang/rust/issues/56436 and other people seem to have had the same problem https://www.reddit.com/r/rust/comments/8cy9p4/value_assigned_to_is_never_read/.

I think this new wording might be slightly clearer (and help out beginners like me). I'm very new though, so there might be some nuance I'm missing that would make this more confusing or a bad idea for other reasons.

I thought I would create a PR to make it easy to change the code if the consensus was that it would make sense to make a change.

If this is the wrong place for this sort of thing I'll happily delete/move it.
2018-12-16 14:08:16 +01:00
Mazdak Farrokhzad
cdadb72a33
Rollup merge of #56343 - yui-knk:remove_mir_stats_mod, r=nikomatsakis
Remove not used mod

`mir_stats` mod has not been used since c1ff10464d.
2018-12-16 14:08:15 +01:00
Mazdak Farrokhzad
443881a37b
Rollup merge of #53506 - phungleson:fix-from-docs-atomic, r=KodrAus
Documentation for impl From for AtomicBool and other Atomic types

As part of issue #51430 (cc @skade).

The impl is very simple, so not sure if we need to go into any details.
2018-12-16 14:08:13 +01:00
bors
748d354af3 Auto merge of #56600 - ljedrz:fix_edition, r=Mark-Simulacrum
bootstrap: fix edition

A byproduct of work on https://github.com/rust-lang/rust/pull/56595; done with `cargo fix --edition`.
2018-12-15 23:50:47 +00:00
bors
93c2f055ba Auto merge of #56203 - aheart:master, r=varkor
Add lint for items deprecated in future

Resolves #55892
2018-12-15 21:34:22 +00:00
Alexander Regueiro
0211856c0e Corrected expected test err messages. 2018-12-15 20:54:05 +00:00
Alexander Regueiro
616885ec2c Fixed minor issues raised in review. 2018-12-15 19:11:45 +00:00
Alexander Regueiro
5656c96c71 Added test for issue #56835. 2018-12-15 19:11:44 +00:00
Alexander Regueiro
3199bef055 Fixed issue #56199. 2018-12-15 19:11:42 +00:00
bors
d652917f5f Auto merge of #56847 - pietroalbini:fix-broken-toolstate, r=pietroalbini
Revert merge of #56758 - Manishearth:emoji-status-toolstate

#56758 is breaking master.

r? @ghost
cc @Manishearth @kennytm
2018-12-15 19:11:33 +00:00
Tobias Bucher
967b1fc3b7 Fix a small mistake regarding NaNs in a deprecation message
`max` on floats returns the other argument if one of them is NaN, which
would be `0.0` in this case. This is unlike the C functions `fdim` and
`fdimf` which return NaN if either of their arguments is NaN.

https://doc.rust-lang.org/1.31.0/std/primitive.f32.html#method.max
https://en.cppreference.com/w/c/numeric/math/fdim
2018-12-15 18:41:21 +01:00
bors
44d3fb3ab2 Auto merge of #56846 - pietroalbini:rollup, r=pietroalbini
Rollup of 7 pull requests

Successful merges:

 - #56677 (#[must_use] on traits in stdlib)
 - #56679 (overhaul external doc attribute diagnostics)
 - #56682 (Update the stdsimd submodule)
 - #56691 (fix install broken link)
 - #56710 (Always set the RDRAND and RDSEED features on SGX)
 - #56713 (Test capacity of ZST vector)
 - #56841 (Add some unit tests to compiletest)

Failed merges:

r? @ghost
2018-12-15 16:56:10 +00:00
Nikita Popov
c0ed771382 Remove u8 cttz hack
This issue has since been fixed in LLVM:
1886c8e29a

Furthermore this doesn't actually work, because the "8" literal does
not match the $BITS provided from the macro invocation, so effectively
this code was not being used anyway...
2018-12-15 17:26:18 +01:00
Pietro Albini
e771a7d353
Revert "Rollup merge of #56758 - Manishearth:emoji-status-toolstate, r=kennytm"
This reverts commit 050bb10dc3, reversing
changes made to c530e31245.
2018-12-15 14:57:17 +01:00
Pietro Albini
3566812b04
Rollup merge of #56841 - phansch:add_various_compiletest_unittests, r=oli-obk
Add some unit tests to compiletest

Based on #56792, otherwise the tests won't be executed on CI.

Just a small start, I would like to add more testing to compiletest in the future but that will require some refactoring first.

cc #47606
2018-12-15 14:47:40 +01:00
Pietro Albini
eed9693616
Rollup merge of #56713 - xfix:vec-test-zst-capacity, r=TimNN
Test capacity of ZST vector

Initially, #50233 accidentally changed the capacity of empty ZST. This was pointed out during code review. This commit adds a test to prevent capacity of ZST vectors from accidentally changing to prevent that from happening again.
2018-12-15 14:47:39 +01:00
Pietro Albini
8d9dc2b749
Rollup merge of #56710 - jethrogb:jb/sgx-target-features, r=alexcrichton
Always set the RDRAND and RDSEED features on SGX

Not sure if this is 100% correct.

This [Intel article](https://software.intel.com/en-us/articles/intel-software-guard-extensions-tutorial-part-5-enclave-development) goes in great depth regarding using (untrusted) CPUID to see whether RDRAND/RDSEED is supported, and explains what happens to the enclave if the CPUID result is faked.

I'd say that an implementation of SGX that doesn't make RDRAND available to the enclave is so severely limited/broken that it's ok if you get #UD in that case. The case is less clear for RDSEED, but it so far every processor released by Intel with SGX support also has RDSEED (including Gemini Lake).

cc @briansmith
2018-12-15 14:47:38 +01:00
Pietro Albini
b5b67298ec
Rollup merge of #56691 - mishaker:fix_doc_install_broken_link, r=jonas-schievink
fix install broken link

solves #56690
2018-12-15 14:47:37 +01:00
Pietro Albini
9d50d53ec0
Rollup merge of #56682 - alexcrichton:update-stdsimd, r=nikomatsakis
Update the stdsimd submodule

Includes some new stabilized intrinsics for the wasm32 target!

Closes #56292
2018-12-15 14:47:36 +01:00
Pietro Albini
adc88ac0c5
Rollup merge of #56679 - euclio:external-doc-parse, r=estebank
overhaul external doc attribute diagnostics

This PR improves the error handling and spans for the external doc attribute. Many cases that silently failed before now emit errors, spans are tightened, and the errors have help and suggestions.

I tried to address all the cases that users ran into in the tracking issue.

cc #44732

r? @QuietMisdreavus
2018-12-15 14:47:34 +01:00
Pietro Albini
e92d920269
Rollup merge of #56677 - aelred:must-use-on-traits, r=estebank
#[must_use] on traits in stdlib

Based on #55506.

Adds `#[must_use]` attribute to traits in the stdlib:
- `Iterator`
- `Future`
- `FnOnce`
- `Fn`
- `FnMut`

There may be other traits that should have the attribute, but I couldn't find/think of any.
2018-12-15 14:47:33 +01:00
Guillaume Gomez
122684d393 Improve CSS rule 2018-12-15 12:42:10 +01:00
bors
0a1b2267e4 Auto merge of #56840 - pietroalbini:rollup, r=pietroalbini
Rollup of 14 pull requests

Successful merges:

 - #56718 (Use libbacktrace pretty-printing)
 - #56725 (fix rust-lang/rust issue #50583)
 - #56731 (Add missing urls in ffi module docs)
 - #56738 (Fix private_no_mangle_fns message grammar)
 - #56746 (Add test of current behavior (infer free region within closure body))
 - #56747 (target: remove Box returned by get_targets)
 - #56751 (Allow ptr::hash to accept fat pointers)
 - #56755 (Account for `impl Trait` when suggesting lifetime)
 - #56758 (Add short emoji status to toolstate updates)
 - #56760 (Deduplicate unsatisfied trait bounds)
 - #56769 (Add x86_64-unknown-uefi target)
 - #56792 (Bootstrap: Add testsuite for compiletest tool)
 - #56808 (Fixes broken links)
 - #56809 (Fix docs path to PermissionsExt)

Failed merges:

r? @ghost
2018-12-15 11:31:40 +00:00
Philipp Hansch
9637c27fb5
compiletest: unit test parse_normalization_string
There is a FIXME inside that function and I think the unit tests can be
helpful to resolve it without breaking anything else.
2018-12-15 11:00:26 +01:00
Philipp Hansch
818f6823ad
compiletest: Add some compiletest::util unittests 2018-12-15 11:00:26 +01:00
Philipp Hansch
61780083cd
Bootstrap: Add testsuite for compiletest tool
The (currently) single unit test of the compiletest tool was never
executed on CI. At least I couldn't find any references of it in the
logs. This adds a test suite for compiletest so that our tester is
tested, too.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest
2018-12-15 11:00:26 +01:00
Pietro Albini
ae3882c206
Rollup merge of #56809 - dbrgn:permissions-ext, r=alexcrichton
Fix docs path to PermissionsExt

Couldn't test the link yet, since I didn't figure out how to build std rustdocs without building the entire compiler itself 🙂
2018-12-15 10:17:43 +01:00
Pietro Albini
a352dd4dfc
Rollup merge of #56808 - jrvidal:broken-links, r=kennytm
Fixes broken links

Just a few broken links.

Not sure what to do about this one: https://github.com/rust-lang/rust/blame/master/src/doc/unstable-book/src/language-features/plugin.md#L135 (regex macros were removed a while ago in 0375954389).
2018-12-15 10:17:42 +01:00
Pietro Albini
1f0a73039b
Rollup merge of #56792 - phansch:add_compiletest_testsuite, r=alexcrichton
Bootstrap: Add testsuite for compiletest tool

This adds a test suite for compiletest so that the tester is tested, too.

The (currently) single unit test of the compiletest tool was never executed
on CI. At least I couldn't find any references of it in the logs.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest --stage 0

cc #47606
2018-12-15 10:17:40 +01:00
Pietro Albini
1116546e17
Rollup merge of #56769 - dvdhrm:uefi-target, r=alexcrichton
Add x86_64-unknown-uefi target

This adds a new rustc target-configuration called 'x86_64-unknown_uefi'.
Furthermore, it adds a UEFI base-configuration to be used with other
targets supported by UEFI (e.g., i386, armv7hl, aarch64, itanium, ...).

UEFI systems provide a very basic operating-system environment, meant
to unify how systems are booted. It is tailored for simplicity and fast
setup, as it is only meant to bootstrap other systems. For instance, it
copies most of the ABI from Microsoft Windows, rather than inventing
anything on its own. Furthermore, any complex CPU features are
disabled. Only one CPU is allowed to be up, no interrupts other than
the timer-interrupt are allowed, no process-separation is performed,
page-tables are identity-mapped, ...

Nevertheless, UEFI has an application model. Its main purpose is to
allow operating-system vendors to write small UEFI applications that
load their kernel and terminate the UEFI system. However, many other
UEFI applications have emerged in the past, including network-boot,
debug-consoles, and more.

This UEFI target allows to compile rust code natively as UEFI
applications. No standard library support is added, but libcore can be
used out-of-the-box if a panic-handler is provided. Furthermore,
liballoc works as well, if a `GlobalAlloc` handler is provided. Both
have been tested with this target-configuration.

Note that full libstd support is unlikely to happen. While UEFI does
have standardized interfaces for networking and alike, none of these
are mandatory and they are unlikely to be shipped in common consumer
firmwares. Furthermore, several features like process-separation are
not available (or only in very limited fashion). Those parts of libstd
would have to be masked.
2018-12-15 10:17:39 +01:00
Pietro Albini
e433da7ea0
Rollup merge of #56760 - estebank:dedup-bounds, r=oli-obk
Deduplicate unsatisfied trait bounds

Fix #35677.
2018-12-15 10:17:38 +01:00
Pietro Albini
050bb10dc3
Rollup merge of #56758 - Manishearth:emoji-status-toolstate, r=kennytm
Add short emoji status to toolstate updates

I get a lot of these emails and it's good to know which ones I should be paying closer attention to -- i.e. the ones where clippy breaks. This adds a short emoji status report to the first line of the commit message, which shows up in notifications directly

I haven't been able to test it, and the actual emoji are just suggestions.

r? @kennytm

cc @rust-lang/infra @rust-lang/devtools
2018-12-15 10:17:37 +01:00
Pietro Albini
c530e31245
Rollup merge of #56755 - estebank:impl-trait-lt-sugg, r=cramertj
Account for `impl Trait` when suggesting lifetime

Fix https://github.com/rust-lang/rust/issues/56745
2018-12-15 10:17:36 +01:00
Pietro Albini
7c83737b44
Rollup merge of #56751 - mbrubeck:hash, r=dtolnay
Allow ptr::hash to accept fat pointers

Fat pointers implement Hash since #45483.  This is a follow-up to #56250.
2018-12-15 10:17:35 +01:00