Skip to content

Rollup of 7 pull requests - #48040

Merged
bors merged 17 commits into
rust-lang:masterfrom
kennytm:rollup
Feb 6, 2018
Merged

Rollup of 7 pull requests#48040
bors merged 17 commits into
rust-lang:masterfrom
kennytm:rollup

Conversation

Clar Charrand others added 17 commits January 29, 2018 17:44
Because the last item needs special handling, it seems that LLVM has trouble canonicalizing the loops in external iteration. With the override, it becomes obvious that the start==end case exits the loop (as opposed to the one *after* that exiting the loop in external iteration).
…eavus
Document std::os::raw.
This adds a brief explanation to each type and its definition according to C. This also helps clarify that the definitions of the types, as described by rustdoc, are not necessarily the same from platform to platform.
…lacrum
libtest: Replace panics with error messages
This replaces explicit panics on failures in libtest with prints to stderr.
Where "failures" == CLI argument parsing and such
Before:
```
$ ./foo-stable --not-an-option
thread 'main' panicked at '"Unrecognized option: \'not-an-option\'"', libtest/lib.rs:251:27
note: Run with `RUST_BACKTRACE=1` for a backtrace.
```
After:
```
$ ./foo-nightly --not-an-option
error: Unrecognized option: 'not-an-option'
```
…, r=alexcrichton
Override try_[r]fold for RangeInclusive
Because the last item needs special handling, it seems that LLVM has trouble canonicalizing the loops in external iteration. With the override, it becomes obvious that the start==end case exits the loop (as opposed to the one *after* that exiting the loop in external iteration).
Demo adapted from rust-lang#45222
```rust
#[no_mangle]
pub fn foo3r(n: u64) -> u64 {
let mut count = 0;
(0..n).for_each(|_| {
(0 ..= n).rev().for_each(|j| {
count += j;
})
});
count
}
```
<details>
<summary>Current nightly ASM, 100 lines (https://play.rust-lang.org/?gist=f5674c702c6e2045c3aab5d03763e5f6&version=nightly&mode=release)</summary>
```asm
foo3r:
pushq	%rbx
.Lcfi0:
.Lcfi1:
testq	%rdi, %rdi
je	.LBB0_1
testb	$1, %dil
jne	.LBB0_4
xorl	%eax, %eax
xorl	%r8d, %r8d
cmpq	$1, %rdi
jne	.LBB0_11
jmp	.LBB0_23
.LBB0_1:
xorl	%eax, %eax
popq	%rbx
retq
.LBB0_4:
xorl	%r8d, %r8d
movq	$-1, %r9
xorl	%eax, %eax
movq	%rdi, %r11
xorl	%r10d, %r10d
jmp	.LBB0_5
.LBB0_8:
addq	%r11, %rax
movq	%rsi, %r11
movq	%rdx, %r10
.LBB0_5:
cmpq	%r11, %r10
movl	$1, %ecx
cmovbq	%r9, %rcx
cmoveq	%r8, %rcx
testq	%rcx, %rcx
movl	$0, %esi
movl	$1, %edx
je	.LBB0_8
cmpq	$-1, %rcx
jne	.LBB0_9
leaq	-1(%r11), %rsi
movq	%r10, %rdx
jmp	.LBB0_8
.LBB0_9:
movl	$1, %r8d
cmpq	$1, %rdi
je	.LBB0_23
.LBB0_11:
xorl	%r9d, %r9d
movq	$-1, %r10
.LBB0_12:
movq	%rdi, %rsi
xorl	%r11d, %r11d
jmp	.LBB0_13
.LBB0_16:
addq	%rsi, %rax
movq	%rcx, %rsi
movq	%rbx, %r11
.LBB0_13:
cmpq	%rsi, %r11
movl	$1, %edx
cmovbq	%r10, %rdx
cmoveq	%r9, %rdx
testq	%rdx, %rdx
movl	$0, %ecx
movl	$1, %ebx
je	.LBB0_16
cmpq	$-1, %rdx
jne	.LBB0_17
leaq	-1(%rsi), %rcx
movq	%r11, %rbx
jmp	.LBB0_16
.LBB0_17:
movq	%rdi, %rcx
xorl	%r11d, %r11d
jmp	.LBB0_18
.LBB0_21:
addq	%rcx, %rax
movq	%rsi, %rcx
movq	%rbx, %r11
.LBB0_18:
cmpq	%rcx, %r11
movl	$1, %edx
cmovbq	%r10, %rdx
cmoveq	%r9, %rdx
testq	%rdx, %rdx
movl	$0, %esi
movl	$1, %ebx
je	.LBB0_21
cmpq	$-1, %rdx
jne	.LBB0_22
leaq	-1(%rcx), %rsi
movq	%r11, %rbx
jmp	.LBB0_21
.LBB0_22:
addq	$2, %r8
cmpq	%rdi, %r8
jne	.LBB0_12
.LBB0_23:
popq	%rbx
retq
.Lfunc_end0:
```
</details><br>
With this PR:
```asm
foo3r:
test	rcx, rcx
je	.LBB3_1
lea	r8, [rcx - 1]
lea	rdx, [rcx - 2]
mov	rax, r8
mul	rdx
shld	rdx, rax, 63
imul	r8, r8
add	r8, rcx
sub	r8, rdx
imul	r8, rcx
mov	rax, r8
ret
.LBB3_1:
xor	r8d, r8d
mov	rax, r8
ret
```
…alexcrichton
Use time crate in bootstrap dist instead of date
`bootstrap dist` command is trying to run *NIX specific `date` command to get current month and year. This command keep failing when it's called on a Windows command prompt. This patch is making it use time crate.
Closes: rust-lang#47908
… r=nikomatsakis
Document that associated constants prevent a trait from being made into an object
Fixesrust-lang#47952
Add a short mention of associated constants to E0038
…s, r=kennytm
config.toml.example: fix typos.
Most of them were found by codespell: https://github.com/lucasdemarchi/codespell
@rust-highfive

Copy link
Copy Markdown
Contributor

r? @cramertj

(rust_highfive has picked a reviewer for you, use r? to override)

@kennytm

Copy link
Copy Markdown
MemberAuthor

@bors r+ p=7

@bors

bors commented Feb 6, 2018

Copy link
Copy Markdown
Collaborator

📌 Commit 7f0e87a has been approved by kennytm

@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Feb 6, 2018
@bors

bors commented Feb 6, 2018

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 7f0e87a with merge bd98fe0...

bors added a commit that referenced this pull request Feb 6, 2018
Rollup of 7 pull requests
- Successful merges: #46962, #47986, #48012, #48013, #48026, #48031, #48036
- Failed merges:
@bors

bors commented Feb 6, 2018

Copy link
Copy Markdown
Collaborator

☀️ Test successful - status-appveyor, status-travis
Approved by: kennytm
Pushing bd98fe0 to master...

@bors
bors merged commit 7f0e87a into rust-lang:masterFeb 6, 2018
@CentrilCentril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollupA PR which is a rollupS-waiting-on-borsStatus: 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.

11 participants

@kennytm@rust-highfive@bors@Centril@cramertj@scottmcm@onur@matthiaskrgr@durka@QuietMisdreavus@Badel2