]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoRollup merge of #74367 - Neutron3529:patch-1, r=nagisa
Manish Goregaokar [Fri, 24 Jul 2020 17:01:30 +0000 (10:01 -0700)]
Rollup merge of #74367 - Neutron3529:patch-1, r=nagisa

Rearrange the pipeline of `pow` to gain efficiency

The check of the `exp` parameter seems useless if we execute the while-loop more than once.
The original implementation of `pow` function using one more comparison if the `exp==0` and may break the pipeline of the cpu, which may generate a slower code.
The performance gap between the old and the new implementation may be small, but IMO, at least the newer one looks more beautiful.

---

bench prog:
```
#![feature(test)]
extern crate test;
#[macro_export]macro_rules! timing{
($a:expr)=>{let time=std::time::Instant::now();{$a;}print!("{:?} ",time.elapsed())};
($a:expr,$b:literal)=>{let time=std::time::Instant::now();let mut a=0;for _ in 0..$b{a^=$a;}print!("{:?} {} ",time.elapsed(),a)}
}
#[inline]
pub fn pow_rust(x:i64, mut exp: u32) -> i64 {
    let mut base = x;
    let mut acc = 1;
    while exp > 1 {
        if (exp & 1) == 1 {
            acc = acc * base;
        }
        exp /= 2;
        base = base * base;
    }
    if exp == 1 {
        acc = acc * base;
    }
    acc
}
#[inline]
pub fn pow_new(x:i64, mut exp: u32) -> i64 {
    if exp==0{
        1
    }else{
        let mut base = x;
        let mut acc = 1;
        while exp > 1 {
            if (exp & 1) == 1 {
                acc = acc * base;
            }
            exp >>= 1;
            base = base * base;
        }
        acc * base
    }
}

fn main(){
let a=2i64;
let b=1_u32;
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
}
```
bench in my laptop:
```
neutron@Neutron:/me/rust$ rc commit.rs
rustc commit.rs  && ./commit

3.978419716s 0 4.079765171s 0 3.964630622s 0
3.997127013s 0 4.260304804s 0 3.997638211s 0
3.963195544s 0 4.11657718s 0 4.176054164s 0
3.830128579s 0 3.980396122s 0 3.937258567s 0
3.986055948s 0 4.127804162s 0 4.018943411s 0
4.185568857s 0 4.217512517s 0 3.98313603s 0
3.863018225s 0 4.030447988s 0 3.694878237s 0
4.206987927s 0 4.137608047s 0 4.115564664s 0
neutron@Neutron:/me/rust$ rc commit.rs -O
rustc commit.rs -O && ./commit

162.111993ms 0 165.107125ms 0 166.26924ms 0
175.20479ms 0 205.062565ms 0 176.278791ms 0
174.408975ms 0 166.526899ms 0 201.857604ms 0
146.190062ms 0 168.592821ms 0 154.61411ms 0
199.678912ms 0 168.411598ms 0 162.129996ms 0
147.420765ms 0 209.759326ms 0 154.807907ms 0
165.507134ms 0 188.476239ms 0 157.351524ms 0
121.320123ms 0 126.401229ms 0 114.86428ms 0
```

3 years agoRollup merge of #72954 - hermitcore:rwlock, r=dtolnay
Manish Goregaokar [Fri, 24 Jul 2020 17:01:28 +0000 (10:01 -0700)]
Rollup merge of #72954 - hermitcore:rwlock, r=dtolnay

revise RwLock for HermitCore

- current version is derived from the wasm implementation
- increasing the readability of `Condvar`
- simplify the interface to the libos

3 years agoAuto merge of #74676 - lcnr:generics-no-sort, r=varkor
bors [Fri, 24 Jul 2020 13:58:36 +0000 (13:58 +0000)]
Auto merge of #74676 - lcnr:generics-no-sort, r=varkor

correctly deal with unsorted generic parameters

We now stop sorting generic params and instead correctly handle unsorted params in the rest of the compiler.

We still restrict const params to come after type params though, so this PR does not change anything which
is visible to users.

This might slightly influence perf, so let's prevent any unintentional rollups. @bors rollup=never

r? @varkor

3 years agoAuto merge of #74710 - JohnTitor:rollup-bdz4oee, r=JohnTitor
bors [Fri, 24 Jul 2020 12:16:47 +0000 (12:16 +0000)]
Auto merge of #74710 - JohnTitor:rollup-bdz4oee, r=JohnTitor

Rollup of 12 pull requests

Successful merges:

 - #74361 (Improve doc theme logo display)
 - #74504 (Add right border bar to Dark and Light theme)
 - #74572 (Internally unify rustc_deprecated and deprecated)
 - #74601 (Clean up E0724 explanation)
 - #74623 (polymorphize GlobalAlloc::Function)
 - #74665 (Don't ICE on unconstrained anonymous lifetimes inside associated types.)
 - #74666 (More BTreeMap test cases, some exposing undefined behaviour)
 - #74669 (Fix typo)
 - #74677 (Remove needless unsafety from BTreeMap::drain_filter)
 - #74680 (Add missing backticks in diagnostics note)
 - #74694 (Clean up E0727 explanation)
 - #74703 (Fix ICE while building MIR with type errors)

Failed merges:

r? @ghost

3 years agoRollup merge of #74703 - tmandry:issue-74047, r=oli-obk
Yuki Okushi [Fri, 24 Jul 2020 09:56:43 +0000 (18:56 +0900)]
Rollup merge of #74703 - tmandry:issue-74047, r=oli-obk

Fix ICE while building MIR with type errors

See https://github.com/rust-lang/rust/issues/74047#issuecomment-663290913 for background. Replacing a binding with `PatKind::Wild` (introduced in #51789 and later refactored in #67439) caused an ICE downstream while building MIR.

I noticed that taking this code out no longer triggers the ICEs it was added to prevent. I'm not sure what else changed, or if this change is _correct_, but it does seem to be passing ui tests at least.

r? @oli-obk
cc @estebank

Fixes #74047.

3 years agoRollup merge of #74694 - GuillaumeGomez:cleanup-e0727, r=Dylan-DPC
Yuki Okushi [Fri, 24 Jul 2020 09:56:42 +0000 (18:56 +0900)]
Rollup merge of #74694 - GuillaumeGomez:cleanup-e0727, r=Dylan-DPC

Clean up E0727 explanation

r? @Dylan-DPC

3 years agoRollup merge of #74680 - JohnTitor:missing-backticks, r=lcnr
Yuki Okushi [Fri, 24 Jul 2020 09:56:40 +0000 (18:56 +0900)]
Rollup merge of #74680 - JohnTitor:missing-backticks, r=lcnr

Add missing backticks in diagnostics note

3 years agoRollup merge of #74677 - ssomers:btree_cleanup_2, r=Amanieu
Yuki Okushi [Fri, 24 Jul 2020 09:56:38 +0000 (18:56 +0900)]
Rollup merge of #74677 - ssomers:btree_cleanup_2, r=Amanieu

Remove needless unsafety from BTreeMap::drain_filter

Remove one piece of unsafe code in the iteration over the iterator returned by BTreeMap::drain_filter.
- Changes an explicitly unspecified part of the API: when the user-supplied predicate (or some of BTreeMap's code) panicked, and the caller tries to use the iterator again, we no longer offer the same key/value pair to the predicate again but pretend the iterator has finished. Note that Miri does not find UB in the test case added here with the unsafe code (or without).
- Makes the code a little easier on the eyes.
- Makes the code a little harder on the CPU:
```
benchcmp c0 c2 --threshold 3
 name                                         c0 ns/iter  c2 ns/iter  diff ns/iter  diff %  speedup
 btree::set::clone_100_and_drain_all          2,794       2,900                106   3.79%   x 0.96
 btree::set::clone_100_and_drain_half         2,604       2,964                360  13.82%   x 0.88
 btree::set::clone_10k_and_drain_half         287,770     322,755           34,985  12.16%   x 0.89
```
r? @Amanieu

3 years agoRollup merge of #74669 - Homarechan:fix_typo, r=lcnr
Yuki Okushi [Fri, 24 Jul 2020 09:56:36 +0000 (18:56 +0900)]
Rollup merge of #74669 - Homarechan:fix_typo, r=lcnr

Fix typo

3 years agoRollup merge of #74666 - ssomers:btree_cleanup_1, r=Mark-Simulacrum
Yuki Okushi [Fri, 24 Jul 2020 09:56:34 +0000 (18:56 +0900)]
Rollup merge of #74666 - ssomers:btree_cleanup_1, r=Mark-Simulacrum

More BTreeMap test cases, some exposing undefined behaviour

Gathered from other ongoing PRs and all either blessed or ignored by Miri

r? @Mark-Simulacrum

3 years agoRollup merge of #74665 - smmalis37:issue-62200, r=davidtwco
Yuki Okushi [Fri, 24 Jul 2020 09:56:32 +0000 (18:56 +0900)]
Rollup merge of #74665 - smmalis37:issue-62200, r=davidtwco

Don't ICE on unconstrained anonymous lifetimes inside associated types.

Fixes #62200. The change here is inspired (copied) by how this case is handled on bare fns at https://github.com/rust-lang/rust/blob/e8b55a4ad230ebec762fdfc4f241ba98a98560af/src/librustc_typeck/astconv.rs#L3083-L3106.

3 years agoRollup merge of #74623 - lcnr:polymorphize-functions, r=eddyb
Yuki Okushi [Fri, 24 Jul 2020 09:56:31 +0000 (18:56 +0900)]
Rollup merge of #74623 - lcnr:polymorphize-functions, r=eddyb

polymorphize GlobalAlloc::Function

this sadly does not change #74614

r? @eddyb

3 years agoRollup merge of #74601 - GuillaumeGomez:cleanup-e0724, r=jyn514
Yuki Okushi [Fri, 24 Jul 2020 09:56:29 +0000 (18:56 +0900)]
Rollup merge of #74601 - GuillaumeGomez:cleanup-e0724, r=jyn514

Clean up E0724 explanation

r? @Dylan-DPC

3 years agoRollup merge of #74572 - Mark-Simulacrum:unify-rustc-depr, r=petrochenkov
Yuki Okushi [Fri, 24 Jul 2020 09:56:27 +0000 (18:56 +0900)]
Rollup merge of #74572 - Mark-Simulacrum:unify-rustc-depr, r=petrochenkov

Internally unify rustc_deprecated and deprecated

This PR intentionally tries to be "featureless" in that the behavior is not altered for either attribute, though it more clearly exposes cases where that is the case in the code.

3 years agoRollup merge of #74504 - lzutao:ayu-border-selected-fn, r=GuillaumeGomez
Yuki Okushi [Fri, 24 Jul 2020 09:56:25 +0000 (18:56 +0900)]
Rollup merge of #74504 - lzutao:ayu-border-selected-fn, r=GuillaumeGomez

Add right border bar to Dark and Light theme

Demo:
Light theme: https://github.com/rust-lang/rust/pull/74504#issuecomment-662491120
Dark theme: https://github.com/rust-lang/rust/pull/74504#issuecomment-662522446
Ayu theme: https://github.com/rust-lang/rust/pull/74504#issuecomment-662625685

3 years agoRollup merge of #74361 - GuillaumeGomez:theme-logo, r=Manishearth
Yuki Okushi [Fri, 24 Jul 2020 09:56:22 +0000 (18:56 +0900)]
Rollup merge of #74361 - GuillaumeGomez:theme-logo, r=Manishearth

Improve doc theme logo display

Fixes #74350.

The first commit cleans up the whitespaces and converts them to tabs. We should definitely write a tidy check for this (will do it in another PR).

Screenshots:

![Screenshot from 2020-07-15 14-08-25](https://user-images.githubusercontent.com/3050060/87543748-8581c800-c6a5-11ea-8417-cbf98ebbfd10.png)
![Screenshot from 2020-07-15 14-11-59](https://user-images.githubusercontent.com/3050060/87543747-84e93180-c6a5-11ea-8cea-976b1470e809.png)
![Screenshot from 2020-07-15 14-12-12](https://user-images.githubusercontent.com/3050060/87543745-84509b00-c6a5-11ea-8324-c3c46ab2d9ef.png)

r? @lzutao
cc @Cldfire

3 years agoAdd right border bar to Dark and Light theme
Lzu Tao [Wed, 22 Jul 2020 14:46:33 +0000 (14:46 +0000)]
Add right border bar to Dark and Light theme

Ayu has it. Adding similar rule to other themes makes users less
surprised and makes GUI more consistent.

3 years agoayu: Change to less luminous color
Lzu Tao [Thu, 23 Jul 2020 03:07:26 +0000 (03:07 +0000)]
ayu: Change to less luminous color

Co-authored-by: Cldfire <cldfire@3grid.net>
3 years agoFix ICE while building MIR with type errors
Tyler Mandry [Fri, 24 Jul 2020 00:41:05 +0000 (17:41 -0700)]
Fix ICE while building MIR with type errors

Fixes #74047.

3 years agoAuto merge of #74685 - ehuss:update-cargo, r=ehuss
bors [Thu, 23 Jul 2020 20:15:28 +0000 (20:15 +0000)]
Auto merge of #74685 - ehuss:update-cargo, r=ehuss

Update cargo

21 commits in 43cf77395cad5b79887b20b7cf19d418bbd703a9..aa6872140ab0fa10f641ab0b981d5330d419e927
2020-07-13 17:35:42 +0000 to 2020-07-23 13:46:27 +0000
- Update features set in CI. (rust-lang/cargo#8530)
- Stabilize -Z crate-versions (rust-lang/cargo#8509)
- Fix typo in docs (rust-lang/cargo#8529)
- Remove unused CompileMode::all_modes (rust-lang/cargo#8526)
- Mask out system core.autocrlf settings before resetting git repos (rust-lang/cargo#8523)
- Flag git zlib errors as spurious errors (rust-lang/cargo#8520)
- Fix the help display for the target-triple option (rust-lang/cargo#8515)
- Check workspace member existence as dir. (rust-lang/cargo#8511)
- Bump to 0.48.0, update changelog (rust-lang/cargo#8508)
- Apply workspace.exclude to workspace.default-members. (rust-lang/cargo#8485)
- Fix nightly tests for intra-doc links. (rust-lang/cargo#8528)
- doc: Replace "regenerate" with "revoke" for API tokens (rust-lang/cargo#8510)
- Add back Manifest::targets_mut (rust-lang/cargo#8494)
- Build host dependencies with opt-level 0 by default (rust-lang/cargo#8500)
- Fix freshness checks for build scripts on renamed dirs (rust-lang/cargo#8497)
- Add a `-Zbuild-std-features` flag (rust-lang/cargo#8490)
- clippy cleanups (rust-lang/cargo#8495)
- Fix self-publish script. (rust-lang/cargo#8492)
- Ensure `unstable.build-std` works like `-Zbuild-std` (rust-lang/cargo#8491)
- Make `cargo metadata` output deterministic (rust-lang/cargo#8489)
- Switch to github actions (rust-lang/cargo#8467)

3 years agoClean up E0724 explanation
Guillaume Gomez [Tue, 21 Jul 2020 19:08:21 +0000 (21:08 +0200)]
Clean up E0724 explanation

3 years agoClean up E0727 explanation
Guillaume Gomez [Thu, 23 Jul 2020 19:11:40 +0000 (21:11 +0200)]
Clean up E0727 explanation

3 years agoBTreeMap::drain_filter: replace needless unsafety and test
Stein Somers [Wed, 22 Jul 2020 20:37:54 +0000 (22:37 +0200)]
BTreeMap::drain_filter: replace needless unsafety and test

3 years agoUpdate cargo
Eric Huss [Thu, 23 Jul 2020 15:28:50 +0000 (08:28 -0700)]
Update cargo

3 years agoAuto merge of #74509 - matthewjasper:empty-verify, r=nikomatsakis
bors [Thu, 23 Jul 2020 13:43:42 +0000 (13:43 +0000)]
Auto merge of #74509 - matthewjasper:empty-verify, r=nikomatsakis

Use `ReEmpty(U0)` as the implicit region bound in typeck

Fixes #74429

r? @nikomatsakis

3 years agoAdd missing backticks in diagnostics note
Yuki Okushi [Thu, 23 Jul 2020 12:52:48 +0000 (21:52 +0900)]
Add missing backticks in diagnostics note

3 years agotest usage
Bastian Kauschke [Thu, 23 Jul 2020 12:30:01 +0000 (14:30 +0200)]
test usage

3 years agoadd more complex param order test
Bastian Kauschke [Thu, 23 Jul 2020 11:19:35 +0000 (13:19 +0200)]
add more complex param order test

3 years agoAuto merge of #74613 - Mark-Simulacrum:revert-gimli, r=nnethercote
bors [Thu, 23 Jul 2020 11:14:48 +0000 (11:14 +0000)]
Auto merge of #74613 - Mark-Simulacrum:revert-gimli, r=nnethercote

Revert libbacktrace -> gimli

This reverts 4cbd265c119cb1a5eb92e98d2bb93466f05efa46 028f8d7b85898683b99e05564cd2976c7e0d5b43 13db3cc1e8d2fd4b8e7c74d91002274d7b62801b d7a36d8964c927863faef5d3b42da08f37e5896c (and technically 79673d300915f846726c27b9e1974dc451013ee9 but it's made empty by previous reverts).

The current plan is to land this PR as a temporary change, so that we can get a better handle on the regressions introduced by it. Trying to fix/examine them in master is difficult, and we want to be better able to evaluate them without impact to other PRs being landed in the mean time.

That said, it is currently *my* belief that gimli, in one form or another, will need to land sometime soon. I think it's quite likely that it may slip a week or two, but I would personally push for re-landing it then "regardless" of the regressions. We should try to focus efforts on understanding and removing as much of the performance impact as possible, as everyone pretty much agrees that it should be quite minimal (and entirely in the linker, basically).

r? @nnethercote

3 years agocleanup
Bastian Kauschke [Thu, 23 Jul 2020 11:04:44 +0000 (13:04 +0200)]
cleanup

3 years agofix ICE caused by wrongly ordered generic params
Bastian Kauschke [Thu, 23 Jul 2020 10:28:27 +0000 (12:28 +0200)]
fix ICE caused by wrongly ordered generic params

3 years agostop sorting generic params
Bastian Kauschke [Thu, 23 Jul 2020 08:15:02 +0000 (10:15 +0200)]
stop sorting generic params

3 years agoAuto merge of #74667 - Manishearth:rollup-s6k59sw, r=Manishearth
bors [Thu, 23 Jul 2020 08:56:45 +0000 (08:56 +0000)]
Auto merge of #74667 - Manishearth:rollup-s6k59sw, r=Manishearth

Rollup of 8 pull requests

Successful merges:

 - #74141 (libstd/libcore: fix various typos)
 - #74490 (add a Backtrace::disabled function)
 - #74548 (one more Path::with_extension example, to demonstrate behavior)
 - #74587 (Prefer constant over function)
 - #74606 (Remove Linux workarounds for missing CLOEXEC support)
 - #74637 (Make str point to primitive page)
 - #74654 (require type defaults to be after const generic parameters)
 - #74659 (Improve codegen for unchecked float casts on wasm)

Failed merges:

r? @ghost

3 years agoFix typo
kanimum [Thu, 23 Jul 2020 08:29:52 +0000 (17:29 +0900)]
Fix typo

3 years agoRollup merge of #74659 - alexcrichton:wasm-codegen, r=varkor
Manish Goregaokar [Thu, 23 Jul 2020 07:42:20 +0000 (00:42 -0700)]
Rollup merge of #74659 - alexcrichton:wasm-codegen, r=varkor

Improve codegen for unchecked float casts on wasm

This commit improves codegen for unchecked casts on WebAssembly targets
to use the singluar `iNN.trunc_fMM_{u,s}` instructions. Previously rustc
would codegen a bare `fptosi` and `fptoui` for float casts but for
WebAssembly targets the codegen for these instructions is quite large.
This large codegen is due to the fact that LLVM can speculate these
instructions so the trapping behavior of WebAssembly needs to be
protected against in case they're speculated.

The change here is to update the codegen for the unchecked cast
intrinsics to have a wasm-specific case where they call the appropriate
LLVM intrinsic to generate the right wasm instruction. The intrinsic is
explicitly opting-in to undefined behavior so a trap here for
out-of-bounds inputs on wasm should be acceptable.

cc #73591

3 years agoRollup merge of #74654 - lcnr:default-no-more, r=varkor
Manish Goregaokar [Thu, 23 Jul 2020 07:42:18 +0000 (00:42 -0700)]
Rollup merge of #74654 - lcnr:default-no-more, r=varkor

require type defaults to be after const generic parameters

From current discussions it seems like the goal here is for type and const parameters to be unordered and allow things like `struct Foo<const N: usize, T = u32>(T)` and `struct Foo<T, const N: usize = 7>` this way.

Note: This means that using `min_const_generics` it will not be possible for an adt to have both type defaults and const parameters.

closes #70471

r? @varkor @eddyb

3 years agoRollup merge of #74637 - lzutao:str-primitive-links, r=jyn514
Manish Goregaokar [Thu, 23 Jul 2020 07:42:16 +0000 (00:42 -0700)]
Rollup merge of #74637 - lzutao:str-primitive-links, r=jyn514

Make str point to primitive page

Currently str in String page points to str module page.

3 years agoRollup merge of #74606 - cuviper:cloexec, r=sfackler
Manish Goregaokar [Thu, 23 Jul 2020 07:42:14 +0000 (00:42 -0700)]
Rollup merge of #74606 - cuviper:cloexec, r=sfackler

Remove Linux workarounds for missing CLOEXEC support

Now that #74163 updated the minimum Linux kernel to 2.6.32, we can
assume the availability of APIs that open file descriptors that are
already set to close on exec, including the flags `O_CLOEXEC`,
`SOCK_CLOEXEC`, and `F_DUPFD_CLOEXEC`.

Closes #74519.

3 years agoRollup merge of #74587 - lzutao:consts, r=dtolnay
Manish Goregaokar [Thu, 23 Jul 2020 07:42:12 +0000 (00:42 -0700)]
Rollup merge of #74587 - lzutao:consts, r=dtolnay

Prefer constant over function

Just that I prefer constants over functions that can be made const.

3 years agoRollup merge of #74548 - tshepang:one-more-example, r=dtolnay
Manish Goregaokar [Thu, 23 Jul 2020 07:42:10 +0000 (00:42 -0700)]
Rollup merge of #74548 - tshepang:one-more-example, r=dtolnay

one more Path::with_extension example, to demonstrate behavior

3 years agoRollup merge of #74490 - yaahc:disabled-bt, r=dtolnay
Manish Goregaokar [Thu, 23 Jul 2020 07:42:07 +0000 (00:42 -0700)]
Rollup merge of #74490 - yaahc:disabled-bt, r=dtolnay

add a Backtrace::disabled function

Based upon @dtolnay's suggestion here: https://github.com/dtolnay/anyhow/pull/97#issuecomment-647172942

3 years agoRollup merge of #74141 - euclio:typos, r=steveklabnik
Manish Goregaokar [Thu, 23 Jul 2020 07:42:01 +0000 (00:42 -0700)]
Rollup merge of #74141 - euclio:typos, r=steveklabnik

libstd/libcore: fix various typos

3 years agoAuto merge of #74611 - Mark-Simulacrum:revert-74069-bad-niche, r=eddyb
bors [Thu, 23 Jul 2020 07:11:01 +0000 (07:11 +0000)]
Auto merge of #74611 - Mark-Simulacrum:revert-74069-bad-niche, r=eddyb

Revert "Compare tagged/niche-filling layout and pick the best one"

Reverts rust-lang/rust#74069. It caused a performance regression, see https://github.com/rust-lang/rust/pull/74069#issuecomment-662166827. perf: https://perf.rust-lang.org/compare.html?start=d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02&end=cfade73820883adf654fe34fd6b0b03a99458a51

r? @eddyb

cc @nnethercote

3 years agoRearrange the pipeline of `pow` to gain efficiency
Neutron3529 [Wed, 15 Jul 2020 14:39:39 +0000 (22:39 +0800)]
Rearrange the pipeline of `pow` to gain efficiency

The check of the `exp` parameter seems useless if we execute the while-loop more than once.
The original implementation of `pow` function using one more comparison if the `exp==0` and may break the pipeline of the cpu, which may generate a slower code.
The performance gap between the old and the new implementation may be small, but IMO, at least the newer one looks more beautiful.

---

bench prog:
```
extern crate test;
($a:expr)=>{let time=std::time::Instant::now();{$a;}print!("{:?} ",time.elapsed())};
($a:expr,$b:literal)=>{let time=std::time::Instant::now();let mut a=0;for _ in 0..$b{a^=$a;}print!("{:?} {} ",time.elapsed(),a)}
}
pub fn pow_rust(x:i64, mut exp: u32) -> i64 {
    let mut base = x;
    let mut acc = 1;
    while exp > 1 {
        if (exp & 1) == 1 {
            acc = acc * base;
        }
        exp /= 2;
        base = base * base;
    }
    if exp == 1 {
        acc = acc * base;
    }
    acc
}
pub fn pow_new(x:i64, mut exp: u32) -> i64 {
    if exp==0{
        1
    }else{
        let mut base = x;
        let mut acc = 1;
        while exp > 1 {
            if (exp & 1) == 1 {
                acc = acc * base;
            }
            exp >>= 1;
            base = base * base;
        }
        acc * base
    }
}

fn main(){
let a=2i64;
let b=1_u32;
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
timing!(test::black_box(a).pow(test::black_box(b)),100000000);
timing!(pow_new(test::black_box(a),test::black_box(b)),100000000);
timing!(pow_rust(test::black_box(a),test::black_box(b)),100000000);
println!();
}
```
bench in my laptop:
```
neutron@Neutron:/me/rust$ rc commit.rs
rustc commit.rs  && ./commit

3.978419716s 0 4.079765171s 0 3.964630622s 0
3.997127013s 0 4.260304804s 0 3.997638211s 0
3.963195544s 0 4.11657718s 0 4.176054164s 0
3.830128579s 0 3.980396122s 0 3.937258567s 0
3.986055948s 0 4.127804162s 0 4.018943411s 0
4.185568857s 0 4.217512517s 0 3.98313603s 0
3.863018225s 0 4.030447988s 0 3.694878237s 0
4.206987927s 0 4.137608047s 0 4.115564664s 0
neutron@Neutron:/me/rust$ rc commit.rs -O
rustc commit.rs -O && ./commit

162.111993ms 0 165.107125ms 0 166.26924ms 0
175.20479ms 0 205.062565ms 0 176.278791ms 0
174.408975ms 0 166.526899ms 0 201.857604ms 0
146.190062ms 0 168.592821ms 0 154.61411ms 0
199.678912ms 0 168.411598ms 0 162.129996ms 0
147.420765ms 0 209.759326ms 0 154.807907ms 0
165.507134ms 0 188.476239ms 0 157.351524ms 0
121.320123ms 0 126.401229ms 0 114.86428ms 0
```

delete an unnecessary semicolon...

Sorry for the typo.

delete trailing whitespace

Sorry, too..

Sorry for the missing...

I checked all the implementations, and finally found that there is one function that does not check whether `exp == 0`

add extra tests

add extra tests.

finished adding the extra tests to prevent further typo

add pow(2) to negative exp

add whitespace.

add whitespace

add whitespace

delete extra line

3 years agoInclude the note in the test.
Steven Malis [Thu, 23 Jul 2020 06:19:38 +0000 (23:19 -0700)]
Include the note in the test.

3 years agotweak wording
Bastian Kauschke [Thu, 23 Jul 2020 06:06:42 +0000 (08:06 +0200)]
tweak wording

Co-authored-by: varkor <github@varkor.com>
3 years agoDon't ICE on unconstrained anonymous lifetimes inside associated types.
Steven Malis [Thu, 23 Jul 2020 05:54:06 +0000 (22:54 -0700)]
Don't ICE on unconstrained anonymous lifetimes inside associated types.

3 years agoPrefer constant over function
Lzu Tao [Thu, 23 Jul 2020 02:49:40 +0000 (02:49 +0000)]
Prefer constant over function

3 years agoPrefer type@str
Lzu Tao [Thu, 23 Jul 2020 02:42:37 +0000 (02:42 +0000)]
Prefer type@str

3 years agoMake str point to primitive page
Lzu Tao [Wed, 22 Jul 2020 15:17:50 +0000 (15:17 +0000)]
Make str point to primitive page

3 years agoAuto merge of #74662 - Manishearth:rollup-jdt7t71, r=Manishearth
bors [Thu, 23 Jul 2020 00:37:58 +0000 (00:37 +0000)]
Auto merge of #74662 - Manishearth:rollup-jdt7t71, r=Manishearth

Rollup of 9 pull requests

Successful merges:

 - #73783 (Detect when `'static` obligation might come from an `impl`)
 - #73868 (Advertise correct stable version for const control flow)
 - #74460 (rustdoc: Always warn when linking from public to private items)
 - #74538 (Guard against non-monomorphized type_id intrinsic call)
 - #74541 (Add the aarch64-apple-darwin target )
 - #74600 (Enable perf try builder)
 - #74618 (Do not ICE on assoc type with bad placeholder)
 - #74631 (rustc_target: Add a target spec option for disabling `--eh-frame-hdr`)
 - #74643 (build: Remove unnecessary `cargo:rerun-if-env-changed` annotations)

Failed merges:

r? @ghost

3 years agoUpdate src/libstd/backtrace.rs
Jane Lusby [Thu, 23 Jul 2020 00:19:02 +0000 (17:19 -0700)]
Update src/libstd/backtrace.rs

Co-authored-by: David Tolnay <dtolnay@gmail.com>
3 years agoone more Path::with_extension example, to demonstrate behavior
Tshepang Lekhonkhobe [Mon, 20 Jul 2020 10:25:12 +0000 (12:25 +0200)]
one more Path::with_extension example, to demonstrate behavior

3 years agoMove the pipe2 call behind a hard target `#[cfg]`
Josh Stone [Wed, 22 Jul 2020 23:38:58 +0000 (16:38 -0700)]
Move the pipe2 call behind a hard target `#[cfg]`

3 years agoRollup merge of #74643 - petrochenkov:noenvrerun, r=Mark-Simulacrum
Manish Goregaokar [Wed, 22 Jul 2020 23:34:50 +0000 (16:34 -0700)]
Rollup merge of #74643 - petrochenkov:noenvrerun, r=Mark-Simulacrum

build: Remove unnecessary `cargo:rerun-if-env-changed` annotations

... and a couple of related cleanups.

rustc and cargo now track the majority of env var dependencies automatically (https://github.com/rust-lang/cargo/pull/8421), so the annotations are no longer necessary.

3 years agoRollup merge of #74631 - petrochenkov:ehdr2, r=jonas-schievink
Manish Goregaokar [Wed, 22 Jul 2020 23:34:48 +0000 (16:34 -0700)]
Rollup merge of #74631 - petrochenkov:ehdr2, r=jonas-schievink

rustc_target: Add a target spec option for disabling `--eh-frame-hdr`

Disable `--eh-frame-hdr` for targets that use an `ld`-like linker, but don't support that option.
Do it through a target spec option rather than through hard-coding in `linker.rs`.
The option is still enabled by default though.

cc https://github.com/rust-lang/rust/pull/73564
Fixes https://github.com/rust-lang/rust/pull/73564#issuecomment-657011004
Fixes https://github.com/rust-lang/rust/pull/74625
Fixes https://github.com/rust-embedded/msp430-rt/issues/12

3 years agoRollup merge of #74618 - JohnTitor:no-more-bad-placeholder, r=estebank
Manish Goregaokar [Wed, 22 Jul 2020 23:34:46 +0000 (16:34 -0700)]
Rollup merge of #74618 - JohnTitor:no-more-bad-placeholder, r=estebank

Do not ICE on assoc type with bad placeholder

Fixes #74612
r? @estebank

3 years agoRollup merge of #74600 - Mark-Simulacrum:try-perf, r=pietroalbini
Manish Goregaokar [Wed, 22 Jul 2020 23:34:44 +0000 (16:34 -0700)]
Rollup merge of #74600 - Mark-Simulacrum:try-perf, r=pietroalbini

Enable perf try builder

This adds a dedicated branch for perf to use for CI, intended to allow perf to
enqueue builds without needing to use bors. bors is great, but bors requires an
open PR to work, and we want to invoke perf on closed PRs sometimes (in
particular, rollups).

3 years agoRollup merge of #74541 - shepmaster:aarch64-apple-darwin-target, r=nagisa
Manish Goregaokar [Wed, 22 Jul 2020 23:34:43 +0000 (16:34 -0700)]
Rollup merge of #74541 - shepmaster:aarch64-apple-darwin-target, r=nagisa

Add the aarch64-apple-darwin target

This is a basic copy-paste-modify from the existing
x86_64-apple-darwin target.

3 years agoRollup merge of #74538 - nbdd0121:issue-73976, r=lcnr
Manish Goregaokar [Wed, 22 Jul 2020 23:34:41 +0000 (16:34 -0700)]
Rollup merge of #74538 - nbdd0121:issue-73976, r=lcnr

Guard against non-monomorphized type_id intrinsic call

This PR checks whether the type is sufficient monomorphized when calling type_id or type_name intrinsics. If the type is not sufficiently monomorphized, e.g. used in a pattern, the code will be rejected.

Fixes #73976

3 years agoRollup merge of #74460 - dennis-hamester:rustdoc-warn-pub-to-priv, r=jyn514
Manish Goregaokar [Wed, 22 Jul 2020 23:34:39 +0000 (16:34 -0700)]
Rollup merge of #74460 - dennis-hamester:rustdoc-warn-pub-to-priv, r=jyn514

rustdoc: Always warn when linking from public to private items

Change the logic such that linking from a public to a private item always triggers `intra_doc_link_resolution_failure`.
Previously, the warning was not emitted when `--document-private-items` is passed.

This came up during the discussion in https://github.com/rust-lang/rust/pull/74147#discussion_r452597901.

3 years agoRollup merge of #73868 - ecstatic-morse:fix-stable-version, r=jonas-schievink
Manish Goregaokar [Wed, 22 Jul 2020 23:34:37 +0000 (16:34 -0700)]
Rollup merge of #73868 - ecstatic-morse:fix-stable-version, r=jonas-schievink

Advertise correct stable version for const control flow

#72437 was opened before the 1.45 release but merged afterwards. These will be stable in 1.46.

3 years agoRollup merge of #73783 - estebank:impl-dyn-trait-static-lifetime, r=nikomatsakis
Manish Goregaokar [Wed, 22 Jul 2020 23:34:36 +0000 (16:34 -0700)]
Rollup merge of #73783 - estebank:impl-dyn-trait-static-lifetime, r=nikomatsakis

Detect when `'static` obligation might come from an `impl`

Partly address #71341.

3 years agoImprove codegen for unchecked float casts on wasm
Alex Crichton [Wed, 22 Jul 2020 21:51:12 +0000 (14:51 -0700)]
Improve codegen for unchecked float casts on wasm

This commit improves codegen for unchecked casts on WebAssembly targets
to use the singluar `iNN.trunc_fMM_{u,s}` instructions. Previously rustc
would codegen a bare `fptosi` and `fptoui` for float casts but for
WebAssembly targets the codegen for these instructions is quite large.
This large codegen is due to the fact that LLVM can speculate these
instructions so the trapping behavior of WebAssembly needs to be
protected against in case they're speculated.

The change here is to update the codegen for the unchecked cast
intrinsics to have a wasm-specific case where they call the appropriate
LLVM intrinsic to generate the right wasm instruction. The intrinsic is
explicitly opting-in to undefined behavior so a trap here for
out-of-bounds inputs on wasm should be acceptable.

cc #73591

3 years agoAuto merge of #74404 - lcnr:ty-dep-path-cleanup-aaaaa, r=eddyb
bors [Wed, 22 Jul 2020 21:50:21 +0000 (21:50 +0000)]
Auto merge of #74404 - lcnr:ty-dep-path-cleanup-aaaaa, r=eddyb

remove some const arg in ty dep path boilerplate

followup to #74113, together with #74376, this closes #74360.

r? @eddyb

3 years agoMore BTreeMap test cases, some exposing undefined behaviour
Stein Somers [Tue, 14 Jul 2020 09:32:50 +0000 (11:32 +0200)]
More BTreeMap test cases, some exposing undefined behaviour

3 years agorequire type defaults to be after const generic parameters
Bastian Kauschke [Wed, 22 Jul 2020 20:58:54 +0000 (22:58 +0200)]
require type defaults to be after const generic parameters

as if this is currently possible. HA!

3 years agoChange error code number
Esteban Küber [Mon, 20 Jul 2020 20:56:50 +0000 (13:56 -0700)]
Change error code number

3 years agorustdoc: Add explanation when linting against public to private item links
Dennis Hamester [Wed, 22 Jul 2020 17:53:43 +0000 (19:53 +0200)]
rustdoc: Add explanation when linting against public to private item links

The additional note helps explaining why the lint was triggered and that
--document-private-items directly influences the link resolution.

3 years agorustdoc: Always warn when linking from public to private items
Dennis Hamester [Sat, 11 Jul 2020 17:39:02 +0000 (19:39 +0200)]
rustdoc: Always warn when linking from public to private items

Change the logic such that linking from a public to a private item always
triggers intra_doc_link_resolution_failure. Previously, the warning was
not emitted when --document-private-items is passed.

Also don't rely anymore on the item's visibility, which would falsely trigger
the lint now that the check for --document-private-items is gone.

3 years agoAuto merge of #74633 - davidtwco:issue-74614-disable-polymorphisation, r=wesleywiser
bors [Wed, 22 Jul 2020 19:34:20 +0000 (19:34 +0000)]
Auto merge of #74633 - davidtwco:issue-74614-disable-polymorphisation, r=wesleywiser

Disable polymorphisation

Fixes #74614.

This PR disables polymorphisation to fix the regression in #74614 after investigation into the issue makes it clear that the fix won't be trivial. ~~I'll file an issue shortly to replace #74614 with the findings so far.~~ #74636 has been filed to track the fix of the underlying regression.

r? @eddyb

3 years agoHandle fully-qualified paths and add test cases
Esteban Küber [Wed, 1 Jul 2020 21:02:57 +0000 (14:02 -0700)]
Handle fully-qualified paths and add test cases

3 years agoPartially account for case where used method is from trait
Esteban Küber [Wed, 1 Jul 2020 07:24:55 +0000 (00:24 -0700)]
Partially account for case where used method is from trait

3 years agoUse `ty::Instance::resolve` to identify `'static` bound source
Esteban Küber [Wed, 1 Jul 2020 00:41:15 +0000 (17:41 -0700)]
Use `ty::Instance::resolve` to identify `'static` bound source

3 years agoFurther tweak wording of E0759 and introduce E0767
Esteban Küber [Mon, 29 Jun 2020 18:14:42 +0000 (11:14 -0700)]
Further tweak wording of E0759 and introduce E0767

3 years agoAdd more context to diagnostic
Esteban Küber [Mon, 29 Jun 2020 01:07:26 +0000 (18:07 -0700)]
Add more context to diagnostic

3 years agoIncrease accuracy of lifetime bound on trait object impl suggestion
Esteban Küber [Sun, 28 Jun 2020 22:26:12 +0000 (15:26 -0700)]
Increase accuracy of lifetime bound on trait object impl suggestion

3 years agoDetect when `'static` obligation might come from an `impl`
Esteban Küber [Sat, 27 Jun 2020 01:52:00 +0000 (18:52 -0700)]
Detect when `'static` obligation might come from an `impl`

Address #71341.

3 years agobuild: Avoid unnecessary build script reruns in libstd
Vadim Petrochenkov [Wed, 22 Jul 2020 17:06:37 +0000 (20:06 +0300)]
build: Avoid unnecessary build script reruns in libstd

Add a FIXME to build scripts in profiler_builtins

3 years agobuild: Harden env var tracking in build scripts
Vadim Petrochenkov [Wed, 22 Jul 2020 16:51:19 +0000 (19:51 +0300)]
build: Harden env var tracking in build scripts

3 years agoAuto merge of #74642 - Manishearth:rollup-148kz52, r=Manishearth
bors [Wed, 22 Jul 2020 16:30:36 +0000 (16:30 +0000)]
Auto merge of #74642 - Manishearth:rollup-148kz52, r=Manishearth

Rollup of 9 pull requests

Successful merges:

 - #73655 (va_args implementation for AAPCS.)
 - #73893 (Stabilize control-flow-guard codegen option)
 - #74237 (compiletest: Rewrite extract_*_version functions)
 - #74454 (small coherence cleanup)
 - #74528 (refactor and reword intra-doc link errors)
 - #74568 (Apply #66379 to `*mut T` `as_ref`)
 - #74570 (Use forge links for prioritization procedure)
 - #74589 (Update books)
 - #74635 (Fix tooltip position if the documentation starts with a code block)

Failed merges:

r? @ghost

3 years agoRollup merge of #74635 - GuillaumeGomez:fix-tooltip-pos, r=Manishearth
Manish Goregaokar [Wed, 22 Jul 2020 16:29:17 +0000 (09:29 -0700)]
Rollup merge of #74635 - GuillaumeGomez:fix-tooltip-pos, r=Manishearth

Fix tooltip position if the documentation starts with a code block

Fixes #74321.

Before:

![before](https://user-images.githubusercontent.com/3050060/88188970-cf842400-cc38-11ea-839b-37e41656837d.png)

After:

![after](https://user-images.githubusercontent.com/3050060/88188981-d3b04180-cc38-11ea-8194-713ffe640d3a.png)

And in case there is text, it is not being applied:

![after-witness](https://user-images.githubusercontent.com/3050060/88189009-ddd24000-cc38-11ea-9f0a-61dfd0a0cbd0.png)

And on mobile it isn't needed so it's not "activated":

![Screenshot from 2020-07-22 17-17-43](https://user-images.githubusercontent.com/3050060/88194698-65bb4880-cc3f-11ea-8513-0043ccca8cfc.png)

r? @rust-lang/rustdoc

3 years agoRollup merge of #74589 - ehuss:update-books, r=ehuss
Manish Goregaokar [Wed, 22 Jul 2020 16:29:15 +0000 (09:29 -0700)]
Rollup merge of #74589 - ehuss:update-books, r=ehuss

Update books

## reference

5 commits in 0ea7bc494f1289234d8800bb9185021e0ad946f0..b329ce37424874ad4db94f829a55807c6e21d2cb
2020-07-02 15:33:04 -0700 to 2020-07-20 08:54:08 -0700
- this '*' is unnecessary, and reduces readability (rust-lang-nursery/reference#853)
- Tiny typo fix (rust-lang-nursery/reference#849)
- Update const eval chapter to latest changes (rust-lang-nursery/reference#842)
- Document #[track_caller]. (rust-lang-nursery/reference#742)
- Document shebang restriction. (rust-lang-nursery/reference#823)

## book

2 commits in 84a31397b34f9d405df44f2899ff17a4828dba18..a914f2c7e5cdb771fa465de142381a51c53b580e
2020-07-04 10:50:18 -0500 to 2020-07-21 09:20:05 -0500
- Change misleading wording (rust-lang/book#2399)
- Improve wording to include Windows versions (rust-lang/book#2395)

## edition-guide

3 commits in 82bec5877c77cfad530ca11095db4456d757f668..bd6e4a9f59c5c1545f572266af77f5c7a5bad6d1
2020-06-03 08:56:02 -0500 to 2020-07-12 17:37:08 -0500
- update guide for 1.36 and 1.37 (rust-lang/edition-guide#217)
- Add contents for Rust 1.35 (rust-lang/edition-guide#216)
- update edition guide for Rust 1.34 (rust-lang/edition-guide#215)

3 years agoRollup merge of #74570 - spastorino:fix-prioritization-procedures-links, r=Mark-Simul...
Manish Goregaokar [Wed, 22 Jul 2020 16:29:13 +0000 (09:29 -0700)]
Rollup merge of #74570 - spastorino:fix-prioritization-procedures-links, r=Mark-Simulacrum

Use forge links for prioritization procedure

r? @Mark-Simulacrum

cc @rust-lang/wg-prioritization

3 years agoRollup merge of #74568 - aticu:master, r=Mark-Simulacrum
Manish Goregaokar [Wed, 22 Jul 2020 16:29:11 +0000 (09:29 -0700)]
Rollup merge of #74568 - aticu:master, r=Mark-Simulacrum

Apply #66379 to `*mut T` `as_ref`

#66379 changed the documentation of `as_ref` on the type `*const T` and `as_mut` on the type `*mut T`, but it missed making that same change for `as_ref` on the type `*mut T`.

3 years agoRollup merge of #74528 - euclio:intra-link-errors, r=jyn514
Manish Goregaokar [Wed, 22 Jul 2020 16:29:09 +0000 (09:29 -0700)]
Rollup merge of #74528 - euclio:intra-link-errors, r=jyn514

refactor and reword intra-doc link errors

This commit refactors intra-doc link error reporting to deduplicate code
and decouple error construction from the type of error. This greatly
improves flexibility at each error construction site, while reducing the
complexity of the diagnostic creation.

This commit also rewords the diagnostics for clarity and style:

- Diagnostics should not end in periods.
- It's unnecessary to say "ignoring it". Since this is a warning by
  default, it's already clear that the link is ignored.

3 years agoRollup merge of #74454 - lcnr:negative-impls, r=nikomatsakis
Manish Goregaokar [Wed, 22 Jul 2020 16:29:07 +0000 (09:29 -0700)]
Rollup merge of #74454 - lcnr:negative-impls, r=nikomatsakis

small coherence cleanup

r? @eddyb

3 years agoRollup merge of #74237 - lzutao:compiletest, r=Mark-Simulacrum
Manish Goregaokar [Wed, 22 Jul 2020 16:29:05 +0000 (09:29 -0700)]
Rollup merge of #74237 - lzutao:compiletest, r=Mark-Simulacrum

compiletest: Rewrite extract_*_version functions

This makes extract_lldb_version has the same version type like
extract_gdb_version.

3 years agoRollup merge of #73893 - ajpaverd:cfguard-stabilize, r=nikomatsakis
Manish Goregaokar [Wed, 22 Jul 2020 16:29:03 +0000 (09:29 -0700)]
Rollup merge of #73893 - ajpaverd:cfguard-stabilize, r=nikomatsakis

Stabilize control-flow-guard codegen option

This is the stabilization PR discussed in #68793. It converts the `-Z control-flow-guard` debugging option into a codegen option (`-C control-flow-guard`), and changes the associated tests.

3 years agoRollup merge of #73655 - JamieCunliffe:jamie_va-args-c, r=nikic
Manish Goregaokar [Wed, 22 Jul 2020 16:29:00 +0000 (09:29 -0700)]
Rollup merge of #73655 - JamieCunliffe:jamie_va-args-c, r=nikic

va_args implementation for AAPCS.

Implement the va args in codegen for AAPCS, this will be used as the
default va_args implementation for AArch64 rather than the va_args
llvm-ir as it currently is.

This should fix the following issues:
https://github.com/rust-lang/rust/issues/56475
https://github.com/rust-lang/rust/issues/72579

3 years agobuild: Remove unnecessary `build = "build.rs"` annotations
Vadim Petrochenkov [Wed, 22 Jul 2020 16:13:02 +0000 (19:13 +0300)]
build: Remove unnecessary `build = "build.rs"` annotations

3 years agobuild: Remove unnecessary `cargo:rerun-if-env-changed` annotations
Vadim Petrochenkov [Wed, 22 Jul 2020 15:44:15 +0000 (18:44 +0300)]
build: Remove unnecessary `cargo:rerun-if-env-changed` annotations

3 years agoFix tooltip position if the documentation starts with a code block
Guillaume Gomez [Wed, 22 Jul 2020 14:28:47 +0000 (16:28 +0200)]
Fix tooltip position if the documentation starts with a code block

3 years agono need to polymorphize
Bastian Kauschke [Wed, 22 Jul 2020 11:01:55 +0000 (13:01 +0200)]
no need to polymorphize

3 years agopolymorphize GlobalAlloc::Function
Bastian Kauschke [Wed, 22 Jul 2020 10:50:26 +0000 (12:50 +0200)]
polymorphize GlobalAlloc::Function

3 years agotests: add regression test for #74614
David Wood [Wed, 22 Jul 2020 14:35:52 +0000 (15:35 +0100)]
tests: add regression test for #74614

This commit adds a regression test for #74614 so that it is fixed before
polymorphisation is re-enabled.

Signed-off-by: David Wood <david@davidtw.co>
3 years agosess: disable polymorphisation
David Wood [Wed, 22 Jul 2020 14:03:56 +0000 (15:03 +0100)]
sess: disable polymorphisation

This commit disables polymorphisation to resolve regressions related to
closures which inherit unused generic parameters and are then used in
casts or reflection.

Signed-off-by: David Wood <david@davidtw.co>
3 years agomir: improve polymorphic constant bug
David Wood [Wed, 22 Jul 2020 09:31:12 +0000 (10:31 +0100)]
mir: improve polymorphic constant bug

This commit changes the span and content of the "collection encountered
polymorphic constant" bug in monomorphization collection to point to the
use of the constant rather than the definition.

Signed-off-by: David Wood <david@davidtw.co>
3 years agorustc_target: Add a target spec option for disabling `--eh-frame-hdr`
Vadim Petrochenkov [Wed, 22 Jul 2020 12:49:04 +0000 (15:49 +0300)]
rustc_target: Add a target spec option for disabling `--eh-frame-hdr`

3 years agoAuto merge of #74620 - rust-lang:remove-most-azure, r=Mark-Simulacrum
bors [Wed, 22 Jul 2020 13:40:55 +0000 (13:40 +0000)]
Auto merge of #74620 - rust-lang:remove-most-azure, r=Mark-Simulacrum

Disable Azure Pipelines except for macOS

Following up on https://github.com/rust-lang/rust/pull/74565, this PR disables most of Azure Pipelines except for macOS auto builds, practically switching us to GitHub Actions :tada:

r? @Mark-Simulacrum