87571 Commits

Author SHA1 Message Date
Steve Loveless
517bfe0dca Fix private_no_mangle_fns message grammar 2018-12-11 21:42:23 -08:00
Nicholas Nethercote
209240dc26 Remove some env vars for rustdoc invocations.
In an attempt to avoid "thread '<unnamed>' panicked at 'failed to
acquire jobserver token: Bad file descriptor" errors.
2018-12-12 16:30:06 +11:00
Alex Crichton
4c21a3bc2a std: Depend directly on crates.io crates
Ever since we added a Cargo-based build system for the compiler the
standard library has always been a little special, it's never been able
to depend on crates.io crates for runtime dependencies. This has been a
result of various limitations, namely that Cargo doesn't understand that
crates from crates.io depend on libcore, so Cargo tries to build crates
before libcore is finished.

I had an idea this afternoon, however, which lifts the strategy
from #52919 to directly depend on crates.io crates from the standard
library. After all is said and done this removes a whopping three
submodules that we need to manage!

The basic idea here is that for any crate `std` depends on it adds an
*optional* dependency on an empty crate on crates.io, in this case named
`rustc-std-workspace-core`. This crate is overridden via `[patch]` in
this repository to point to a local crate we write, and *that* has a
`path` dependency on libcore.

Note that all `no_std` crates also depend on `compiler_builtins`, but if
we're not using submodules we can publish `compiler_builtins` to
crates.io and all crates can depend on it anyway! The basic strategy
then looks like:

* The standard library (or some transitive dep) decides to depend on a
  crate `foo`.
* The standard library adds

  ```toml
  [dependencies]
  foo = { version = "0.1", features = ['rustc-dep-of-std'] }
  ```
* The crate `foo` has an optional dependency on `rustc-std-workspace-core`
* The crate `foo` has an optional dependency on `compiler_builtins`
* The crate `foo` has a feature `rustc-dep-of-std` which activates these
  crates and any other necessary infrastructure in the crate.

A sample commit for `dlmalloc` [turns out to be quite simple][commit].
After that all `no_std` crates should largely build "as is" and still be
publishable on crates.io! Notably they should be able to continue to use
stable Rust if necessary, since the `rename-dependency` feature of Cargo
is soon stabilizing.

As a proof of concept, this commit removes the `dlmalloc`,
`libcompiler_builtins`, and `libc` submodules from this repository. Long
thorns in our side these are now gone for good and we can directly
depend on crates.io! It's hoped that in the long term we can bring in
other crates as necessary, but for now this is largely intended to
simply make it easier to manage these crates and remove submodules.

This should be a transparent non-breaking change for all users, but one
possible stickler is that this almost for sure breaks out-of-tree
`std`-building tools like `xargo` and `cargo-xbuild`. I think it should
be relatively easy to get them working, however, as all that's needed is
an entry in the `[patch]` section used to build the standard library.
Hopefully we can work with these tools to solve this problem!

[commit]: 28ee12db81
2018-12-11 21:08:22 -08:00
Mark Rousskov
4d5413bc1d Fix gpg signing in manifest builder
GPG versions 2.x+ require that --batch be passed if --passphrase-fd is
to be accepted.
2018-12-11 19:10:45 -07:00
Nicholas Nethercote
95a6262df1 Replace FileSearch::for_each_lib_search_path with search_paths.
Returning an iterator leads to nicer code all around.
2018-12-12 10:36:15 +11:00
Nicholas Nethercote
2bfe32cc93 Avoid regenerating the Vec<PathBuf> in FileSearch::search().
`FileSearch::search()` traverses one or more directories. For each
directory it generates a `Vec<PathBuf>` containing one element per file
in that directory.

In some benchmarks this occurs enough that the allocations done for the
`PathBuf`s are significant, and in practice a small number of
directories are being traversed over and over again. For example, when
compiling the `tokio-webpush-simple` benchmark, two directories are
traversed 58 times each. Each of these directories have more than 100
files.

This commit changes things so that all the `Vec<PathBuf>`s that will be
needed by a `Session` are precomputed when that `Session` is created;
they are stored in `SearchPath`. `FileSearch` gets a reference to the
necessary `SearchPath`s. This reduces instruction counts on several
benchmarks by 1--5%.

The commit also removes the barely-used `visited_dirs` hash in
`for_each_lib_searchPath`. It only detects if `tlib_path` is the same as
one of the previously seen paths, which is unlikely.
2018-12-12 10:36:15 +11:00
Nicholas Nethercote
f13006182c Introduce SearchPath and replace SearchPaths with Vec<SearchPath>.
It's more idiomatic, makes the code shorter, and will help with the next
commit.
2018-12-12 10:36:15 +11:00
Nicholas Nethercote
2640da7d13 Remove Session::sysroot().
Instead of maybe storing its own sysroot and maybe deferring to the one
in `Session::opts`, just clone the latter when necessary so one is
always directly available. This removes the need for the getter.
2018-12-12 10:36:15 +11:00
Nicholas Nethercote
0238bcc60d Avoid a useless FxHashSet::insert in FileSearch::for_each_lib_search_path. 2018-12-12 10:36:15 +11:00
Guillaume Gomez
b96186b8a7 Add missing urls in ffi module docs 2018-12-11 23:54:41 +01:00
Son
94c1c7328a Documentation for impl From for AtomicBool and other Atomic types 2018-12-12 09:41:12 +11:00
Nicholas Nethercote
08857c1c57 XXX: SymbolIndex 2018-12-12 09:06:43 +11:00
Nicholas Nethercote
0f68749260 Use a newtype_index! within Symbol.
This shrinks `Option<Symbol>` from 8 bytes to 4 bytes, which shrinks
`Token` from 24 bytes to 16 bytes. This reduces instruction counts by up
to 1% across a range of benchmarks.
2018-12-12 08:38:08 +11:00
Ralf Jung
8e994a2732 bump backtrace version to get prettier pretty-printing 2018-12-11 22:36:24 +01:00
Guillaume Gomez
24031466b7 Remove unneeded extra chars to reduce search-index size 2018-12-11 22:29:43 +01:00
Michael Howell
83fe6e4392 Use iterators instead of raw offsets in Windows argument parser 2018-12-11 13:06:18 -07:00
Piers Finlayson
b17a3f21c2 fix rust-lang/rust issue #50583 2018-12-11 20:02:16 +00:00
bors
8375ab4ff4 Auto merge of #53497 - fukatani:test-debuginfo-function-call, r=tromey
Test with gdb8.2 and add debuginfo printing function call test

As far as I can see, `print function()` is not tested. It is important feature for debugging.
2018-12-11 16:27:49 +00:00
Ralf Jung
45b97f2b8b miri: use backtrace crate printing instead of rolling our own 2018-12-11 15:53:35 +01:00
Jethro Beekman
5acab2d7d1 Always set the RDRAND and RDSEED features on SGX 2018-12-11 19:54:49 +05:30
Konrad Borowski
1006425769 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-11 15:07:09 +01:00
bors
3499575282 Auto merge of #56243 - RalfJung:test-deterministic, r=alexcrichton
libtest: Use deterministic HashMap, avoid spawning thread if there is no concurrency

It seems desirable to make a test and bench runner deterministic, which this achieves by using a deterministic hasher. Also, we we only have 1 thread, we don't bother spawning one and just use the main thread.

The motivation for this is to be able to run the test harness in miri, where we can neither access the OS RNG, nor spawn threads.
2018-12-11 14:04:15 +00:00
Unknown
e6bbf7ef8d Add function call test, Update gdb and test docker image install gdb by ppa. 2018-12-11 22:20:15 +09:00
varkor
2ba3e66fa6 Update tests 2018-12-11 12:19:23 +00:00
varkor
573c1ffb78 Add a FIXME for mir build unreachable destination checking 2018-12-11 12:19:16 +00:00
varkor
19ea2d1c8b Add a mir-opt test 2018-12-11 12:18:51 +00:00
varkor
3dd5034967 Restore old match behaviour 2018-12-11 11:18:55 +00:00
varkor
6561732f88 Consider privacy in more locations 2018-12-11 11:18:55 +00:00
varkor
4d8a6eac39 Fix some misbehaving tests 2018-12-11 11:18:55 +00:00
varkor
210e234733 Make liveness analysis respect privacy 2018-12-11 11:18:55 +00:00
varkor
20415af142 Add privately uninhabited dead code test 2018-12-11 11:18:55 +00:00
varkor
cb4bd5a22c Update ub-uninhabit tests 2018-12-11 11:18:55 +00:00
varkor
9c66599c6a Address unused variables warning with TcpStream 2018-12-11 11:18:55 +00:00
varkor
13af92f459 Add note on nonzero-sized uninhabited types 2018-12-11 11:18:55 +00:00
varkor
a38ff377e7 Improve conservative_is_uninhabited comment 2018-12-11 11:18:55 +00:00
varkor
6e5e54f735 Use unions for uninhabitedness checking rather than mem::transmute 2018-12-11 11:18:55 +00:00
varkor
51e1c6437e conservative_is_uninhabited implies abi.is_uninhabited 2018-12-11 11:18:55 +00:00
varkor
d065a49941 Nonempty arrays of uninhabited arrays are Abi::Uninhabited 2018-12-11 11:18:55 +00:00
varkor
419d2d8f31 Update const eval uninhabited messages 2018-12-11 11:18:55 +00:00
varkor
4c88be3592 Fix handling of divergent dicriminants 2018-12-11 11:18:55 +00:00
varkor
9f609f9fef Fix Ref inhabitedness comment 2018-12-11 11:18:55 +00:00
varkor
64c2a310e1 Address comments 2018-12-11 11:18:55 +00:00
varkor
ffce4fbd6c Update uninhabited matches tests 2018-12-11 11:18:55 +00:00
varkor
88afbf2d99 Make uninhabitedness checking more intelligent 2018-12-11 11:18:19 +00:00
varkor
62b359094f Check for uninhabitedness instead of never 2018-12-11 11:18:19 +00:00
varkor
510a9fffa2 Fix irrefutable matches on integer ranges 2018-12-11 11:16:53 +00:00
Ralf Jung
c28c28779c use an enum instead of bool 2018-12-11 11:02:23 +01:00
Oliver Scherer
5457b19fe9 Properly stage new feature gates 2018-12-11 10:43:40 +01:00
Nikita Popov
6c2d704950 Remove env_alloca hack
This is no longer necessary for LLVM >= 6.
2018-12-11 10:34:02 +01:00
Oliver Scherer
134661917b Remove some dead code from sgx 2018-12-11 10:33:17 +01:00