]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agoAuto merge of #43826 - kennytm:fix-43796-mis-calculated-spans, r=petrochenkov
bors [Mon, 14 Aug 2017 19:55:20 +0000 (19:55 +0000)]
Auto merge of #43826 - kennytm:fix-43796-mis-calculated-spans, r=petrochenkov

Fix "Mis-calculated spans" errors from `-Z save-analysis` + refactoring

Removed the path span extraction methods from `SpanUtils`:

* spans_with_brackets
* spans_for_path_segments
* spans_for_ty_params

Use the `span` fields in `PathSegment` and `TyParam` instead.

(Note that since it processes `ast::Path` not a qualified path (`hir::QPath` / `ast::QSelf`), UFCS path will be flattened: `<Foo as a::b::c::Trait>::D::E::F::g` will be seen as `a::b::c::Trait::D::E::F::g`.)

Fix #43796. Close #41478.

r? @nrc

6 years agoAuto merge of #43574 - notriddle:master, r=sfackler
bors [Mon, 14 Aug 2017 17:05:02 +0000 (17:05 +0000)]
Auto merge of #43574 - notriddle:master, r=sfackler

Implement `RefCell::replace` and `RefCell::swap`

Tracking issue: #43570

6 years agoAuto merge of #43740 - michaelwoerister:local-id-in-typecktables, r=arielb1
bors [Mon, 14 Aug 2017 14:15:06 +0000 (14:15 +0000)]
Auto merge of #43740 - michaelwoerister:local-id-in-typecktables, r=arielb1

Use hir::ItemLocalId as keys in TypeckTables.

This PR makes `TypeckTables` use `ItemLocalId` instead of `NodeId` as key. This is needed for incremental compilation -- for stable hashing and for being able to persist and reload these tables. The PR implements the most important part of https://github.com/rust-lang/rust/issues/40303.

Some notes on the implementation:
* The PR adds the `HirId` to HIR nodes where needed (`Expr`, `Local`, `Block`, `Pat`) which obviates the need to store a `NodeId -> HirId` mapping in crate metadata. Thanks @eddyb for the suggestion! In the future the `HirId` should completely replace the `NodeId` in HIR nodes.
* Before something is read or stored in one of the various `TypeckTables` subtables, the entry's key is validated via the new `TypeckTables::validate_hir_id()` method. This makes sure that we are not mixing information from different items in a single table.

That last part could be made a bit nicer by either (a) new-typing the table-key and making `validate_hir_id()` the only way to convert a `HirId` to the new-typed key, or (b) just encapsulate sub-table access a little better. This PR, however, contents itself with not making things significantly worse.

Also, there's quite a bit of switching around between `NodeId`, `HirId`, and `DefIndex`. These conversions are cheap except for `HirId -> NodeId`, so if the valued reviewer finds such an instance in a performance critical place, please let me know.

Ideally we convert more and more code from `NodeId` to `HirId` in the future so that there are no more `NodeId`s after HIR lowering anywhere. Then the amount of switching should be minimal again.

r? @eddyb, maybe?

6 years agoFix unused variable warnings in builds disabled debug-assertions.
Michael Woerister [Mon, 14 Aug 2017 12:56:35 +0000 (14:56 +0200)]
Fix unused variable warnings in builds disabled debug-assertions.

6 years agoAuto merge of #43857 - michaelwoerister:fix-impl-trait-closure-vis, r=eddyb
bors [Mon, 14 Aug 2017 11:28:12 +0000 (11:28 +0000)]
Auto merge of #43857 - michaelwoerister:fix-impl-trait-closure-vis, r=eddyb

Mark closures return via impl-trait as reachable.

This should fix some of the open `impl trait` issues, like #40839, #43135, and #35870.

r? @eddyb

6 years agosave-analysis: Remove path span extraction methods from SpanUtils
kennytm [Sat, 12 Aug 2017 15:48:24 +0000 (23:48 +0800)]
save-analysis: Remove path span extraction methods from SpanUtils

Use the `span` field in PathSegment and TyParam instead.

Fix #43796. Close #41478.

6 years agoMark closures return via impl-trait as reachable.
Michael Woerister [Mon, 14 Aug 2017 10:04:52 +0000 (12:04 +0200)]
Mark closures return via impl-trait as reachable.

6 years agoFix some merge fallout.
Michael Woerister [Fri, 11 Aug 2017 10:35:54 +0000 (12:35 +0200)]
Fix some merge fallout.

6 years agoAuto merge of #43856 - sfackler:no-inline-debug, r=alexcrichton
bors [Mon, 14 Aug 2017 07:50:36 +0000 (07:50 +0000)]
Auto merge of #43856 - sfackler:no-inline-debug, r=alexcrichton

Don't inline debug methods

The inner methods aren't inlined, so this puts more pressure on LLVM for
literally no benefit.

Closes #43843

6 years agoAuto merge of #43844 - arielb1:literally-nonstandard, r=eddyb
bors [Mon, 14 Aug 2017 05:05:06 +0000 (05:05 +0000)]
Auto merge of #43844 - arielb1:literally-nonstandard, r=eddyb

ast_validation: forbid "nonstandard" literal patterns

Since #42886, macros can create "nonstandard" PatKind::Lit patterns,
that contain path expressions instead of the usual literal expr. These
can cause trouble, including ICEs.

We *could* map these nonstandard patterns to PatKind::Path patterns
during HIR lowering, but that would be much effort for little gain, and
I think is too risky for beta. So let's just forbid them during AST
validation.

Fixes #43250.

beta-nominating because regression.
r? @eddyb

6 years agoAuto merge of #43842 - bjorn3:no_llvm_cleanup, r=alexcrichton
bors [Mon, 14 Aug 2017 02:11:18 +0000 (02:11 +0000)]
Auto merge of #43842 - bjorn3:no_llvm_cleanup, r=alexcrichton

Cleanup for "Support compiling rustc without LLVM (try 2)"

This includes a small patch to allow running tests without llvm. Also check if you are not trying to compile a dylib.

cc #42932
r? @alexcrichton

6 years agoDon't inline debug methods
Steven Fackler [Mon, 14 Aug 2017 00:06:17 +0000 (17:06 -0700)]
Don't inline debug methods

The inner methods aren't inlined, so this puts more pressure on LLVM for
literally no benefit.

Closes #43843

6 years agoAuto merge of #43836 - taleks:issue-39827, r=arielb1
bors [Sun, 13 Aug 2017 23:33:18 +0000 (23:33 +0000)]
Auto merge of #43836 - taleks:issue-39827, r=arielb1

Fix for issue #39827

*Cause of the issue*

While preparing for `trans_intrinsic_call()` invoke arguments are processed with `trans_argument()` method which excludes zero-sized types from argument list (to be more correct - all arguments for which `ArgKind` is `Ignore` are filtered out). As result `volatile_store()` intrinsic gets one argument instead of expected address and value.

*How it is fixed*

Modification of the `trans_argument()` method may cause side effects, therefore change was implemented in `volatile_store()` intrinsic building code itself. Now it checks function signature and if it was specialised with zero-sized type, then emits `C_nil()` instead of accessing non-existing second argument.

6 years agoAuto merge of #43815 - alexcrichton:optimize-alloc, r=sfackler
bors [Sun, 13 Aug 2017 19:28:57 +0000 (19:28 +0000)]
Auto merge of #43815 - alexcrichton:optimize-alloc, r=sfackler

Optimize allocation paths in RawVec

Since the `Alloc` trait was introduced (https://github.com/rust-lang/rust/pull/42313) and it was integrated everywhere (https://github.com/rust-lang/rust/pull/42727) there's been some slowdowns and regressions that have slipped through. The intention of this PR is to try to tackle at least some of them, but they've been very difficult to quantify up to this point so it probably doesn't solve everything.

This PR primarily targets the `RawVec` type, specifically the `double` function. The codegen for this function is now much closer to what it was before #42313 landed as many runtime checks have been elided.

6 years agoFix error
bjorn3 [Sun, 13 Aug 2017 16:51:07 +0000 (18:51 +0200)]
Fix error

6 years agoast_validation: forbid "nonstandard" literal patterns
Ariel Ben-Yehuda [Sun, 13 Aug 2017 13:59:54 +0000 (16:59 +0300)]
ast_validation: forbid "nonstandard" literal patterns

Since #42886, macros can create "nonstandard" PatKind::Lit patterns,
that contain path expressions instead of the usual literal expr. These
can cause trouble, including ICEs.

We *could* map these nonstandard patterns to PatKind::Path patterns
during HIR lowering, but that would be much effort for little gain, and
I think is too risky for beta. So let's just forbid them during AST
validation.

Fixes #43250.

6 years agoUpdate driver.rs
bjorn3 [Sun, 13 Aug 2017 14:50:17 +0000 (16:50 +0200)]
Update driver.rs

6 years agoChange run-make ignore message
bjorn3 [Sun, 13 Aug 2017 14:49:09 +0000 (16:49 +0200)]
Change run-make ignore message

6 years agoChange a #[cfg()] to a cfg!()
bjorn3 [Sun, 13 Aug 2017 14:47:47 +0000 (16:47 +0200)]
Change a #[cfg()] to a cfg!()

6 years agoFix tidy errors
bjorn3 [Sun, 13 Aug 2017 13:56:35 +0000 (15:56 +0200)]
Fix tidy errors

6 years agoRemove some more cfg's
bjorn3 [Sun, 13 Aug 2017 10:30:54 +0000 (12:30 +0200)]
Remove some more cfg's

6 years agoAuto merge of #43839 - GuillaumeGomez:rollup, r=GuillaumeGomez
bors [Sun, 13 Aug 2017 10:22:45 +0000 (10:22 +0000)]
Auto merge of #43839 - GuillaumeGomez:rollup, r=GuillaumeGomez

Rollup of 8 pull requests

- Successful merges: #43782, #43803, #43814, #43819, #43821, #43822, #43824, #43833
- Failed merges:

6 years agoAddresses comments in PR #43836
Alexey Tarasov [Sun, 13 Aug 2017 09:28:04 +0000 (19:28 +1000)]
Addresses comments in PR #43836

- removes warnings introduced in changeset 0cd3587
- makes documentation more neat and grammatically correct

6 years agoRollup merge of #43833 - dtolnay:connect-timeout, r=sfackler
Guillaume Gomez [Sun, 13 Aug 2017 09:03:15 +0000 (11:03 +0200)]
Rollup merge of #43833 - dtolnay:connect-timeout, r=sfackler

Fix TcpStream::connect_timeout tracking issue number

Before: https://github.com/rust-lang/rust/pull/43709
After: https://github.com/rust-lang/rust/issues/43079

r? @sfackler

6 years agoRollup merge of #43824 - kennytm:fix-43232-hir-stats, r=petrochenkov
Guillaume Gomez [Sun, 13 Aug 2017 09:03:14 +0000 (11:03 +0200)]
Rollup merge of #43824 - kennytm:fix-43232-hir-stats, r=petrochenkov

Fix `-Z hir-stats` always panics.

Fix #43232.

6 years agoRollup merge of #43822 - topecongiro:missing-span-let, r=petrochenkov
Guillaume Gomez [Sun, 13 Aug 2017 09:03:13 +0000 (11:03 +0200)]
Rollup merge of #43822 - topecongiro:missing-span-let, r=petrochenkov

Include 'let' keyword to the span for ast::Local

Currently the span for `ast::Local` does not the include the `let` keyword. This PR fixes it.

6 years agoRollup merge of #43821 - NilSet:redox-dns, r=alexcrichton
Guillaume Gomez [Sun, 13 Aug 2017 09:03:12 +0000 (11:03 +0200)]
Rollup merge of #43821 - NilSet:redox-dns, r=alexcrichton

Handle DNS label compression in more places in Redox name resolution

6 years agoRollup merge of #43819 - frewsxcv:frewsxcv-include, r=QuietMisdreavus
Guillaume Gomez [Sun, 13 Aug 2017 09:03:11 +0000 (11:03 +0200)]
Rollup merge of #43819 - frewsxcv:frewsxcv-include, r=QuietMisdreavus

Improve doc examples for `include*` macros.

6 years agoRollup merge of #43814 - Eijebong:fix_typos2, r=petrochenkov
Guillaume Gomez [Sun, 13 Aug 2017 09:03:11 +0000 (11:03 +0200)]
Rollup merge of #43814 - Eijebong:fix_typos2, r=petrochenkov

Fix some typos

Follow up of #43794

If refined my script a little bit and found some more.

6 years agoRollup merge of #43803 - GuillaumeGomez:missing-links-doc, r=frewsxcv
Guillaume Gomez [Sun, 13 Aug 2017 09:03:10 +0000 (11:03 +0200)]
Rollup merge of #43803 - GuillaumeGomez:missing-links-doc, r=frewsxcv

Missing links doc

r? @rust-lang/docs

6 years agoRollup merge of #43782 - nrc:include, r=GuillaumeGomez
Guillaume Gomez [Sun, 13 Aug 2017 09:03:09 +0000 (11:03 +0200)]
Rollup merge of #43782 - nrc:include, r=GuillaumeGomez

Fix include! in doc tests

By making the path relative to the current file.

Fixes #43153

[breaking-change] - if you use `include!` inside a doc test, you'll need to change the path to be relative to the current file rather than relative to the working directory.

6 years agoAuto merge of #43813 - pengowen123:unused_result, r=estebank
bors [Sun, 13 Aug 2017 07:50:36 +0000 (07:50 +0000)]
Auto merge of #43813 - pengowen123:unused_result, r=estebank

Fix unused_result lint triggering when a function returns `()`, `!` or an empty enum

Also added a test to prevent this from happening again.

Fixes #43806

6 years agoAuto merge of #43630 - Mark-Simulacrum:rustbuild-cleanups, r=alexcrichton
bors [Sun, 13 Aug 2017 05:24:49 +0000 (05:24 +0000)]
Auto merge of #43630 - Mark-Simulacrum:rustbuild-cleanups, r=alexcrichton

Rustbuild cleanups/fixes and improvements

Each commit is a standalone change, and can/should be reviewed separately.

This adds two new functionalities:

 - `--target` and `--host` can be passed without changing config.toml, and we'll respect the users' wishes, instead of requiring that all possible targets are passed.
   - Note that this means that `./x.py clean` won't be quite as wide-spread as before, since it limits itself to the configured hosts, not all hosts. This could be considered a feature as well.
 - `ignore-git` field in `config.toml` which tells Rustbuild to not attempt to load git hashes from `.git`.

This is a precursor to eventual further simplification of the configuration system, but I want to get this merged first so that later work can be made in individual PRs.

r? @alexcrichton

6 years agoBuild rustdoc with the native build triple
Mark Simulacrum [Sun, 13 Aug 2017 03:58:49 +0000 (08:58 +0500)]
Build rustdoc with the native build triple

6 years agoAuto merge of #43348 - kennytm:fix-24658-doc-every-platform, r=alexcrichton
bors [Sun, 13 Aug 2017 03:00:20 +0000 (03:00 +0000)]
Auto merge of #43348 - kennytm:fix-24658-doc-every-platform, r=alexcrichton

Expose all OS-specific modules in libstd doc.

1. Uses the special `--cfg dox` configuration passed by rustbuild when running `rustdoc`. Changes the `#[cfg(platform)]` into `#[cfg(any(dox, platform))]` so that platform-specific API are visible to rustdoc.

2. Since platform-specific implementations often won't compile correctly on other platforms, `rustdoc` is changed to apply `everybody_loops` to the functions during documentation and doc-test harness.

3. Since platform-specific code are documented on all platforms now, it could confuse users who found a useful API but is non-portable. Also, their examples will be doc-tested, so must be excluded when not testing on the native platform. An undocumented attribute `#[doc(cfg(...))]` is introduced to serve the above purposed.

Fixes #24658 (Does _not_ fully implement #1998).

6 years agoFix TcpStream::connect_timeout tracking issue number
David Tolnay [Sun, 13 Aug 2017 02:22:03 +0000 (19:22 -0700)]
Fix TcpStream::connect_timeout tracking issue number

6 years agoCargotest needs only one rustdoc.exe to exist on Windows
Mark Simulacrum [Sun, 13 Aug 2017 00:07:01 +0000 (05:07 +0500)]
Cargotest needs only one rustdoc.exe to exist on Windows

6 years agoCorrect code to not run host-only tests.
Mark Simulacrum [Thu, 10 Aug 2017 16:17:42 +0000 (21:17 +0500)]
Correct code to not run host-only tests.

6 years agoClean tools after building libstd/libtest/librustc.
Mark Simulacrum [Thu, 10 Aug 2017 05:12:35 +0000 (10:12 +0500)]
Clean tools after building libstd/libtest/librustc.

This fixes the bug we previously had where we'd build a libtest tool
after building a libstd tool and clear out the libstd tool. Since we
clear out all tools for a given stage on invocations of CleanTools after
lib{std, test, rustc} change, we need to make sure that all tools built
with that stage will be built after the clearing is done.

The fix contained here technically isn't perfect; there is still an edge
case of compiling a libstd tool, then compiling libtest, which will
clear out the libstd tool and it won't ever get rebuilt within that
session of rustbuild. This is where the caching system used today shows
it's problems -- in effect, all tools depend on a global counter of the
stage being cleared out. We can implement such a counter in a future
patch to ensure that tools are rebuilt as needed, but it is deemed
unlikely that it will be required in practice, since most if not all
tools are built after the relevant stage's std/test/rustc are built,
though this is only an opinion and hasn't been verified.

6 years agoBuild rustdoc only at the top stage
Mark Simulacrum [Fri, 4 Aug 2017 22:13:01 +0000 (16:13 -0600)]
Build rustdoc only at the top stage

6 years agoBuild rustdoc with the stageN compiler in N >= 2.
Mark Simulacrum [Fri, 4 Aug 2017 01:08:20 +0000 (19:08 -0600)]
Build rustdoc with the stageN compiler in N >= 2.

This permits proc macro crates to correctly work with rustdoc.

6 years agoMake the message for building rustdoc slightly nicer
Mark Simulacrum [Thu, 3 Aug 2017 22:06:20 +0000 (16:06 -0600)]
Make the message for building rustdoc slightly nicer

6 years agoAdd ability to ignore git when building rust.
Mark Simulacrum [Thu, 3 Aug 2017 16:53:56 +0000 (10:53 -0600)]
Add ability to ignore git when building rust.

Some users of the build system change the git sha on every build due to
utilizing git to push changes to a remote server. This allows them to
simply configure that away instead of depending on custom patches to
rustbuild.

6 years agoAllow overriding build triple via flag.
Mark Simulacrum [Sun, 30 Jul 2017 04:45:49 +0000 (22:45 -0600)]
Allow overriding build triple via flag.

We first check the configuration, then passed parameters (--build), then
fall back to the auto-detection that bootstrap.py does.

Fixes #39673.

6 years agoAllow specifiying targets and hosts not in the config file.
Mark Simulacrum [Sun, 30 Jul 2017 04:26:28 +0000 (22:26 -0600)]
Allow specifiying targets and hosts not in the config file.

We no longer care about the source of this information, so there is no
reason to restrict users.

6 years agoUnify flags into config.
Mark Simulacrum [Sun, 30 Jul 2017 04:12:53 +0000 (22:12 -0600)]
Unify flags into config.

This introduces a slight change in behavior, where we unilaterally
respect the --host and --target parameters passed for all sanity
checking and runtime configuration.

6 years agoAuto merge of #43736 - ollie27:rustdoc_impls_js, r=QuietMisdreavus
bors [Sat, 12 Aug 2017 22:09:34 +0000 (22:09 +0000)]
Auto merge of #43736 - ollie27:rustdoc_impls_js, r=QuietMisdreavus

rustdoc: Don't add external impls to implementors js

Otherwise impls from not documented crates appear.

Fixes #43701

6 years agoAuto merge of #43724 - lukaramu:std-ops-docs, r=QuietMisdreavus
bors [Sat, 12 Aug 2017 19:40:49 +0000 (19:40 +0000)]
Auto merge of #43724 - lukaramu:std-ops-docs, r=QuietMisdreavus

Improve std::ops docs

Fixes #29365. (This fixes all but one point from @steveklabnik's list, but that point was referring to examples of implementing range traits, but there are no range traits in std::ops.)

The main changes are quite a bit of copyediting, adding more "real" examples for some of the traits, incorporating some guidance from the API docs, more linking (cross-docs and to the book & reference), cleaning up examples, moving things around, and so on. Refer to the commit messages for more details.

Note: I decided to link to the second edition of the book since I think it's more appropriate now for the sections I linked, if this is not okay, please say so!

6 years agostd: Unsafe-away runtime checks in `Vec`
Alex Crichton [Fri, 11 Aug 2017 23:00:09 +0000 (16:00 -0700)]
std: Unsafe-away runtime checks in `Vec`

The `RawVec` type has a number of invariants that it upholds throughout its
execution, and as a result many of the runtime checks imposed by using `Layout`
in a "raw" fashion aren't actually necessary. For example a `RawVec`'s capacity
is intended to always match the layout which "fits" the allocation, so we don't
need any runtime checks when retrieving the current `Layout` for a vector.
Consequently, this adds a safe `current_layout` function which internally uses
the `from_size_align_unchecked` function.

Along the same lines we know that most construction of new layouts will not
overflow. All allocations in `RawVec` are kept below `isize::MAX` and valid
alignments are also kept low enough that we're guaranteed that `Layout` for a
doubled vector will never overflow and will always succeed construction.
Consequently a few locations can use `from_size_align_unchecked` in addition
when constructing the *new* layout to allocate (or reallocate), which allows for
eliding some more runtime checks.

Overall this should significant improve performance for an important function,
`RawVec::double`. This commit removes four runtime jumps before `__rust_realloc`
is called, as well as one after it's called.

6 years agostd::ops docs: incorporated changes suggested in review
lukaramu [Tue, 8 Aug 2017 12:34:37 +0000 (14:34 +0200)]
std::ops docs: incorporated changes suggested in review

* fixed link typos and copy-paster errors
* rewrote Fn* explanations
* `RHS = Self` -> `RHS` is `Self` (added that to all applicable places as
  well)
* fixed up some links
* s/MutDeref/DerefMut
* removed remaining superfluous `fn main()`s
* fixed some minor phrasings and factual errors and inaccuracies

std::ops docs: Fix phrasing and factual errors/inaccuracies

6 years agoAuto merge of #43820 - sfackler:move-config-template, r=alexcrichton
bors [Sat, 12 Aug 2017 16:48:31 +0000 (16:48 +0000)]
Auto merge of #43820 - sfackler:move-config-template, r=alexcrichton

Move config.toml.example to the root dir

It's way more discoverable here.

r? @alexcrichton

6 years agoAdd missing link in fmt::format function
Guillaume Gomez [Fri, 11 Aug 2017 11:46:12 +0000 (13:46 +0200)]
Add missing link in fmt::format function

6 years agoAuto merge of #43823 - tchajed:fix-pr-link, r=frewsxcv
bors [Sat, 12 Aug 2017 14:24:40 +0000 (14:24 +0000)]
Auto merge of #43823 - tchajed:fix-pr-link, r=frewsxcv

Update GitHub pull request documentation link

It looks like the GitHub documentation has been re-organized so that the "fork and pull" model isn't explained alongside the PR process in one convenient link any more.

6 years agoFix some typos
Bastien Orivel [Fri, 11 Aug 2017 18:34:14 +0000 (20:34 +0200)]
Fix some typos

6 years agoAuto merge of #43746 - eddyb:sound-thread-local, r=alexcrichton
bors [Sat, 12 Aug 2017 11:57:10 +0000 (11:57 +0000)]
Auto merge of #43746 - eddyb:sound-thread-local, r=alexcrichton

Check #[thread_local] statics correctly in the compiler.

Fixes #43733 by introducing `#[allow_internal_unsafe]` analogous to `#[allow_internal_unstable]`, for letting a macro expand to `unsafe` blocks and functions even in `#![forbid(unsafe_code)]` crates.

Fixes #17954 by not letting references to `#[thread_local]` statics escape the function they're taken in - we can't just use a magical lifetime because Rust has *lifetime parametrism*, so if we added the often-proposed `'thread` lifetime, we'd have no way to check it in generic code.
To avoid potential edge cases in the compiler, the lifetime is actually that of a temporary at the same position, i.e. `&TLS_STATIC` has the same lifetime `&non_const_fn()` would.

Referring to `#[thread_local]` `static`s at compile-time is banned now (as per PR discussion).

Additionally, to remove `unsafe impl Sync` from `std::thread::local::fast::Key`, `#[thread_local]` statics are now not required to implement `Sync`, as they are not shared between threads.

6 years agoFix `-Z hir-stats` always panics (fix #43232).
kennytm [Sat, 12 Aug 2017 11:15:01 +0000 (19:15 +0800)]
Fix `-Z hir-stats` always panics (fix #43232).

6 years agoUpdate GitHub pull request documentation link
Tej Chajed [Sat, 12 Aug 2017 11:28:29 +0000 (12:28 +0100)]
Update GitHub pull request documentation link

6 years agoCheck #[thread_local] statics correctly in the compiler.
Eduard-Mihai Burtescu [Tue, 8 Aug 2017 15:22:51 +0000 (18:22 +0300)]
Check #[thread_local] statics correctly in the compiler.

6 years agoAuto merge of #43812 - steveklabnik:rustdoc-doc-tests, r=QuietMisdreavus
bors [Sat, 12 Aug 2017 09:34:13 +0000 (09:34 +0000)]
Auto merge of #43812 - steveklabnik:rustdoc-doc-tests, r=QuietMisdreavus

rustdoc doc tests

This is mostly adapted from the book v1's chapter.

cc https://github.com/rust-lang/rust/issues/42322

r? @rust-lang/docs

6 years agoInclude 'let' keyword to the span for ast::Local
topecongiro [Sat, 12 Aug 2017 09:00:57 +0000 (18:00 +0900)]
Include 'let' keyword to the span for ast::Local

6 years agoLess cfg's
bjorn3 [Sat, 12 Aug 2017 08:48:57 +0000 (10:48 +0200)]
Less cfg's

6 years agoFollow up commit for the issue 39827
Alexey Tarasov [Sat, 12 Aug 2017 08:43:59 +0000 (18:43 +1000)]
Follow up commit for the issue 39827

 - updates documentation on volatile memory intrinsics, now the case of
   zero-sized types is mentioned explicitly.

Volatile memory operations which doesn't affect memory at all are omitted
in LLVM backend, e.g. if number of elements is zero or type used in
generic specialisation is zero-sized, then LLVM intrinsic or related code
is not generated. This was not explicitly documented before in Rust
documentation and potentially could cause issues.

6 years agoFixes issue 39827: ICE in volatile_store intrinsic
Alexey Tarasov [Sat, 12 Aug 2017 08:42:44 +0000 (18:42 +1000)]
Fixes issue 39827: ICE in volatile_store intrinsic

- adds handling of zero-sized types for volatile_store.
- adds type size checks and warnigns for other volatile intrinsics.
- adds a test to check warnings emitting.

Cause of the issue

While preparing for trans_intrinsic_call() invoke arguments are
processed with trans_argument() method which excludes zero-sized types
from argument list (to be more correct - all arguments for which
ArgKind is Ignore are filtered out). As result volatile_store() intrinsic
gets one argument instead of expected address and value.

How it is fixed

Modification of the trans_argument() method may cause side effects,
therefore change was implemented in volatile_store() intrinsic building
code itself. Now it checks function signature and if it was specialised
with zero-sized type, then emits C_nil() instead of accessing
non-existing second argument.

Additionally warnings are added for all volatile operations which are
specialised with zero-sized arguments. In fact, those operations are omitted
in LLVM backend if no memory affected at all, e.g. number of elements
is zero or type is zero-sized. This was not explicitly documented before
and could lead to potential issues if developer expects volatile behaviour,
but type has degraded to zero-sized.

6 years agosyntax: #[allow_internal_unsafe] bypasses the unsafe_code lint in macros.
Eduard-Mihai Burtescu [Tue, 8 Aug 2017 15:21:20 +0000 (18:21 +0300)]
syntax: #[allow_internal_unsafe] bypasses the unsafe_code lint in macros.

6 years agoAuto merge of #43794 - Eijebong:fix_typos, r=lukaramu,steveklanik,imperio
bors [Sat, 12 Aug 2017 05:52:19 +0000 (05:52 +0000)]
Auto merge of #43794 - Eijebong:fix_typos, r=lukaramu,steveklanik,imperio

Fix some typos

I wrote a really naive script and found those typos in the documentation.

6 years agoMove config.toml.example to the root dir
Steven Fackler [Sat, 12 Aug 2017 05:24:25 +0000 (22:24 -0700)]
Move config.toml.example to the root dir

It's way more discoverable here.

6 years agoHandle DNS label compression in more places
Thomas Levy [Sat, 12 Aug 2017 05:13:57 +0000 (22:13 -0700)]
Handle DNS label compression in more places

6 years agoDon't trigger unused_result on functions returning empty enums
Owen Sanchez [Sat, 12 Aug 2017 04:52:16 +0000 (21:52 -0700)]
Don't trigger unused_result on functions returning empty enums

6 years agoAdd complete doc example for `include_str!`.
Corey Farwell [Sat, 12 Aug 2017 04:25:49 +0000 (00:25 -0400)]
Add complete doc example for `include_str!`.

6 years agoAdd complete doc example for `include_bytes!`.
Corey Farwell [Sat, 12 Aug 2017 04:22:49 +0000 (00:22 -0400)]
Add complete doc example for `include_bytes!`.

6 years agoDemonstrate `include!` with Rust code, not just a string slice literal.
Corey Farwell [Sat, 12 Aug 2017 03:45:48 +0000 (23:45 -0400)]
Demonstrate `include!` with Rust code, not just a string slice literal.

6 years agoFix error during cross-platform documentation.
kennytm [Fri, 11 Aug 2017 01:01:46 +0000 (09:01 +0800)]
Fix error during cross-platform documentation.

6 years agoAuto merge of #43792 - steveklabnik:rustdoc-directives, r=frewsxcv
bors [Sat, 12 Aug 2017 03:22:09 +0000 (03:22 +0000)]
Auto merge of #43792 - steveklabnik:rustdoc-directives, r=frewsxcv

Document the doc attribute

cc #42322

6 years agoAuto merge of #43772 - arielb1:nonfree-block, r=nagisa
bors [Sat, 12 Aug 2017 00:54:38 +0000 (00:54 +0000)]
Auto merge of #43772 - arielb1:nonfree-block, r=nagisa

For box expressions, use NZ drop instead of a free block

This falls naturally out of making drop elaboration work with `box`
expressions, which is probably required for sane MIR borrow-checking.
This is a pure refactoring with no intentional functional effects.

r? @nagisa

6 years agostd: Tag OOM functions as `#[cold]`
Alex Crichton [Fri, 11 Aug 2017 22:59:11 +0000 (15:59 -0700)]
std: Tag OOM functions as `#[cold]`

This was forgotten from #42727 by accident, but these functions are rarely
called and codegen can be improved in LLVM with the `#[cold]` tag.

6 years agostd: Tag `AllocErr` functions as `#[inline]`
Alex Crichton [Fri, 11 Aug 2017 22:58:26 +0000 (15:58 -0700)]
std: Tag `AllocErr` functions as `#[inline]`

None of these require a significant amount of code and using `#[inline]` will
allow constructors to get inlined, improving codegen at allocation callsites.

6 years agoAuto merge of #43766 - michaelwoerister:trans-scheduler-touch-up, r=alexcrichton
bors [Fri, 11 Aug 2017 22:23:10 +0000 (22:23 +0000)]
Auto merge of #43766 - michaelwoerister:trans-scheduler-touch-up, r=alexcrichton

Improve LLVM/trans scheduling a bit

Currently it's possible that the main thread is waiting on LLVM threads to finish work while its implicit token is going to waste. This PR let's the main thread take over, so one of the running LLVM threads can free its token earlier.

r? @alexcrichton

6 years agorustdoc doc tests
steveklabnik [Fri, 11 Aug 2017 20:43:38 +0000 (16:43 -0400)]
rustdoc doc tests

6 years agoFix unused_result lint triggering when a function returns `()` or `!`
Owen Sanchez [Fri, 11 Aug 2017 20:43:33 +0000 (13:43 -0700)]
Fix unused_result lint triggering when a function returns `()` or `!`

Add a test for this case

6 years agoaddress review feedback
steveklabnik [Fri, 11 Aug 2017 20:24:18 +0000 (16:24 -0400)]
address review feedback

6 years agoAuto merge of #43750 - tbu-:pr_fn_unreachable, r=sfackler
bors [Fri, 11 Aug 2017 19:43:44 +0000 (19:43 +0000)]
Auto merge of #43750 - tbu-:pr_fn_unreachable, r=sfackler

Put `intrinsics::unreachable` on a possible path to stabilization

Mark it with the `unreachable` feature and put it into the `mem` module.
This is a pretty straight-forward API that can already be simulated in
stable Rust by using `transmute` to create an uninhabited enum that can
be matched.

6 years agoAuto merge of #42932 - bjorn3:no_llvm_try2, r=eddyb
bors [Fri, 11 Aug 2017 15:45:10 +0000 (15:45 +0000)]
Auto merge of #42932 - bjorn3:no_llvm_try2, r=eddyb

Support compiling rustc without LLVM (try 2)

Now doesn't change rustc_driver.

Supersedes #42752

6 years agoAuto merge of #43748 - RalfJung:mir-validate2, r=arielb1
bors [Fri, 11 Aug 2017 13:04:59 +0000 (13:04 +0000)]
Auto merge of #43748 - RalfJung:mir-validate2, r=arielb1

AddValidation: handle Call terminators into blocks that have multiple incoming edges

The old code was just wrong: It would add validation on paths that don't even come from the call, and it would add multiple validations if multiple calls end return to the same block.

6 years agoRemove some unused dependencies from rustc_trans_utils
bjorn3 [Fri, 11 Aug 2017 09:08:01 +0000 (11:08 +0200)]
Remove some unused dependencies from rustc_trans_utils

6 years agoIt now completely compiles without LLVM!!!
bjorn3 [Fri, 11 Aug 2017 08:35:01 +0000 (10:35 +0200)]
It now completely compiles without LLVM!!!

6 years agoActually make rustc_driver compile without llvm
bjorn3 [Sat, 5 Aug 2017 14:55:23 +0000 (16:55 +0200)]
Actually make rustc_driver compile without llvm

6 years agoAdd (a lot of) missing links in fmt module docs
Guillaume Gomez [Fri, 11 Aug 2017 11:43:31 +0000 (13:43 +0200)]
Add (a lot of) missing links in fmt module docs

6 years agoImprove validation of TypeckTables keys.
Michael Woerister [Fri, 11 Aug 2017 09:56:26 +0000 (11:56 +0200)]
Improve validation of TypeckTables keys.

6 years agoEncapsulate sub-table access in TypeckTables and validate keys on each access.
Michael Woerister [Thu, 10 Aug 2017 14:10:04 +0000 (16:10 +0200)]
Encapsulate sub-table access in TypeckTables and validate keys on each access.

6 years agoImprove documentation for TypeckTables::validate_hir_id().
Michael Woerister [Tue, 8 Aug 2017 13:35:19 +0000 (15:35 +0200)]
Improve documentation for TypeckTables::validate_hir_id().

6 years agoUse DefIndex instead of NodeId in UpvarId.
Michael Woerister [Tue, 8 Aug 2017 12:34:37 +0000 (14:34 +0200)]
Use DefIndex instead of NodeId in UpvarId.

6 years agoAdd some ID conversion methods to HIR map and Definitions.
Michael Woerister [Tue, 8 Aug 2017 12:33:51 +0000 (14:33 +0200)]
Add some ID conversion methods to HIR map and Definitions.

6 years agoUse ItemLocalId as key for TypeckTables::cast_kinds.
Michael Woerister [Tue, 8 Aug 2017 10:25:22 +0000 (12:25 +0200)]
Use ItemLocalId as key for TypeckTables::cast_kinds.

6 years agoUse ItemLocalId as key for TypeckTables::fru_field_types.
Michael Woerister [Tue, 8 Aug 2017 10:13:16 +0000 (12:13 +0200)]
Use ItemLocalId as key for TypeckTables::fru_field_types.

6 years agoUse ItemLocalId as key for TypeckTables::liberated_fn_sigs.
Michael Woerister [Mon, 7 Aug 2017 15:45:06 +0000 (17:45 +0200)]
Use ItemLocalId as key for TypeckTables::liberated_fn_sigs.

6 years agoAdd missing TypeckTables-switch in save-analysis.
Michael Woerister [Mon, 7 Aug 2017 15:44:01 +0000 (17:44 +0200)]
Add missing TypeckTables-switch in save-analysis.

6 years agoMake Definitions::find_node_for_hir_id() a linear search instead of a binary one.
Michael Woerister [Mon, 7 Aug 2017 15:41:02 +0000 (17:41 +0200)]
Make Definitions::find_node_for_hir_id() a linear search instead of a binary one.

Unfortunately, the NodeId->HirId array is not sorted. Since this search is only
done right before calling bug!(), let's not waste time allocating a faster lookup.

6 years agoUse ItemLocalId as key for closure_tys and closure_kinds in TypeckTables.
Michael Woerister [Mon, 7 Aug 2017 13:50:13 +0000 (15:50 +0200)]
Use ItemLocalId as key for closure_tys and closure_kinds in TypeckTables.

6 years agoUse ItemLocalId as key for TypeckTables::pat_binding_modes.
Michael Woerister [Mon, 7 Aug 2017 13:06:10 +0000 (15:06 +0200)]
Use ItemLocalId as key for TypeckTables::pat_binding_modes.

6 years agoUse ItemLocalId as key for node_types, node_substs, and adjustments in TypeckTables.
Michael Woerister [Mon, 7 Aug 2017 12:43:43 +0000 (14:43 +0200)]
Use ItemLocalId as key for node_types, node_substs, and adjustments in TypeckTables.