Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 11 pull requests #64172

Merged
merged 34 commits into from
Sep 5, 2019
Merged

Rollup of 11 pull requests #64172

merged 34 commits into from
Sep 5, 2019

Conversation

Centril
Copy link
Contributor

@Centril Centril commented Sep 5, 2019

Successful merges:

Failed merges:

r? @ghost

fmckeogh and others added 30 commits August 21, 2019 09:13
so rename it `new_sized_aligned`.
6/11 use `align` = `layout.align.abi`.
`from_const_alloc` uses `alloc.align`, but that is `assert_eq!` to `layout.align.abi`.
only 4/11 use something interesting for `align`.
This adds a target specification for Linux kernel modules on x86_64, as well as base code that can be shared with other architectures.
PR rust-lang#63580 broke miri's ability to run the run-pass test suite with MIR
optimizations enabled. The issue was that we weren't properly handling
the substs and DefId associated with a Promoted value. This didn't break
anything in rustc because in rustc this code runs before the Inliner
pass which is where the DefId and substs can diverge from their initial
values. It broke Miri though because it ran this code again after
running the optimization pass.
That way, we don't loose the jointness info
They are only used by rustc_lexer, and are not needed elsewhere.

So we move the relevant definitions into rustc_lexer (while the actual
unicode data comes from the unicode-xid crate) and make the rest of
the compiler use it.
On the call site, `rustc_lexer::is_whitespace` reads much better than
`character_properties::is_whitespace`.
Use unicode-xid crate instead of libcore

This PR proposes to remove `char::is_xid_start` and `char::is_xid_continue` functions from `libcore` and use `unicode_xid` crate from crates.io (note that this crate is already present in rust-lang/rust's Cargo.lock).

Reasons to do this:

* removing rustc-binary-specific stuff from libcore
* making sure that, across the ecosystem, there's a single definition of what rust identifier is (`unicode-xid` has almost 10 million downs, as a `proc_macro2` dependency)
* making it easier to share `rustc_lexer` crate with rust-analyzer: no need to `#[cfg]` if we are building as a part of the compiler

Reasons not to do this:

* increased maintenance burden: we'll need to upgrade unicode version both in libcore and in unicode-xid. However, this shouldn't be a too heavy burden: just running `./unicode.py` after new unicode version. I (@matklad) am ready to be a t-compiler side maintainer of unicode-xid. Moreover, given that xid-unicode is an important dependency of syn, *someone* needs to maintain it anyway.
* xid-unicode implementation is significantly slower. It uses a more compact table with binary search, instead of a trie. However, this shouldn't matter in practice, because we have fast-path for ascii anyway, and code size savings is a plus. Moreover, in rust-lang#59706 not using libcore turned out to be *faster*, presumably beacause checking for whitespace with match is even faster.

<details>

<summary>old description</summary>

Followup to rust-lang#59706

r? @eddyb

Note that this doesn't actually remove tables from libcore, to avoid conflict with rust-lang#62641.

cc unicode-rs/unicode-xid#11

</details>
Account for doc comments coming from proc macros without spans

Fix rust-lang#63821.
… r=matthewjasper

place: Passing `align` = `layout.align.abi`, when also passing `layout`

Of the calls changed:
7/12 use `align` = `layout.align.abi`.
`from_const_alloc` uses `alloc.align`, but that is `assert_eq!` to `layout.align.abi`.
only 4/11 use something interesting for `align`.
…crichton

Fix unlock ordering in SGX synchronization primitives

Avoid holding spinlocks during usercalls. This should avoid deadlocks in certain pathological scheduling cases.

cc @mzohreva @parthsane

r? @alexcrichton
…nkov

use TokenStream rather than &[TokenTree] for built-in macros

That way, we don't loose the jointness info
…joshtriplett

Add x86_64-linux-kernel target

This adds a target specification for Linux kernel modules on x86_64, as well as base code that can be shared with other architectures.

I wasn't totally sure about what the best name for this was.

There's one open question on whether we should use the LLVM generic x86_64-elf target, or the same one used for the Linux userspace.

r? @joshtriplett
Point at appropriate arm on type error on if/else/match with one non-! arm

Fix rust-lang#61281.
…oli-obk

Fix const eval bug breaking run-pass tests in Miri

PR rust-lang#63580 broke miri's ability to run the run-pass test suite with MIR
optimizations enabled. The issue was that we weren't properly handling
the substs and DefId associated with a Promoted value. This didn't break
anything in rustc because in rustc this code runs before the Inliner
pass which is where the DefId and substs can diverge from their initial
values. It broke Miri though because it ran this code again after
running the optimization pass.

r? @oli-obk
cc @RalfJung
…ramertj,Centril

Opaque type locations in error message for clarity.

Attempts to fix rust-lang#63167
@Centril
Copy link
Contributor Author

Centril commented Sep 5, 2019

@bors r+ p=11 rollup=never

@bors
Copy link
Contributor

bors commented Sep 5, 2019

📌 Commit afc7e0e has been approved by Centril

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Sep 5, 2019
@bors
Copy link
Contributor

bors commented Sep 5, 2019

⌛ Testing commit afc7e0e with merge 6187684...

bors added a commit that referenced this pull request Sep 5, 2019
Rollup of 11 pull requests

Successful merges:

 - #62848 (Use unicode-xid crate instead of libcore)
 - #63774 (Fix `window.hashchange is not a function`)
 - #63930 (Account for doc comments coming from proc macros without spans)
 - #64003 (place: Passing `align` = `layout.align.abi`, when also passing `layout`)
 - #64030 (Fix unlock ordering in SGX synchronization primitives)
 - #64041 (use TokenStream rather than &[TokenTree] for built-in macros)
 - #64051 (Add x86_64-linux-kernel target)
 - #64063 (Fix const_err with `-(-0.0)`)
 - #64083 (Point at appropriate arm on type error on if/else/match with one non-! arm)
 - #64100 (Fix const eval bug breaking run-pass tests in Miri)
 - #64157 (Opaque type locations in error message for clarity.)

Failed merges:

r? @ghost
@bors
Copy link
Contributor

bors commented Sep 5, 2019

☀️ Test successful - checks-azure
Approved by: Centril
Pushing 6187684 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 5, 2019
@bors bors merged commit afc7e0e into rust-lang:master Sep 5, 2019
@rust-highfive
Copy link
Collaborator

📣 Toolstate changed by #64172!

Tested on commit 6187684.
Direct link to PR: #64172

💔 rls on windows: test-pass → build-fail (cc @Xanewok, @rust-lang/infra).
💔 rls on linux: test-pass → build-fail (cc @Xanewok, @rust-lang/infra).
💔 rustfmt on windows: test-pass → build-fail (cc @topecongiro, @rust-lang/infra).
💔 rustfmt on linux: test-pass → build-fail (cc @topecongiro, @rust-lang/infra).

rust-highfive added a commit to rust-lang-nursery/rust-toolstate that referenced this pull request Sep 5, 2019
Tested on commit rust-lang/rust@6187684.
Direct link to PR: <rust-lang/rust#64172>

💔 rls on windows: test-pass → build-fail (cc @Xanewok, @rust-lang/infra).
💔 rls on linux: test-pass → build-fail (cc @Xanewok, @rust-lang/infra).
💔 rustfmt on windows: test-pass → build-fail (cc @topecongiro, @rust-lang/infra).
💔 rustfmt on linux: test-pass → build-fail (cc @topecongiro, @rust-lang/infra).
@Centril Centril deleted the rollup-8i8oh54 branch September 5, 2019 16:29
@Centril Centril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.