Commit Graph

84629 Commits

Author SHA1 Message Date
Manish Goregaokar
50e410c240 Rollup merge of #54870 - flip1995:stabilize_tool_lints, r=Manishearth
Fixes #47311.
r? @nrc
2018-10-10 15:59:20 -07:00
Manish Goregaokar
8ebc6d6dbb Rollup merge of #54862 - Havvy:cfg_attr_multi, r=petrochenkov
Fixes #47311.
r? @nrc
2018-10-10 15:58:40 -07:00
Manish Goregaokar
a267b3a9ff Rollup merge of #54848 - davidtwco:issue-52663-trait-object, r=nikomatsakis
Fixes #47311.
r? @nrc
2018-10-10 15:58:38 -07:00
bors
f42c510f2f Auto merge of #54747 - levex:inline-asm-bad-operands, r=nagisa
codegen_llvm: verify that inline assembly operands are scalars

Another set of inline assembly fixes. This time let's emit an error message when the operand value cannot be coerced into the operand constraint.

Two questions:

1) Should I reuse `E0668` which was introduced in #54568 or just use `E0669` as it stands because they do mean different things, but maybe that's not too user-friendly. Just a thought.
2) The `try_fold` returns the operand which failed to be converted into a scalar value, any suggestions on how to use that in the error message?

Thanks!
2018-10-10 22:24:48 +00:00
bors
5af0bb8304 Auto merge of #54732 - cramertj:waker, r=aturon
LocalWaker and Waker cleanups

r? @aturon
2018-10-10 18:28:30 +00:00
holmgr
05bb22d9e8 Remove incorrect span for second label inner macro invocation 2018-10-10 19:39:16 +02:00
Matthew Jasper
c312e04d45 Check user types are well-formed in MIR borrow check
Also update some tests so that they don't have user types on `_` in
unreachable code.
2018-10-10 16:23:59 +01:00
bors
e1041c6cd1 Auto merge of #54802 - davidtwco:issue-53040, r=pnkfelix
[nll] better error message when returning refs to upvars

Fixes #53040.

r? @nikomatsakis
2018-10-10 14:51:01 +00:00
bors
2243fabd8f Auto merge of #54461 - RalfJung:pointer-provenance, r=oli-obk
miri engine: basic support for pointer provenance tracking

This enriches pointers with a new member, `tag`, that can be used to do provenance tracking. This is a new type parameter that propagates up through everything. It defaults to `()` (no tag), which is also the value used by CTFE -- but miri will use another type.

The only actually interesting piece here, I think, is what I had to do in the memory's `get`. The problem is that `tcx` (storing the allocations for statics) uses `()` for provenance information. But the machine might need another tag. The machine has a function to do the conversion, but if a conversion actually happened, we need to store the result of this *somewhere* -- we cannot return a pointer into `tcx` as we usually would.
So I introduced `MonoHashMap` which uses `RefCell` to be able to insert new entries even when we just have a shared ref. However, it is important that we can also return shared refs into the map without holding the `RefCell` opan. This is achieved by boxing the values stored in the map, so their addresses remain stable even when the map's table gets reallocated. This is all implemented in `mono_hash_map.rs`.

NOTE: This PR also contains the commits from https://github.com/rust-lang/rust/pull/54380#issuecomment-423130753. Only the [last two commits](8e74ee0998..HEAD) are new.
2018-10-10 12:13:03 +00:00
Matthew Jasper
55ec104313 Use the span of the user type for AscribeUserType
Also change the order of the fake read for let and the AscribeUserType,
so that we use the better span and message from the fake read in errors.
2018-10-10 11:56:16 +01:00
Ralf Jung
bc9435d239 tidy up 2018-10-10 11:31:31 +02:00
Ralf Jung
a332387b87 add a macro for static assertions 2018-10-10 11:03:58 +02:00
ljedrz
a01a994231 A handful of random string-related improvements 2018-10-10 10:39:18 +02:00
Ralf Jung
9a9dbfff6e vtables are not leaks 2018-10-10 10:11:35 +02:00
Ralf Jung
3fb617d0c5 more comments for these sublte games we are playing with allocations in the miri engine 2018-10-10 10:11:35 +02:00
Kazuyoshi Kato
da17e07c14 "(using ..." doesn't have the matching ")"
Fixes #54948.
2018-10-10 01:09:18 -07:00
Ralf Jung
83667d64a2 abstract mono_hash_map through a trait, only miri actually needs the fancy one 2018-10-10 10:08:17 +02:00
Ralf Jung
75ea7c7fc2 typos and spaces 2018-10-10 09:58:17 +02:00
Ralf Jung
03545109f4 clarify alloc_map description 2018-10-10 09:58:17 +02:00
Ralf Jung
e0b17ad26c fix typos 2018-10-10 09:58:17 +02:00
Ralf Jung
d4b21f1ed3 expand safety comment in memory.rs 2018-10-10 09:58:17 +02:00
Ralf Jung
397283dbc3 rename extra -> meta in place 2018-10-10 09:58:17 +02:00
Ralf Jung
50c00a9301 expand comment 2018-10-10 09:51:16 +02:00
Ralf Jung
f3a39e38f6 tidy, oh tidy 2018-10-10 09:51:16 +02:00
Ralf Jung
4e9f9329e3 miri engine: basic support for pointer provenance tracking 2018-10-10 09:50:06 +02:00
Ralf Jung
e4434be6b7 remove a now outdated comment 2018-10-10 09:16:05 +02:00
bors
71d3a71572 Auto merge of #54831 - davidtwco:issue-52663-struct-field-suggestion, r=nikomatsakis
NLL is missing struct field suggestion

Part of #52663.

This commit adds suggestions to change the definitions of fields in
struct definitions from immutable references to mutable references.

r? @nikomatsakis
cc @pnkfelix
2018-10-10 06:36:11 +00:00
Alex Crichton
c1f7e922e6 std: Synchronize global allocator on wasm32
We originally didn't have threads, and now we're starting to add them!
Make sure we properly synchronize access to dlmalloc when the `atomics`
feature is enabled for `wasm32-unknown-unknown`.
2018-10-09 23:35:45 -07:00
bors
4623d48893 Auto merge of #54764 - tromey:test-rust-lldb, r=alexcrichton
Run debuginfo tests against rust-enabled lldb, when possible

If the rust-enabled lldb was built, then use it when running the
debuginfo tests.  Updating the lldb submodule was necessary as this
needed a way to differentiate the rust-enabled lldb, so I added a line
to the --version output.

This adds compiletest commands to differentiate between the
rust-enabled and non-rust-enabled lldb, as is already done for gdb.  A
new "rust-lldb" header directive is also added, but not used in this
patch; I plan to use it in #54004.

This updates all the tests.
2018-10-10 02:08:23 +00:00
flip1995
ffe15277ff Remove nightly check for tool_lints warning 2018-10-09 16:38:38 -07:00
flip1995
6328850e6d Remove unstable-book documentation 2018-10-09 16:38:38 -07:00
flip1995
ac231d40a3 Remove feature-gate code 2018-10-09 16:38:38 -07:00
flip1995
a249981a43 Remove feature-gate tests 2018-10-09 16:38:38 -07:00
flip1995
5e9084ccc3 Remove feature(tool_lints) from tests 2018-10-09 16:38:38 -07:00
flip1995
dc2343c1a8 Update feature-gate listing 2018-10-09 16:38:34 -07:00
Esteban Küber
57f10c7911 Point to variable in asm! macro when failing borrowck 2018-10-09 15:53:37 -07:00
bors
eae47a4048 Auto merge of #54734 - pawroman:fix_range_borrowing_suggestion, r=varkor
Fix range literals borrowing suggestions

Fixes #54505. The compiler issued incorrect range borrowing suggestions (missing `()` around borrows of range literals). This was not correct syntax (see the issue for an example).

With changes in this PR, this is fixed for all types of `Range` literals.

Thanks again to @varkor and @estebank for their invaluable help and guidance.

r? @varkor
2018-10-09 22:36:14 +00:00
bors
96cafc53cf Auto merge of #54613 - matthiaskrgr:string_from_inline_53681, r=nagisa
liballoc: mark str.to_owned() and String::from(&str) as #[inline].

Fixes #53681
2018-10-09 19:57:55 +00:00
bors
0e07c4281c Auto merge of #54762 - RalfJung:miri-validate, r=oli-obk
Prepare miri engine for enforcing validity invariant during execution

In particular, make recursive checking of references optional, and add a `const_mode` parameter that says whether `usize` is allowed to contain a pointer. Also refactor validation a bit to be type-driven at the "leafs" (primitive types), and separately validate scalar layout to catch `NonNull` violations (which it did not properly validate before).

Fixes https://github.com/rust-lang/rust/issues/53826
Also fixes https://github.com/rust-lang/rust/issues/54751

r? @oli-obk
2018-10-09 17:19:56 +00:00
Ralf Jung
fe96f8235c validity: check dynamic size, not static
also less verbose logging
2018-10-09 13:08:00 +02:00
Ralf Jung
976880aa84 dont fail when validating non-local closures 2018-10-09 13:08:00 +02:00
Ralf Jung
6899af82fd box is also a primitive type 2018-10-09 13:08:00 +02:00
Ralf Jung
db1663d598 update miri 2018-10-09 13:08:00 +02:00
Ralf Jung
fcf6b5c79b add fixme for potential perf optimization 2018-10-09 13:08:00 +02:00
Ralf Jung
e09e3c898c fix nits and handling of extern static 2018-10-09 13:08:00 +02:00
Ralf Jung
322017b2bc unify handling of thin and fat pointers by moving primitive type handling out of aggregate handling
Also, make enum variant handling a bit nicer
2018-10-09 13:08:00 +02:00
Ralf Jung
95593331bf add some tests with constants that better be valid 2018-10-09 13:08:00 +02:00
Ralf Jung
22c1a0acc8 For now, accept all data for integer types when not in const mode
We'll try ruling out undef later
2018-10-09 13:08:00 +02:00
Ralf Jung
9bb4bcd770 tidy up 2018-10-09 13:08:00 +02:00
Ralf Jung
654d9ff618 do not look at refs to external statics at all 2018-10-09 13:08:00 +02:00