Commit graph

101423 commits

Author SHA1 Message Date
Dylan MacKenzie
b2d021aa2b Make check_consts::Item work on non-const fns
This was originally only needed for validation, which is never run on
non-const `fn`s. The new promotion pass wants to use it, however.
2019-10-25 20:56:56 -07:00
Igor Aleksanov
ae5203a142 libsyntax: Document ast module
Apply review suggestions

Remove links in the module docs

Flatten imports

Apply review suggestions

Remove useless comments

Fix nits
2019-10-26 06:56:11 +03:00
bors
084edc426f Auto merge of #63812 - eddyb:promo-sanity, r=oli-obk
rustc_mir: double-check const-promotion candidates for sanity.

Previously, const promotion involved tracking information about the value in a MIR local (or any part of the computation leading up to that value), aka "qualifs", in a quite stateful manner, which is hard to extend to arbitrary CFGs without a dataflow pass.

However, the nature of the promotion we do is that it's effectively an SSA-like "tree" (or DAG, really), of assigned-once locals - which is how we can take them from the original MIR in the first place.
This structure means that the subset of the MIR responsible for computing any given part of a const-promoted value is readily analyzable by walking that tree/DAG.

This PR implements such an analysis in `promote_consts`, reusing the `HasMutInterior` / `NeedsDrop` computation from `qualify_consts`, but reimplementing the equivalent of `IsNotPromotable` / `IsNotImplicitlyPromotable`.

Eventually we should be able to remove `IsNotPromotable` / `IsNotImplicitlyPromotable` from `qualify_consts`, which will simplify @ecstatic-morse's dataflow-based const-checking efforts.

But currently this is mainly for a crater check-only run - it will compare the results from the old promotion collection and the new promotion validation and ICE if they don't match.

r? @oli-obk
2019-10-26 00:11:36 +00:00
varkor
f47f53078c Make inline associated constants a future compatibility warning 2019-10-26 00:46:07 +01:00
Mark Rousskov
402a8af1d5 Remove lint callback from driver
This is leftover from a restructuring of lint registration for drivers;
it should now happen via the register_lints field on Config rather than
this function.
2019-10-25 19:27:57 -04:00
varkor
f8db8ffcf3 Permit #[track_caller] on inherent methods 2019-10-26 00:04:00 +01:00
Eduard-Mihai Burtescu
f2c8628920 rustc_mir: use the new validator's Qualif in promotion. 2019-10-26 01:45:54 +03:00
Eduard-Mihai Burtescu
6c55fb8227 rustc_mir: double-check const-promotion candidates for sanity. 2019-10-26 01:45:53 +03:00
varkor
6661db006a Correct handling of type flags with ConstValue::Placeholder 2019-10-25 23:38:26 +01:00
varkor
6446f192c7 Permit #[target_feature] on method implementations 2019-10-25 23:28:50 +01:00
varkor
e8566fba0e Move handling of #[track_caller] to check_attr 2019-10-25 23:28:50 +01:00
varkor
b925eb5f42 Update bitflags 2019-10-25 23:26:27 +01:00
varkor
8042206657 Handle ImplItem in check_attr 2019-10-25 23:26:27 +01:00
varkor
41ee9eaee7 Refactor check_track_caller 2019-10-25 23:26:27 +01:00
varkor
4552c8f2f7 Add test for attribute error checking on trait and foreign items 2019-10-25 23:26:27 +01:00
varkor
af2b497776 Improve comments 2019-10-25 23:26:27 +01:00
varkor
66d7ef077a Emit warning for ignored #[inline] on foreign function prototypes 2019-10-25 23:26:27 +01:00
varkor
94c4dd9902 Emit warning for ignored #[inline] on trait method prototypes 2019-10-25 23:26:27 +01:00
varkor
7f3c8438e0 Refactor check_attr 2019-10-25 23:26:27 +01:00
bors
246be7e1a5 Auto merge of #65826 - JohnTitor:rollup-mr6crka, r=JohnTitor
Rollup of 6 pull requests

Successful merges:

 - #65705 (Add {String,Vec}::into_raw_parts)
 - #65749 (Insurance policy in case `iter.size_hint()` lies.)
 - #65799 (Fill tracking issue number for `array_value_iter`)
 - #65800 (self-profiling: Update measureme to 0.4.0 and remove non-RAII methods from profiler.)
 - #65806 (Add [T]::as_ptr_range() and [T]::as_mut_ptr_range().)
 - #65810 (SGX: Clear additional flag on enclave entry)

Failed merges:

r? @ghost
2019-10-25 20:41:28 +00:00
bjorn3
f04867cafb Derive Eq and Hash for SourceInfo again 2019-10-25 21:39:02 +02:00
roblabla
174d4f9caf EFIAPI: Fix symbolname tests 2019-10-25 18:57:54 +00:00
roblabla
e54ae5126c Add proper tracking issue for EFIAPI 2019-10-25 18:47:58 +00:00
matthewjasper
0c05ed29fd
Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-10-25 18:50:40 +01:00
Yuki Okushi
d40c6afba0
Rollup merge of #65810 - raoulstrackx:ac_mitigation, r=nagisa
SGX: Clear additional flag on enclave entry

An attacker could set both the AC flag in CR0 as in rflags. This causes the enclave to perform an AEX upon a misaligned memory access, and an attacker learns some information about the internal enclave state.
The AC flag in rflags is copied from userspace upon an enclave entry. Upon AEX it is copied and later restored. This patch forces the rflag.AC bit to be reset right after an enter.
2019-10-26 02:46:02 +09:00
Yuki Okushi
f0c58e9d85
Rollup merge of #65806 - fusion-engineering-forks:slice-ptr-range, r=Centril
Add [T]::as_ptr_range() and [T]::as_mut_ptr_range().

Implementation of https://github.com/rust-lang/rfcs/pull/2791
2019-10-26 02:46:01 +09:00
Yuki Okushi
574b0780ab
Rollup merge of #65800 - michaelwoerister:measureme-0.4.0, r=wesleywiser
self-profiling: Update measureme to 0.4.0 and remove non-RAII methods from profiler.

This PR removes all non-RAII based profiling methods from `SelfProfilerRef` 🎉
It also delegates the `TimingGuard` implementation to `measureme`, now that that is available there.

r? @wesleywiser
2019-10-26 02:45:59 +09:00
Yuki Okushi
9192f3625d
Rollup merge of #65799 - LukasKalbertodt:fill-array-value-iter-tracking-issue, r=Centril
Fill tracking issue number for `array_value_iter`

Thanks for [noticing](https://github.com/rust-lang/rust/pull/62959#discussion_r338930448)!

r? @Centril
2019-10-26 02:45:58 +09:00
Yuki Okushi
7068c2d4e9
Rollup merge of #65749 - Centril:insurance-policy, r=RalfJung
Insurance policy in case `iter.size_hint()` lies.

Follow up to https://github.com/rust-lang/rust/pull/64949/files#r334235076.
(If the perf impact is bad we can use `debug_assert!` instead.)

The good news is that the UI tests pass locally so `iter.size_hint()` seems to be honest *thus far*.
On the other hand, with the status quo we do not have an insurance policy should that change in some case. This is problematic because a) this could possibly make some program be accepted which shouldn't, b) the compiler itself could have memory unsafety if the correctness of the iterator is assumed in `unsafe { ... }` code (even though the blame lies with the `unsafe { ... }` block in question.)

r? @RalfJung
cc @nnethercote
2019-10-26 02:45:57 +09:00
Yuki Okushi
a808ba374f
Rollup merge of #65705 - shepmaster:vec-into-raw, r=SimonSapin
Add {String,Vec}::into_raw_parts

Aspects to address:

- [x] Create a tracking issue
  - #65816
2019-10-26 02:45:56 +09:00
Eduard-Mihai Burtescu
595d19e625 rustc: replace a few .cloned() with .copied(). 2019-10-25 20:21:37 +03:00
Eduard-Mihai Burtescu
4d81e9dd2f rustc: make DefPathData (and friends) Copy (now that it uses Symbol). 2019-10-25 20:03:17 +03:00
roblabla
13d27aff11 Fix inverted check in EFIAPI 2019-10-25 16:04:21 +00:00
roblabla
61732804e2 Fix EFIABI test
Use revisions to run the EFIABI in multiple configurations, compiling
for each supported UEFI platform, and checking the ABI generated in the
LLVM IR is correct.

Use no_core to make it easier to test.
2019-10-25 16:04:20 +00:00
Mara Bos
381c4425b7 Fix slice::as_ptr_range doctest. 2019-10-25 18:01:31 +02:00
Mazdak Farrokhzad
dfcfca28ad Take out an insurance policy in case iter.size_hint()
lies, underreporting the number of elements.
2019-10-25 17:43:53 +02:00
Jake Goulding
6600cf6040 Add {String,Vec}::into_raw_parts 2019-10-25 11:25:52 -04:00
Jake Goulding
dce8fabc62 Use ManuallyDrop in examples for {Vec,String}::from_raw_parts 2019-10-25 11:22:53 -04:00
Jake Goulding
0d21d257c9 Remove unneeded pointer casting 2019-10-25 11:20:47 -04:00
Pietro Albini
9c44ca231a
ci: fix tidy 2019-10-25 16:51:12 +02:00
Pietro Albini
fe65c8ef4c
ci: set MSYS_BITS environment variable for all windows builders
A few dist builders lacked that variable, causing build failures.
2019-10-25 16:47:41 +02:00
Pietro Albini
19fdc5c07f
ci: fix installation condition for MinGW
I mistakenly inverted the "variable is not set" check in bash.
2019-10-25 16:47:41 +02:00
Pietro Albini
db0078706b
ci: split install-msys2 step into two separate scripts 2019-10-25 16:47:41 +02:00
Pietro Albini
9d15336149
ci: fix wrong path being set in install-msys2.sh 2019-10-25 16:08:43 +02:00
Pietro Albini
d52db03ef0
ci: fix innosetup installation 2019-10-25 16:08:42 +02:00
Pietro Albini
10fa917a13
ci: reuse the mirrors base url from shared.sh in scripts 2019-10-25 16:08:41 +02:00
Pietro Albini
7855ee2aa8
ci: fix tidy 2019-10-25 16:08:39 +02:00
Pietro Albini
4bc4fae073
ci: cleanup platform detection 2019-10-25 16:08:37 +02:00
Pietro Albini
102dc3ddc1
ci: use shared.sh in scripts/install-awscli.sh 2019-10-25 16:08:36 +02:00
Pietro Albini
9c252f14bc
ci: extract verifying line endings into a script 2019-10-25 16:08:35 +02:00