]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoDeprecate the `FxHashMap()` and `FxHashSet()` constructor function hack
Oliver Scherer [Tue, 16 Oct 2018 08:44:26 +0000 (10:44 +0200)]
Deprecate the `FxHashMap()` and `FxHashSet()` constructor function hack

5 years agotype_check/mod.rs: rustfmt
Niko Matsakis [Wed, 17 Oct 2018 16:15:56 +0000 (12:15 -0400)]
type_check/mod.rs: rustfmt

5 years agoreplace `UserTypeAnnotation::AdtDef` with `TypeOf`
Niko Matsakis [Wed, 17 Oct 2018 15:48:41 +0000 (11:48 -0400)]
replace `UserTypeAnnotation::AdtDef` with `TypeOf`

5 years agopropagate user-type annotation for constants in expressions
Niko Matsakis [Wed, 17 Oct 2018 14:14:29 +0000 (10:14 -0400)]
propagate user-type annotation for constants in expressions

5 years agoconvert `FnDef` to `TypeOf`, which is more general
Niko Matsakis [Wed, 17 Oct 2018 13:58:52 +0000 (09:58 -0400)]
convert `FnDef` to `TypeOf`, which is more general

5 years agoremove outdated assertion
Niko Matsakis [Wed, 17 Oct 2018 16:32:00 +0000 (12:32 -0400)]
remove outdated assertion

This dates from the days before we instantiated user types with
inference variables.

5 years agoFixed: Multiple errors on single typo in match pattern
Pramod Bisht [Fri, 19 Oct 2018 10:33:49 +0000 (10:33 +0000)]
Fixed: Multiple errors on single typo in match pattern

Here we have fixed the case where we were throwing two diagnostic
messages `E0026` and `E0027` for same case like this

Example
error[E0026]: variant `A::A` does not have a field named `fob`
  --> src/test/ui/issue-52717.rs:20:12
   |
20 |     A::A { fob } => { println!("{}", fob); }
   |            ^^^ variant `A::A` does not have this field

error[E0027]: pattern does not mention field `foo`
  --> src/test/ui/issue-52717.rs:20:5
   |
20 |     A::A { fob } => { println!("{}", fob); }
   |     ^^^^^^^^^^^^ missing field `foo`

error: aborting due to 2 previous errors

Here above we can see that both `E0026` and `E0027` are depicting
same thing.

So, to fix this issue, we are simply checking element of
`inexistent_fields` is there any value lies in
`unmentioned_fields` using Levenshtein algorithm, if does
then for that case we are simply deleting element from
`unmentioned_fields`. More or less now instead of showing
separate message in `E0027` we are giving extra hint on `E0026`

Address: #52717

5 years agorustc: Fix (again) simd vectors by-val in ABI
Alex Crichton [Sun, 14 Oct 2018 19:27:22 +0000 (12:27 -0700)]
rustc: Fix (again) simd vectors by-val in ABI

The issue of passing around SIMD types as values between functions has
seen [quite a lot] of [discussion], and although we thought [we fixed
it][quite a lot] it [wasn't]! This PR is a change to rustc to, again,
try to fix this issue.

The fundamental problem here remains the same, if a SIMD vector argument
is passed by-value in LLVM's function type, then if the caller and
callee disagree on target features a miscompile happens. We solve this
by never passing SIMD vectors by-value, but LLVM will still thwart us
with its argument promotion pass to promote by-ref SIMD arguments to
by-val SIMD arguments.

This commit is an attempt to thwart LLVM thwarting us. We, just before
codegen, will take yet another look at the LLVM module and demote any
by-value SIMD arguments we see. This is a very manual attempt by us to
ensure the codegen for a module keeps working, and it unfortunately is
likely producing suboptimal code, even in release mode. The saving grace
for this, in theory, is that if SIMD types are passed by-value across
a boundary in release mode it's pretty unlikely to be performance
sensitive (as it's already doing a load/store, and otherwise
perf-sensitive bits should be inlined).

The implementation here is basically a big wad of C++. It was largely
copied from LLVM's own argument promotion pass, only doing the reverse.
In local testing this...

Closes #50154
Closes #52636
Closes #54583
Closes #55059

[quite a lot]: https://github.com/rust-lang/rust/pull/47743
[discussion]: https://github.com/rust-lang/rust/issues/44367
[wasn't]: https://github.com/rust-lang/rust/issues/50154

5 years agoAuto merge of #55194 - kennytm:rollup, r=kennytm
bors [Fri, 19 Oct 2018 09:29:48 +0000 (09:29 +0000)]
Auto merge of #55194 - kennytm:rollup, r=kennytm

Rollup of 7 pull requests

Successful merges:

 - #54300 (Updated RELEASES.md for 1.30.0)
 - #55013 ([NLL] Propagate bounds from generators)
 - #55071 (Fix ICE and report a human readable error)
 - #55144 (Cleanup resolve)
 - #55166 (Don't warn about parentheses on `match (return)`)
 - #55169 (Add a `copysign` function to f32 and f64)
 - #55178 (Stabilize slice::chunks_exact(), chunks_exact_mut(), rchunks(), rchunks_mut(), rchunks_exact(), rchunks_exact_mut())

5 years agoRollup merge of #55013 - matthewjasper:propagate-generator-bounds, r=nikomatsakis
kennytm [Fri, 19 Oct 2018 08:48:36 +0000 (16:48 +0800)]
Rollup merge of #55013 - matthewjasper:propagate-generator-bounds, r=nikomatsakis

[NLL] Propagate bounds from generators

This used to only be done for closures.

5 years agoRollup merge of #55178 - sdroege:stabilize-chunks-exact, r=alexcrichton
kennytm [Fri, 19 Oct 2018 03:03:35 +0000 (11:03 +0800)]
Rollup merge of #55178 - sdroege:stabilize-chunks-exact, r=alexcrichton

Stabilize slice::chunks_exact(), chunks_exact_mut(), rchunks(), rchunks_mut(), rchunks_exact(), rchunks_exact_mut()

Fixes #47115, #55177

5 years agoRollup merge of #55169 - raphlinus:copysign, r=joshtriplett
kennytm [Fri, 19 Oct 2018 03:03:34 +0000 (11:03 +0800)]
Rollup merge of #55169 - raphlinus:copysign, r=joshtriplett

Add a `copysign` function to f32 and f64

This patch adds a `copysign` function to the float primitive types. It is an exceptionally useful function for writing efficient numeric code, as it often avoids branches, is auto-vectorizable, and there are efficient intrinsics for most platforms.

I think this might work as-is, as the relevant `copysign` intrinsic is already used internally for the implementation of `signum`. It's possible that an implementation might be needed in japaric/libm for portability across all platforms, in which case I'll do that also.

Part of the work towards #55107

5 years agoRollup merge of #55166 - varkor:ret-parens, r=davidtwco
kennytm [Fri, 19 Oct 2018 03:03:33 +0000 (11:03 +0800)]
Rollup merge of #55166 - varkor:ret-parens, r=davidtwco

Don't warn about parentheses on `match (return)`

Fixes #55164.

5 years agoRollup merge of #55144 - ljedrz:cleanup_resolve, r=petrochenkov
kennytm [Fri, 19 Oct 2018 03:03:32 +0000 (11:03 +0800)]
Rollup merge of #55144 - ljedrz:cleanup_resolve, r=petrochenkov

Cleanup resolve

- improve/remove allocations
- `truncate` instead of `pop`ping in a loop
- improve common patterns

5 years agoRollup merge of #55071 - oli-obk:const_cast_🍨, r=RalfJung
kennytm [Fri, 19 Oct 2018 03:03:30 +0000 (11:03 +0800)]
Rollup merge of #55071 - oli-obk:const_cast_🍨, r=RalfJung

Fix ICE and report a human readable error

fixes #55063

r? @RalfJung

5 years agoPrefer unwrap_or_else to unwrap_or in case of function calls/allocations
ljedrz [Fri, 12 Oct 2018 14:16:00 +0000 (16:16 +0200)]
Prefer unwrap_or_else to unwrap_or in case of function calls/allocations

5 years agoAuto merge of #55040 - scalexm:param-env, r=nikomatsakis
bors [Fri, 19 Oct 2018 06:38:10 +0000 (06:38 +0000)]
Auto merge of #55040 - scalexm:param-env, r=nikomatsakis

Replace `ParamEnv` with a new type in chalk context.

I left a few FIXMEs.

r? @nikomatsakis

5 years agoRollup merge of #54300 - Aaronepower:master, r=Aaronepower
kennytm [Fri, 19 Oct 2018 03:03:25 +0000 (11:03 +0800)]
Rollup merge of #54300 - Aaronepower:master, r=Aaronepower

Updated RELEASES.md for 1.30.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)

r? @Mark-Simulacrum

cc @rust-lang/release

5 years agoAuto merge of #55004 - oli-obk:sized_static, r=cramertj
bors [Fri, 19 Oct 2018 00:22:25 +0000 (00:22 +0000)]
Auto merge of #55004 - oli-obk:sized_static, r=cramertj

Check the type of statics and constants for `Sized`ness

fixes #54410

5 years agoPropagate bounds from generators
Matthew Jasper [Fri, 12 Oct 2018 14:16:29 +0000 (15:16 +0100)]
Propagate bounds from generators

5 years agoAuto merge of #54979 - estebank:path-unsized, r=nikomatsakis
bors [Thu, 18 Oct 2018 21:42:21 +0000 (21:42 +0000)]
Auto merge of #54979 - estebank:path-unsized, r=nikomatsakis

Custom E0277 diagnostic for `Path`

r? @nikomatsakis we have a way to target `Path` exclusively, we need to identify the correct text to show to consider #23286 fixed.

5 years agoAuto merge of #54976 - davidtwco:issue-52663-special-case-closures, r=nikomatsakis
bors [Thu, 18 Oct 2018 18:14:52 +0000 (18:14 +0000)]
Auto merge of #54976 - davidtwco:issue-52663-special-case-closures, r=nikomatsakis

NLL lacks various special case handling of closures

Part of #52663.

Firstly, this PR extends existing handling of closures to also support generators.

Second, this PR adds the note found in the AST when a closure is invoked twice and captures a variable by-value:

```text
note: closure cannot be invoked more than once because it moves the variable `dict` out of its environment
  --> $DIR/issue-42065.rs:16:29
   |
LL |         for (key, value) in dict {
   |                             ^^^^
```

r? @nikomatsakis
cc @pnkfelix

5 years agoImprove check to consider how value is used.
David Wood [Tue, 16 Oct 2018 17:37:01 +0000 (19:37 +0200)]
Improve check to consider how value is used.

5 years agoAdd by-value captured variable note on second use.
David Wood [Wed, 10 Oct 2018 23:19:55 +0000 (01:19 +0200)]
Add by-value captured variable note on second use.

This commit adds a note that was present in the AST borrow checker when
closures are invoked more than once and have captured variables
by-value.

5 years agoStabilize slice::rchunks(), rchunks_mut(), rchunks_exact(), rchunk_exact_mut()
Sebastian Dröge [Thu, 18 Oct 2018 15:48:02 +0000 (18:48 +0300)]
Stabilize slice::rchunks(), rchunks_mut(), rchunks_exact(), rchunk_exact_mut()

Fixes #55177

5 years agoStabilize slice::chunks_exact() and slice::chunks_exact_mut()
Sebastian Dröge [Thu, 18 Oct 2018 07:22:34 +0000 (10:22 +0300)]
Stabilize slice::chunks_exact() and slice::chunks_exact_mut()

Fixes #47115

5 years agoExtend closure special-casing for generators.
David Wood [Wed, 10 Oct 2018 19:56:17 +0000 (21:56 +0200)]
Extend closure special-casing for generators.

This commit extends existing special-casing of closures to highlight the
use of variables within generators that are causing the generator to
borrow them.

5 years agoAdd must_use on copysign
Raph Levien [Thu, 18 Oct 2018 15:35:09 +0000 (08:35 -0700)]
Add must_use on copysign

Added a #[must_use] annotation on copysign, per review feedback.

5 years agoAuto merge of #54580 - sdroege:rchunks, r=SimonSapin
bors [Thu, 18 Oct 2018 12:47:31 +0000 (12:47 +0000)]
Auto merge of #54580 - sdroege:rchunks, r=SimonSapin

Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()

These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

----

The new iterators were motivated by a [comment](https://github.com/rust-lang/rust/issues/47115#issuecomment-424141121) by @DutchGhost.

~~~This currently includes the commits from https://github.com/rust-lang/rust/pull/54537 to not have to rename things twice or have merge conflicts. I'll force-push a new version of the branch ones those are in master.~~~

Also the stabilization tracking issue is just some number right now. I'll create the corresponding issue once this is reviewed and otherwise mergeable.

cc @DutchGhost

5 years agoturn casts-to-raw into a proper raw-reborrow; that is just cleaner
Ralf Jung [Thu, 18 Oct 2018 09:59:56 +0000 (11:59 +0200)]
turn casts-to-raw into a proper raw-reborrow; that is just cleaner

5 years agoUpdated RELEASES.md for 1.30.0
Aaron Power [Mon, 17 Sep 2018 16:44:04 +0000 (17:44 +0100)]
Updated RELEASES.md for 1.30.0

5 years agodon't do any work towards ptr provenance in const mode
Ralf Jung [Wed, 17 Oct 2018 15:36:26 +0000 (17:36 +0200)]
don't do any work towards ptr provenance in const mode

5 years agothe tidy strikes again
Ralf Jung [Wed, 17 Oct 2018 14:06:11 +0000 (16:06 +0200)]
the tidy strikes again

5 years agoadd 'raw reference' to the machine hook, and use that in ptr-to-raw casts
Ralf Jung [Wed, 17 Oct 2018 12:50:36 +0000 (14:50 +0200)]
add 'raw reference' to the machine hook, and use that in ptr-to-raw casts

5 years agomiri: debug! print when we are leaving/entering a function
Ralf Jung [Wed, 17 Oct 2018 10:46:20 +0000 (12:46 +0200)]
miri: debug! print when we are leaving/entering a function

With a hack to exclude the topmost function for now, because that triggers an ICE...

5 years agoForward entire ptr used for dealloaction to machine
Ralf Jung [Wed, 17 Oct 2018 10:36:18 +0000 (12:36 +0200)]
Forward entire ptr used for dealloaction to machine

Also, demote some debug! to trace!

5 years agorepeat after me: Clone, Copy, Debug
Ralf Jung [Tue, 16 Oct 2018 16:50:11 +0000 (18:50 +0200)]
repeat after me: Clone, Copy, Debug

5 years agoalso hook dereferencing
Ralf Jung [Tue, 16 Oct 2018 15:00:39 +0000 (17:00 +0200)]
also hook dereferencing

5 years agoeval_context: move getters together and add one for is_freeze
Ralf Jung [Tue, 16 Oct 2018 13:31:04 +0000 (15:31 +0200)]
eval_context: move getters together and add one for is_freeze

5 years agoprovide machine hooks for creating references and accessing memory
Ralf Jung [Tue, 16 Oct 2018 12:50:07 +0000 (14:50 +0200)]
provide machine hooks for creating references and accessing memory

5 years agogive machine more control over what counts as memory leak
Ralf Jung [Tue, 16 Oct 2018 10:45:44 +0000 (12:45 +0200)]
give machine more control over what counts as memory leak

5 years agoadd support for storing extra data in an allocation
Ralf Jung [Tue, 16 Oct 2018 07:15:13 +0000 (09:15 +0200)]
add support for storing extra data in an allocation

5 years agocomment on keeping validity in sync
Ralf Jung [Tue, 16 Oct 2018 06:37:27 +0000 (08:37 +0200)]
comment on keeping validity in sync

5 years agoAuto merge of #54349 - GuillaumeGomez:no-example-lint, r=QuietMisdreavus
bors [Thu, 18 Oct 2018 09:53:29 +0000 (09:53 +0000)]
Auto merge of #54349 - GuillaumeGomez:no-example-lint, r=QuietMisdreavus

[rustdoc] Add lint for doc without codeblocks

Fixes #53805.

r? @QuietMisdreavus

5 years agoresolve_lifetime.rs: rustfmt
Niko Matsakis [Thu, 18 Oct 2018 09:39:53 +0000 (05:39 -0400)]
resolve_lifetime.rs: rustfmt

5 years agoMake warnings into errors
varkor [Thu, 18 Oct 2018 09:35:01 +0000 (10:35 +0100)]
Make warnings into errors

5 years agoAdd slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()
Sebastian Dröge [Tue, 25 Sep 2018 22:35:54 +0000 (01:35 +0300)]
Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()

These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

See #55177 for the tracking issue

5 years agoAuto merge of #55171 - kennytm:rollup, r=kennytm
bors [Thu, 18 Oct 2018 07:02:11 +0000 (07:02 +0000)]
Auto merge of #55171 - kennytm:rollup, r=kennytm

Rollup of 18 pull requests

Successful merges:

 - #54646 (improve documentation on std::thread::sleep)
 - #54933 (Cleanup the rest of codegen_llvm)
 - #54964 (Run both lldb and gdb tests)
 - #55016 (Deduplicate some code and compile-time values around vtables)
 - #55031 (Improve verify_llvm_ir config option)
 - #55050 (doc std::fmt: the Python inspiration is already mentioned in precedin…)
 - #55077 (rustdoc: Use dyn keyword when rendering dynamic traits)
 - #55080 (Detect if access to localStorage is forbidden by the user's browser)
 - #55090 (regression test for move out of borrow via pattern)
 - #55102 (resolve: Do not skip extern prelude during speculative resolution)
 - #55104 (Add test for #34229)
 - #55111 ([Rustc Book] Explain --cfg's arguments)
 - #55122 (Cleanup mir/borrowck)
 - #55127 (Remove HybridBitSet::dummy)
 - #55128 (Fix LLVMRustInlineAsmVerify return type mismatch)
 - #55142 (miri: layout should not affect CTFE checks (outside of validation))
 - #55151 (Cleanup nll)
 - #55161 ([librustdoc] Disable spellcheck for search field)

5 years agoRollup merge of #55111 - Havvy:rustc-book-cfg-examples, r=GuillaumeGomez
kennytm [Thu, 18 Oct 2018 04:56:07 +0000 (12:56 +0800)]
Rollup merge of #55111 - Havvy:rustc-book-cfg-examples, r=GuillaumeGomez

[Rustc Book] Explain --cfg's arguments

I removed this from the reference since it's rustc specific, and noticed it wasn't well documented on the page that should document it well. It does seem to go against the grain of one line per command line flag though.

5 years agoRollup merge of #55161 - akxcv:rustdoc/disable-spellcheck, r=QuietMisdreavus,Guillaum...
kennytm [Thu, 18 Oct 2018 02:47:38 +0000 (10:47 +0800)]
Rollup merge of #55161 - akxcv:rustdoc/disable-spellcheck, r=QuietMisdreavus,GuillaumeGomez

[librustdoc] Disable spellcheck for search field

This disables spellchecking for the search field in the rustdoc web interface.

As someone who uses Safari to browse through Rust docs, spellchecking gets really annoying.

5 years agoRollup merge of #55151 - ljedrz:cleanup_nll, r=estebank
kennytm [Thu, 18 Oct 2018 02:47:37 +0000 (10:47 +0800)]
Rollup merge of #55151 - ljedrz:cleanup_nll, r=estebank

Cleanup nll

- improve allocations
- improve `format!` calls
- improve common patterns

5 years agoRollup merge of #55142 - RalfJung:miri-uninhabited-enum, r=oli-obk
kennytm [Thu, 18 Oct 2018 02:47:36 +0000 (10:47 +0800)]
Rollup merge of #55142 - RalfJung:miri-uninhabited-enum, r=oli-obk

miri: layout should not affect CTFE checks (outside of validation)

Either the enum has no valid discriminant, then the code later will catch that; or it does, then we shouldn't error out so early (absent enforcing validity).

Interestingly, the miri test suite still passes; my guess is we don't even get here for uninhabited types?

r? @oli-obk

5 years agoRollup merge of #55128 - varkor:LLVMRustInlineAsmVerify-return-bool, r=rkruppe
kennytm [Thu, 18 Oct 2018 02:47:34 +0000 (10:47 +0800)]
Rollup merge of #55128 - varkor:LLVMRustInlineAsmVerify-return-bool, r=rkruppe

Fix LLVMRustInlineAsmVerify return type mismatch

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

r? @rkruppe
cc @levex

5 years agoRollup merge of #55127 - ljedrz:simplify_hybridbitset, r=matthewjasper
kennytm [Thu, 18 Oct 2018 02:47:33 +0000 (10:47 +0800)]
Rollup merge of #55127 - ljedrz:simplify_hybridbitset, r=matthewjasper

Remove HybridBitSet::dummy

This simplifies some of the `HybridBitSet` code.

cc @nnethercote

5 years agoRollup merge of #55122 - ljedrz:cleanup_mir_borrowck, r=Mark-Simulacrum
kennytm [Thu, 18 Oct 2018 02:47:32 +0000 (10:47 +0800)]
Rollup merge of #55122 - ljedrz:cleanup_mir_borrowck, r=Mark-Simulacrum

Cleanup mir/borrowck

- remove a redundant `.clone()`
- a few string tweaks
- deduplicate assignments and `return`s
- simplify common patterns
- remove redundant `return`s

5 years agoRollup merge of #55104 - estebank:addtest, r=alexcrichton
kennytm [Thu, 18 Oct 2018 02:47:29 +0000 (10:47 +0800)]
Rollup merge of #55104 - estebank:addtest, r=alexcrichton

Add test for #34229

Fix #34229.

5 years agoRollup merge of #55102 - petrochenkov:trextra, r=nikomatsakis
kennytm [Thu, 18 Oct 2018 02:47:28 +0000 (10:47 +0800)]
Rollup merge of #55102 - petrochenkov:trextra, r=nikomatsakis

resolve: Do not skip extern prelude during speculative resolution

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

5 years agoRollup merge of #55090 - pnkfelix:issue-54597-regression-test, r=estebank
kennytm [Thu, 18 Oct 2018 02:47:27 +0000 (10:47 +0800)]
Rollup merge of #55090 - pnkfelix:issue-54597-regression-test, r=estebank

regression test for move out of borrow via pattern

regression test for issue #54597.

(We may have other tests that cover this, but I couldn't immediately find them associated with the PR that originally fixed the ICE here.)

5 years agoRollup merge of #55080 - thanatos:fix-localstorage-crash, r=GuillaumeGomez
kennytm [Thu, 18 Oct 2018 02:47:26 +0000 (10:47 +0800)]
Rollup merge of #55080 - thanatos:fix-localstorage-crash, r=GuillaumeGomez

Detect if access to localStorage is forbidden by the user's browser

If the user's cookie/persistent storage setting forbid access to `localStorage`, catch the exception and abort the access.

Currently, attempting to use the expand/contract links at the top of the page for structs/consts/etc. fails due to an unhandled error while accessing `localStorage`, if such access is forbidden, as the exception from the failed access propagates all the way out, interrupting the expand/contract. Instead, I would like to degrade gracefully; the access won't happen (the collapse/expand state won't get persisted) but the actual expanding/contracting of the item will go on to succeed.

Fixes #55079

5 years agoRollup merge of #55077 - ollie27:rustdoc_dyn_trait, r=QuietMisdreavus
kennytm [Thu, 18 Oct 2018 02:47:24 +0000 (10:47 +0800)]
Rollup merge of #55077 - ollie27:rustdoc_dyn_trait, r=QuietMisdreavus

rustdoc: Use dyn keyword when rendering dynamic traits

The dyn keyword has been stable for a while now so rustdoc should start using it.

r? @QuietMisdreavus

5 years agoRollup merge of #55050 - tshepang:repetition, r=steveklabnik
kennytm [Thu, 18 Oct 2018 02:47:23 +0000 (10:47 +0800)]
Rollup merge of #55050 - tshepang:repetition, r=steveklabnik

doc std::fmt: the Python inspiration is already mentioned in precedin…

…g paragraph

5 years agoRollup merge of #55031 - nikic:verify_llvm_ir, r=Mark-Simulacrum
kennytm [Thu, 18 Oct 2018 02:47:22 +0000 (10:47 +0800)]
Rollup merge of #55031 - nikic:verify_llvm_ir, r=Mark-Simulacrum

Improve verify_llvm_ir config option

LLVM IR verification has been disabled by default in #51230. However, the implementation doesn't quite match what was discussed in the discussion. This patch implements two changes:

* Make `verify_llvm_ir` influence the behavior of the compiled rustc binary, rather than just the rustc build system. That is, if `verify_llvm_ir=true`, even manual invocations of the built rustc will verify LLVM IR.
* Enable verification of LLVM IR in CI, for non-deploy and deploy-alt builds. This is similar to how LLVM assertions are handled.

5 years agoRollup merge of #55016 - oli-obk:vtables💥_vtables_everywhere, r=RalfJung
kennytm [Thu, 18 Oct 2018 02:47:21 +0000 (10:47 +0800)]
Rollup merge of #55016 - oli-obk:vtables💥_vtables_everywhere, r=RalfJung

Deduplicate some code and compile-time values around vtables

r? @RalfJung

5 years agoRollup merge of #54964 - tromey:run-both-gdb-and-lldb-tests, r=nikomatsakis
kennytm [Thu, 18 Oct 2018 02:47:20 +0000 (10:47 +0800)]
Rollup merge of #54964 - tromey:run-both-gdb-and-lldb-tests, r=nikomatsakis

Run both lldb and gdb tests

Currently lldb tests are run only on macOS, and gdb tests are only run
elsewhere.  This patch changes this to run tests depending on what is
available.

One test is changed, as it was previously marked as failing on macOS,
whereas really it is a generic failure with lldb.

Closes #54721

5 years agoRollup merge of #54933 - ljedrz:cleanup_codegen_llvm/misc, r=varkor
kennytm [Thu, 18 Oct 2018 02:47:18 +0000 (10:47 +0800)]
Rollup merge of #54933 - ljedrz:cleanup_codegen_llvm/misc, r=varkor

Cleanup the rest of codegen_llvm

- improve common patterns
- convert string literals with `to_owned`
- remove explicit `return`s
- whitespace & formatting improvements

5 years agoRollup merge of #54646 - vn971:fix_std_thread_sleep, r=frewsxcv
kennytm [Thu, 18 Oct 2018 02:47:17 +0000 (10:47 +0800)]
Rollup merge of #54646 - vn971:fix_std_thread_sleep, r=frewsxcv

improve documentation on std::thread::sleep

5 years agoFix inconsistent documentation
Raph Levien [Thu, 18 Oct 2018 04:09:55 +0000 (21:09 -0700)]
Fix inconsistent documentation

I improved the f32 version and made a copy-paste error for f64.

5 years agoAdd a `copysign` function to f32 and f64
Raph Levien [Thu, 18 Oct 2018 01:15:00 +0000 (18:15 -0700)]
Add a `copysign` function to f32 and f64

This patch adds a `copysign` function to the float primitive types.
It is an exceptionally useful function for writing efficient numeric
code, as it often avoids branches, is auto-vectorizable, and there
are efficient intrinsics for most platforms.

I think this might work as-is, as the relevant `copysign` intrinsic
is already used internally for the implementation of `signum`. It's
possible that an implementation might be needed in japaric/libm for
portability across all platforms, in which case I'll do that also.

Part of the work towards #55107

5 years agoAuto merge of #55134 - davidtwco:issue-55118, r=pnkfelix
bors [Wed, 17 Oct 2018 23:16:10 +0000 (23:16 +0000)]
Auto merge of #55134 - davidtwco:issue-55118, r=pnkfelix

NLL: change compare-mode=nll to use borrowck=migrate

Fixes #55118.

This PR is split into two parts:

The first commit is a minor change that fixes a flaw in the existing `borrowck=migrate` implementation whereby a lint that was promoted to an error in the AST borrow checker would result in the same lint from the NLL borrow checker being downgraded to a warning in migrate mode. This PR fixes this by ensuring lints are exempt from buffering in the NLL borrow checker.

The second commit updates `compiletest` to make the NLL compare mode use `-Z borrowck=migrate` rather than `-Z borrowck=mir`. The third commit shows all the test output changes that result from this.

r? @pnkfelix

5 years agoWarning about unreachable arms after matching on a diverging type
varkor [Wed, 17 Oct 2018 23:05:19 +0000 (00:05 +0100)]
Warning about unreachable arms after matching on a diverging type

5 years agoDon't warn about parentheses on `match (return)`
varkor [Wed, 17 Oct 2018 22:51:01 +0000 (23:51 +0100)]
Don't warn about parentheses on `match (return)`

5 years agomove E0637 to lowering and improve output, add more tests
Niko Matsakis [Thu, 11 Oct 2018 19:51:44 +0000 (15:51 -0400)]
move E0637 to lowering and improve output, add more tests

5 years ago[librustdoc] Disable spellcheck for search field
Alexander Komarov [Wed, 17 Oct 2018 20:58:21 +0000 (23:58 +0300)]
[librustdoc] Disable spellcheck for search field

5 years agonll: improve common patterns
ljedrz [Wed, 17 Oct 2018 14:58:12 +0000 (16:58 +0200)]
nll: improve common patterns

5 years agonll: improve format operations
ljedrz [Wed, 17 Oct 2018 14:54:17 +0000 (16:54 +0200)]
nll: improve format operations

5 years agonll: improve allocations
ljedrz [Wed, 17 Oct 2018 14:52:35 +0000 (16:52 +0200)]
nll: improve allocations

5 years agoresolve: improve/remove allocations
ljedrz [Wed, 17 Oct 2018 09:36:19 +0000 (11:36 +0200)]
resolve: improve/remove allocations

5 years agoresolve: improve common patterns
ljedrz [Wed, 17 Oct 2018 09:13:44 +0000 (11:13 +0200)]
resolve: improve common patterns

5 years agomir/borrowck: remove a redundant clone
ljedrz [Tue, 16 Oct 2018 13:33:03 +0000 (15:33 +0200)]
mir/borrowck: remove a redundant clone

5 years agomir/borrowck: remove redundant returns
ljedrz [Tue, 16 Oct 2018 13:25:18 +0000 (15:25 +0200)]
mir/borrowck: remove redundant returns

5 years agomir/borrowck: deduplicate assignments and returns
ljedrz [Tue, 16 Oct 2018 13:13:11 +0000 (15:13 +0200)]
mir/borrowck: deduplicate assignments and returns

5 years agomir/borrowck: a few string tweaks
ljedrz [Tue, 16 Oct 2018 13:10:59 +0000 (15:10 +0200)]
mir/borrowck: a few string tweaks

5 years agomir/borrowck: simplify common patterns
ljedrz [Tue, 16 Oct 2018 13:06:59 +0000 (15:06 +0200)]
mir/borrowck: simplify common patterns

5 years agoRe-use memory in `program_clauses_for_env`
scalexm [Sat, 13 Oct 2018 15:10:56 +0000 (17:10 +0200)]
Re-use memory in `program_clauses_for_env`

5 years agoImplement `InferenceTable::add_clauses`
scalexm [Sat, 13 Oct 2018 14:29:21 +0000 (16:29 +0200)]
Implement `InferenceTable::add_clauses`

5 years agoAdd tests for `program_clauses_for_env`
scalexm [Sat, 13 Oct 2018 14:23:42 +0000 (16:23 +0200)]
Add tests for `program_clauses_for_env`

5 years agoCategorize chalk clauses
scalexm [Fri, 12 Oct 2018 17:24:18 +0000 (19:24 +0200)]
Categorize chalk clauses

5 years agoAdd `FromEnv` for input types in the environment
scalexm [Thu, 11 Oct 2018 15:57:45 +0000 (17:57 +0200)]
Add `FromEnv` for input types in the environment

5 years agoImplement the `environment` query
scalexm [Thu, 11 Oct 2018 14:26:43 +0000 (16:26 +0200)]
Implement the `environment` query

5 years agoVisit tys in `program_clauses_for_env`
scalexm [Thu, 11 Oct 2018 12:40:14 +0000 (14:40 +0200)]
Visit tys in `program_clauses_for_env`

5 years agoUse `Environment` instead of `ty::ParamEnv` in chalk context
scalexm [Wed, 10 Oct 2018 15:14:33 +0000 (17:14 +0200)]
Use `Environment` instead of `ty::ParamEnv` in chalk context

5 years agoAuto merge of #54946 - estebank:iterator, r=varkor
bors [Wed, 17 Oct 2018 11:47:53 +0000 (11:47 +0000)]
Auto merge of #54946 - estebank:iterator, r=varkor

Add filtering option to `rustc_on_unimplemented` and reword `Iterator` E0277 errors

 - Add more targetting filters for arrays to `rustc_on_unimplemented` (Fix #53766)
 - Detect one element array of `Range` type, which is potentially a typo:
   `for _ in [0..10] {}` where iterating between `0` and `10` was intended.
   (Fix #23141)
 - Suggest `.bytes()` and `.chars()` for `String`.
 - Suggest borrowing or `.iter()` on arrays (Fix #36391)
 - Suggest using range literal when iterating on integers (Fix #34353)
 - Do not suggest `.iter()` by default (Fix #50773, fix #46806)
 - Add regression test (Fix #22872)

5 years agoAuto merge of #54941 - pnkfelix:issue-21232-reject-partial-reinit, r=nikomatsakis
bors [Wed, 17 Oct 2018 09:13:51 +0000 (09:13 +0000)]
Auto merge of #54941 - pnkfelix:issue-21232-reject-partial-reinit, r=nikomatsakis

reject partial init and reinit of uninitialized data

Reject partial initialization of uninitialized structured types (i.e. structs and tuples) and also reject partial *reinitialization* of such types.

Fix #54986

Fix #54499

cc #21232

5 years agoresolve: Do not skip extern prelude during speculative resolution
Vadim Petrochenkov [Mon, 15 Oct 2018 20:43:59 +0000 (23:43 +0300)]
resolve: Do not skip extern prelude during speculative resolution

5 years agolayout should not affect CTFE checks (outside of validation)
Ralf Jung [Wed, 17 Oct 2018 07:24:43 +0000 (09:24 +0200)]
layout should not affect CTFE checks (outside of validation)

5 years agoSquash closure cast error into fn ptr cast error
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer [Wed, 17 Oct 2018 07:04:10 +0000 (09:04 +0200)]
Squash closure cast error into fn ptr cast error

5 years agoAuto merge of #54939 - pnkfelix:issue-54478-dont-prefer-dynamic-in-doc-tests, r=Quiet...
bors [Wed, 17 Oct 2018 06:42:15 +0000 (06:42 +0000)]
Auto merge of #54939 - pnkfelix:issue-54478-dont-prefer-dynamic-in-doc-tests, r=QuietMisdreavus

rustdoc: don't prefer dynamic linking in doc tests

This is an attempt to address the regression in #54478

This may be a case where the cure is worse than the disease, at least in the short term...

cc @alexcrichton

5 years agoMove usableLocalStorage() above functions that make use of it
Roy Wellington Ⅳ [Wed, 17 Oct 2018 05:15:27 +0000 (22:15 -0700)]
Move usableLocalStorage() above functions that make use of it

5 years agoAuto merge of #54671 - petrochenkov:extpre2015, r=nikomatsakis
bors [Wed, 17 Oct 2018 01:59:28 +0000 (01:59 +0000)]
Auto merge of #54671 - petrochenkov:extpre2015, r=nikomatsakis

resolve: Scale back hard-coded extern prelude additions on 2015 edition

https://github.com/rust-lang/rust/pull/54404 stabilized `feature(extern_prelude)` on 2015 edition, including the hard-coded parts not passed with `--extern`.
First of all, I'd want to confirm that this is intended stabilization, rather than a part of the "extended beta" scheme that's going to be reverted before releasing stable.
(EDIT: to clarify - this is a question, I'm \*asking\* for confirmation, rather than give it.)

Second, on 2015 edition extern prelude is not so fundamentally tied to imports and is a mere convenience, so this PR scales them back to the uncontroversial subset.
The "uncontroversial subset" means that if libcore is injected it brings `core` into prelude, if libstd is injected it brings `std` and `core` into prelude.
On 2015 edition this can be implemented through the library prelude (rather than hard-coding in the compiler) right now, I'll do it in a follow-up PR.

UPDATE: The change is done for both 2015 and 2018 editions now as discussed below.

Closes https://github.com/rust-lang/rust/issues/53166

5 years agoSome new tests I added.
Felix S. Klock II [Thu, 11 Oct 2018 23:33:08 +0000 (01:33 +0200)]
Some new tests I added.