106772 Commits

Author SHA1 Message Date
Jane Lusby
0d5444ffa6 remove unnecessary derives 2020-02-10 15:16:24 -08:00
Jane Lusby
c0ba79eefd less noisy format 2020-02-10 15:15:13 -08:00
bors
0f0cdf6acd Auto merge of #69030 - Dylan-DPC:rollup-t9uk7vc, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #68897 (clean up E0275 explanation)
 - #68908 (Add long error code explanation message for E0637 )
 - #68932 (self-profile: Support arguments for generic_activities.)
 - #68986 (Make ASCII ctype functions unstably const )
 - #69007 (Clean up E0283 explanation)
 - #69014 (change an instance of span_bug() to struct_span_err() to avoid ICE)

Failed merges:

r? @ghost
2020-02-10 22:46:29 +00:00
Jane Lusby
49204563e1 Get vaguely working with a test for checking output 2020-02-10 14:28:32 -08:00
Jane Lusby
b637c0e84a Add initial debug fmt for Backtrace 2020-02-10 14:28:31 -08:00
Jane Lusby
4cf0365b19 Bump version to backtrace without the header 2020-02-10 14:20:21 -08:00
Esteban Küber
9d91489526 review comment: wording 2020-02-10 13:58:36 -08:00
Ralf Jung
c561d23a61 remove outdated comment 2020-02-10 22:58:31 +01:00
Dylan MacKenzie
ce3f37b42b Use new dataflow interface for initialization/borrows analyses 2020-02-10 13:03:08 -08:00
Dylan MacKenzie
702096da17 Implement a find_descendant method for MovePath 2020-02-10 13:03:08 -08:00
Dylan MacKenzie
c64dfd76e8 Add a Visitor for dataflow results 2020-02-10 13:03:08 -08:00
Dylan MacKenzie
1ec99179c1 Add an into_engine method to Analysis
This makes it more ergonomic to create a dataflow engine and obviates
the need to pick between `new_gen_kill` and `new_generic`.
2020-02-10 13:03:08 -08:00
Dylan MacKenzie
e2b9d6ebd6 Add a contains method to ResultsCursor 2020-02-10 13:03:08 -08:00
Matthias Krüger
451d4925f7 submodules: update cargo from 9d32b7b01 to 3c53211c3
Changes:
````
Update jobserver.
Update tar.
Emit report on error with Ztimings.
Do not run `formats_source` if `rustfmt` is not available
Fix rebuild_sub_package_then_while_package on HFS.
Remove likely brittle test.
Install rustfmt for testing in CI
Fix build-std collisions.
Fix BuildScriptOutput when a build script is run multiple times.
Fix required-features using renamed dependencies.
Fix using global options before an alias.
Update changelog for 1.42.
Bump to 0.44.0.
Log rustfmt output if it fails; also do not check that rustfmt exists
Update pretty_env_logger requirement from 0.3 to 0.4
Swap std::sync::mpsc channel with crossbeam_channel
Fix tests on Linux/MacOS
Fix typo.
Add tests
Deduplicate warnings about missing rustfmt
Log entry 2: first implementation
Refactor code
Stabilize config-profile.
Log entry 1
Format code
Remove tempdir after install
Keep existing package with git install
Use non-ephemeral workspace
Test that git install reads virtual manifest
Fix failing test
Search for root manifest with ephemeral workspaces
Support out-dir in build section of Cargo configuration file
````
2020-02-10 21:12:16 +01:00
Jethro Beekman
71b9ed4a36 Avoid jumping to Rust code with user %rsp (reentry_panic) 2020-02-10 21:00:22 +01:00
Raoul Strackx
236ab6e6d6 sanitize MXCSR/FPU control registers 2020-02-10 20:57:30 +01:00
Raoul Strackx
aeedc9dea9 Corrected ac_mitigation patch. That patch used the untrusted stack to clear rflags during enclave (re-)entry 2020-02-10 20:57:25 +01:00
Jethro Beekman
1b12232b8f Fix SGX RWLock representation for UnsafeCell niche fix 2020-02-10 14:44:12 -05:00
Felix S. Klock II
3e047229ef Add repr(no_niche) to UnsafeCell. Fix #68303. 2020-02-10 14:44:12 -05:00
Felix S. Klock II
35e3b4d1d8 tests for #[repr(no_niche)]. 2020-02-10 14:44:12 -05:00
Felix S. Klock II
88747ffe63 Add #[repr(no_niche)].
This repr-hint makes a struct/enum hide any niche within from its
surrounding type-construction context.

It is meant (at least initially) as an implementation detail for
resolving issue 68303. We will not stabilize the repr-hint unless
someone finds motivation for doing so.

(So, declaration of `no_niche` feature lives in section of file
where other internal implementation details are grouped, and
deliberately leaves out the tracking issue number.)

incorporated review feedback, and fixed post-rebase.
2020-02-10 14:44:12 -05:00
Andrew Paverd
87df124ba7 Enable Control Flow Guard in rustbuild 2020-02-10 19:26:25 +00:00
Chris Simpkins
53b16fb5f2 add main function to issue-69017 test 2020-02-10 13:47:52 -05:00
Tim Diekmann
97d1f8d9bb Add missing _zeroed varants to AllocRef 2020-02-10 19:44:29 +01:00
Tim Diekmann
25de80ad23 Remove common usage pattern from AllocRef 2020-02-10 18:38:09 +01:00
Vadim Petrochenkov
8d799218ab parser: Remove Parser::prev_token_kind 2020-02-10 20:29:37 +03:00
Chris Simpkins
fc3ecb22b9 add issue 69017 test 2020-02-10 12:03:49 -05:00
Mazdak Farrokhzad
75afd0b0cf use dyn Trait more in tests 2020-02-10 17:42:09 +01:00
Chris Simpkins
9e78ce068b handle TerminatorKind::Yield by returning Err(Unpromotable) 2020-02-10 11:31:55 -05:00
Dylan DPC
119bc976db
Rollup merge of #69014 - dwrensha:fix-68890, r=Centril
change an instance of span_bug() to struct_span_err() to avoid ICE

After #67148, the `span_bug()` in `parse_ty_tuple_or_parens()` is reachable because `parse_paren_comma_seq()` can return an `Ok()` even in cases where it encounters an error.
This pull request prevents an ICE in such cases by replacing the `span_bug()` with `struct_span_error()`.

Fixes #68890.
2020-02-10 17:29:03 +01:00
Dylan DPC
db08784964
Rollup merge of #69007 - GuillaumeGomez:clean-up-e0283, r=Dylan-DPC
Clean up E0283 explanation

r? @Dylan-DPC
2020-02-10 17:29:01 +01:00
Dylan DPC
6e1b75b7e1
Rollup merge of #68986 - ecstatic-morse:const-ascii-ctype, r=Centril
Make ASCII ctype functions unstably const

Makes the following inherent methods on `u8` and `char` unstable `const fn`:

 * `is_ascii_alphabetic`
 * `is_ascii_uppercase`
 * `is_ascii_lowercase`
 * `is_ascii_alphanumeric`
 * `is_ascii_digit`
 * `is_ascii_hexdigit`
 * `is_ascii_punctuation`
 * `is_ascii_graphic`
 * `is_ascii_whitespace`
 * `is_ascii_control`

cc #68983
2020-02-10 17:28:59 +01:00
Dylan DPC
24260e5bae
Rollup merge of #68932 - michaelwoerister:self-profile-generic-activity-args, r=wesleywiser
self-profile: Support arguments for generic_activities.

This PR adds support for recording arguments of "generic activities". The most notable use case is LLVM module names, which should be very interesting for `crox` profiles. In the future it might be interesting to add more fine-grained events for pre-query passes like macro expansion.

I tried to judiciously de-duplicate existing self-profile events with `extra_verbose_generic_activity`, now that the latter also generates self-profile events.

r? @wesleywiser
2020-02-10 17:28:57 +01:00
Dylan DPC
531f235134
Rollup merge of #68908 - jwhite927:E0637, r=Dylan-DPC
Add long error code explanation message for E0637

Reference issue [#61137](https://github.com/rust-lang/rust/issues/61137)
To incorporate a long error description for E0637, I have made the necessary modification to error_codes.rs and added error_codes/E0637.md, and blessed the relevant .stderror files. ~~, however when I build rustc stage 1, I am unable to make `$ rustc --explain E0637` work even though rustc appears to be able to call up the long error explanations for other errors. I wanted to guarantee this would work before moving on the blessing the various ui tests that have been affected. @GuillaumeGomez Do you know the most likely reason(s) why this would be the case?~~
Update: `$ rustc --explain E0637` works now.
2020-02-10 17:28:56 +01:00
Dylan DPC
1e26a1c4d1
Rollup merge of #68897 - GuillaumeGomez:clean-up-e0275, r=Dylan-DPC
clean up E0275 explanation

r? @Dylan-DPC
2020-02-10 17:28:54 +01:00
bors
e6ec0d125e Auto merge of #68835 - CAD97:sound-range-inclusive, r=Mark-Simulacrum
Remove problematic specialization from RangeInclusive

Fixes #67194 using the approach [outlined by Mark-Simulacrum](https://github.com/rust-lang/rust/issues/67194#issuecomment-581669549).

> I believe the property we want is that if `PartialEq(&self, &other) == true`, then `self.next() == other.next()`. It is true that this is satisfied by removing the specialization and always doing `is_empty.unwrap_or_default()`; the "wrong" behavior there arises from calling `next()` having an effect on initially empty ranges, as we should be in `is_empty = true` but are not (yet) there. It might be possible to detect that the current state is always empty (i.e., `start > end`) and then not fill in the empty slot. I think this might solve the problem without regressing tests; however, this could have performance implications.

> That approach essentially states that we only use the `is_empty` slot for cases where `start <= end`. That means that `Idx: !Step` and `start > end` would both behave the same, and correctly -- we do not need the boolean if we're not ever going to emit any values from the iterator.

This is implemented here by replacing the `is_empty: Option<bool>` slot with an `exhausted: bool` slot. This flag is

- `false` upon construction,
- `false` when iteration has not yielded an element -- importantly, this means it is always `false` for an iterator empty by construction,
- `false` when iteration has yielded an element and the iterator is not exhausted, and
- only `true` when iteration has been used to exhaust the iterator.

For completeness, this also adds a note to the `Debug` representation to note when the range is exhausted.
2020-02-10 15:24:59 +00:00
Michael Woerister
81dccb1a5c self-profile: Support arguments for generic_activities. 2020-02-10 15:46:41 +01:00
ljedrz
b8893df8d3 preallocate 2 Vecs in traits; tweak WfPredicates::normalize 2020-02-10 15:22:09 +01:00
Guillaume Gomez
37e7b46177 clean up E0275 explanation 2020-02-10 13:25:48 +01:00
Guillaume Gomez
ded629289a Clean up E0283 explanation 2020-02-10 13:23:52 +01:00
bors
4d1241f515 Auto merge of #69012 - Dylan-DPC:rollup-13qn0fq, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #68694 (Reduce the number of `RefCell`s in `InferCtxt`.)
 - #68966 (Improve performance of coherence checks)
 - #68976 (Make `num::NonZeroX::new` an unstable `const fn`)
 - #68992 (Correctly parse `mut a @ b`)
 - #69005 (Small graphviz improvements for the new dataflow framework)
 - #69006 (parser: Keep current and previous tokens precisely)

Failed merges:

r? @ghost
2020-02-10 10:47:39 +00:00
Ralf Jung
d6c5a04eff some more tests for i128 oveflow behavior 2020-02-10 11:37:02 +01:00
Ralf Jung
1ddb0503ff div/rem overflow tests: also test i128 2020-02-10 11:23:04 +01:00
Ralf Jung
b434d7ef8a add test that checks overflows on arithmetic operators 2020-02-10 09:56:17 +01:00
Nicholas Nethercote
f8a02864af Speed up SipHasher128.
The current code in `SipHasher128::short_write` is inefficient. It uses
`u8to64_le` (which is complex and slow) to extract just the right number of
bytes of the input into a u64 and pad the result with zeroes. It then
left-shifts that value in order to bitwise-OR it with `self.tail`.

For example, imagine we have a u32 input 0xIIHH_GGFF and only need three bytes
to fill up `self.tail`. The current code uses `u8to64_le` to construct
0x0000_0000_00HH_GGFF, which is just 0xIIHH_GGFF with the 0xII removed and
zero-extended to a u64. The code then left-shifts that value by five bytes --
discarding the 0x00 byte that replaced the 0xII byte! -- to give
0xHHGG_FF00_0000_0000. It then then ORs that value with self.tail.

There's a much simpler way to do it: zero-extend to u64 first, then left shift.
E.g. 0xIIHH_GGFF is zero-extended to 0x0000_0000_IIHH_GGFF, and then
left-shifted to 0xHHGG_FF00_0000_0000. We don't have to take time to exclude
the unneeded 0xII byte, because it just gets shifted out anyway! It also avoids
multiple occurrences of `unsafe`.

There's a similar story with the setting of `self.tail` at the method's end.
The current code uses `u8to64_le` to extract the remaining part of the input,
but the same effect can be achieved more quickly with a right shift on the
zero-extended input.

All that works on little-endian. It doesn't work for big-endian, but we
can just do a `to_le` before calling `short_write` and then it works.

This commit changes `SipHasher128` to use the simpler shift-based approach. The
code is also smaller, which means that `short_write` is now inlined where
previously it wasn't, which makes things faster again. This gives big
speed-ups for all incremental builds, especially "baseline" incremental
builds.
2020-02-10 15:54:14 +11:00
David Renshaw
371060b598 [parser] change an instance of span_bug() to struct_span_err() to avoid ICE 2020-02-09 23:02:02 -05:00
Dylan DPC
18c6d39b55
Rollup merge of #69006 - petrochenkov:prevspan2, r=Centril
parser: Keep current and previous tokens precisely

...including their unnormalized forms.
Add more documentation for them.

Hopefully, this will help to eliminate footguns like https://github.com/rust-lang/rust/pull/68728#discussion_r373787486.

I'll try to address the FIXMEs in separate PRs during the next week.

r? @Centril
2020-02-10 01:54:23 +01:00
Dylan DPC
a8d4ccf907
Rollup merge of #69005 - ecstatic-morse:unified-dataflow-graphviz, r=wesleywiser
Small graphviz improvements for the new dataflow framework

Split out from #68241. This prints the correct effect diff for each line (the before-effect and the after-effect) and makes marginal improvements to the graphviz output for the new dataflow framework including using monospaced font and better line breaking. This will only be useful when #68241 is merged and the graphviz output changes from this:

![image](https://user-images.githubusercontent.com/29463364/74107776-5e3c3300-4b28-11ea-9d33-4862228b5e87.png)

to this:

![image](https://user-images.githubusercontent.com/29463364/74107751-20d7a580-4b28-11ea-99ca-24f749386601.png)

r? @wesleywiser
2020-02-10 01:54:21 +01:00
Dylan DPC
64d2d04eb9 Rollup merge of #68992 - matthewjasper:imm-binding-after-at, r=Centril
Correctly parse `mut a @ b`

r? @Centril

Closes #67861
Closes #67926
2020-02-10 01:54:20 +01:00
Dylan DPC
e3315f6742
Rollup merge of #68976 - ecstatic-morse:const-non-zero, r=dtolnay
Make `num::NonZeroX::new` an unstable `const fn`

cc #53718

These require `#[feature(const_if_match)]`, meaning they must remain unstable for the time being.
2020-02-10 01:54:18 +01:00