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 7 pull requests #73053

Closed
wants to merge 19 commits into from
Closed

Conversation

RalfJung
Copy link
Member

@RalfJung RalfJung commented Jun 6, 2020

Successful merges:

Failed merges:

r? @ghost

RalfJung and others added 19 commits May 2, 2020 12:13
LLVM 10 includes a009a60 which will
print value numbers for unnamed func args.

Update these tests to be in line with the referenced clang tests.
It isn't clear to me if this is a bug or not, hence the FIXME
de-promote Duration::from_secs

In rust-lang#67531, we removed the `rustc_promotable` attribute from a bunch of `Duration` methods, but not from `Duration::from_secs`. This makes the current list of promotable functions the following (courtesy of @ecstatic-morse):

* `INT::min_value`, `INT::max_value`
* `std::mem::size_of`, `std::mem::align_of`
* `RangeInclusive::new` (backing `x..=y`)
* `std::ptr::null`, `std::ptr::null_mut`
* `RawWaker::new`, `RawWakerVTable::new` ???
* `Duration::from_secs`

I feel like the last one stands out a bit here -- the rest are all very core language primitives, and `RawWaker` has a strong motivation for getting a `'static` vtable. But a `&'static Duration`? That seems unlikely. So I propose we no longer promote calls to `Duration::from_secs`, which is what this PR does.

rust-lang#67531 saw zero regressions and I am not aware of anyone complaining that this broke their (non-cratered) code, so I consider it likely the same will be true here, but of course we'd do a crater run.

See [this document](https://github.com/rust-lang/const-eval/blob/master/promotion.md) for some more background on promotion and rust-lang/const-eval#19 for some of the concerns around promoting function calls.
linker: Add a linker rerun hack for gcc versions not supporting -static-pie

Which mirrors the existing `-no-pie` linker rerun hack, but the logic is a bit more elaborated in this case.

If the linker (gcc or clang) errors on `-static-pie` we rerun in with `-static` instead.
We must also replace CRT objects corresponding to `-static-pie` with ones corresponding to `-static` in this case.

(One sanity check for CRT objects in target specs is also added as a drive-by fix.)

To do in the future: refactor all linker rerun hacks into separate functions and share more code with `add_(pre,post)_link_objects`.

This PR accompanies rust-lang#71804 and unblocks rust-lang#70740.
…stebank

Be more careful around ty::Error in generators

cc rust-lang#72685

(doesn't close it because it's missing a reproduction to use as a test case)

r? @estebank
…70924, r=nikomatsakis

run-make regression test for issue rust-lang#70924.

Sometime after my PR rust-lang#72767 (to fix issue rust-lang#70924) landed, I realized that I *could* make a local regression test, thanks to `rustc --print sysroot`: I can make a fresh "copy" (really mostly symlinks) of the sysroot, and then modify it to recreate the terms of this bug.
…atsakis

Fix codegen tests for RISC-V

Some codegen tests didn't seem relevant (e.g. unsupported annotations).

The RISC-V abi tests were broken by LLVM 10, c872dcf fixes that (cc: @msizanoen1)

I'm not sure about skipping catch-unwind.rs and included that change here mostly as a request for comment - I can't tell if that's a bug.
…u16, r=sfackler

impl ToSocketAddrs for (String, u16)

This adds a convenience impl of `ToSocketAddrs for (String, u16)`. When authoring HTTP services it's common to take command line options for `host` and `port` and parse them into `String` and `u16` respectively. Consider the following program:
```rust
#[derive(Debug, StructOpt)]
struct Config {
    host: String,
    port: u16,
}

async fn main() -> io::Result<()> {
    let config = Config::from_args();
    let stream = TcpStream::connect((&*config.host, config.port))?; // &* is not ideal
    // ...
}
```

Networking is a pretty common starting point for people new to Rust, and seeing `&*` in basic examples can be confusing. Even as someone that has experience with networking in Rust I tend to forget that `String` can't be passed directly there. Instead with this patch we can omit the `&*` conversion and pass `host` directly:
```rust
#[derive(Debug, StructOpt)]
struct Config {
    host: String,
    port: u16,
}

async fn main() -> io::Result<()> {
    let config = Config::from_args();
    let stream = TcpStream::connect((config.host, config.port))?; // no more conversions!
    // ...
}
```

I think should be an easy and small ergonomics improvement for networking. Thanks!
@RalfJung
Copy link
Member Author

RalfJung commented Jun 6, 2020

@rustbot modify labels: +rollup
@bors r+ rollup=never p=7

@bors
Copy link
Contributor

bors commented Jun 6, 2020

📌 Commit 473e1a9 has been approved by RalfJung

@rustbot rustbot added the rollup A PR which is a rollup label Jun 6, 2020
@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 Jun 6, 2020
@bors
Copy link
Contributor

bors commented Jun 6, 2020

⌛ Testing commit 473e1a9 with merge fa28107cadfe8810520af6771a124fed49f5ef0a...

@bors
Copy link
Contributor

bors commented Jun 6, 2020

💔 Test failed - checks-azure

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 6, 2020
@RalfJung
Copy link
Member Author

RalfJung commented Jun 6, 2020

Same failure as #73043 (comment)...

@RalfJung
Copy link
Member Author

RalfJung commented Jun 6, 2020

... which just makes no sense at all, the overlap is: #72952, #72977, #73007.

@RalfJung
Copy link
Member Author

RalfJung commented Jun 6, 2020

It's probably #73046, which I didn't see was also in the overlap.

@RalfJung RalfJung closed this Jun 6, 2020
@RalfJung RalfJung deleted the rollup-ngm720f branch June 6, 2020 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup S-waiting-on-review Status: Awaiting review from the assignee but also interested parties.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants