Enable textrel-on-minimal-lib for Windows
`bin_name` needs to be used when building a runnable executable.
Addresses item in rust-lang/rust#128602
---
try-job: x86_64-mingw-*
try-job: x86_64-msvc-*
try-job: i686-msvc-*
Enable fmt-write-bloat for Windows
Seems to be working fine for MSVC once it has the correct binary name.
Addresses item in rust-lang/rust#128602
---
try-job: x86_64-mingw-*
try-job: x86_64-msvc-*
try-job: i686-msvc-*
All HIR attributes are outer
Fixes https://github.com/rust-lang/rust/issues/142649. Closes https://github.com/rust-lang/rust/pull/142759.
All HIR attributes, including parsed and not yet parsed, will now be rendered as outer attributes by `rustc_hir_pretty`. The original style of the corresponding AST attribute(s) is not relevant for pretty printing, only for diagnostics.
r? ````@jdonszelmann````
rustdoc_json: conversion cleanups
A bunch of clean-to-types conversion cleanups I found while working on perf-related stuff in rustdoc_json.
r? ```@aDotInTheVoid```
improve search graph docs, reset `encountered_overflow` between reruns
I think this shouldn't really matter for now. It will be more relevant for my current rework as we otherwise cannot partially reevaluate the root goal in case there has been overflow during the prervious iteration.
r? ````@BoxyUwU````
Port `#[rustc_pub_transparent]` to the new attribute system
Very similar to rust-lang/rust#142498.
This is a part of rust-lang/rust#131229, so
r? ````@jdonszelmann````
---
For reference, the `#[rustc_pub_transparent]` attribute was created by me back in rust-lang/rust#129487.
As mentioned back in https://github.com/rust-lang/rust/pull/129487#discussion_r1730120385, this attribute does not check that it is applied to an ADT, because it checks that `#[repr(transparent)]` is also applied to the same item, which, in turn, should check for ADT.
Pass -Cpanic=abort for the panic_abort crate
The panic_abort crate must be compiled with panic=abort, but cargo doesn't allow setting the panic strategy for a single crate the usual way using `panic="abort"`, but luckily per-package rustflags do allow this. Bootstrap previously handled this in its rustc wrapper, but for example the build systems of cg_clif and cg_gcc don't use the rustc wrapper, so they would either need to add one, patch the standard library or be unable to build a sysroot suitable for both panic=abort and panic=unwind (as is currently the case).
Required for https://github.com/rust-lang/rustc_codegen_cranelift/issues/1567
forward the bootstrap `runner` to `run-make`
The runner was already forwarded to `compiletest`, this just passes it on to `run-make` and uses it in the `run` functions.
The configuration can look like this
```toml
# in bootstrap.toml
[target.s390x-unknown-linux-gnu]
runner = "qemu-s390x -L /usr/s390x-linux-gnu"
```
Any C compilation automatically sets the correct target. Calls to rustc must use `.target(target())`. Then, a command like below will work by cross-compiling to the given target, and using the given runner for that target to execute the binary:
```
./x test tests/run-make/c-link-to-rust-va-list-fn --target s390x-unknown-linux-gnu
```
The runner can also be used for e.g. running with `valgrind`.
This PR also enables its use in the test case that I care about, hopefully that actually does work on the platforms that CI uses. We should probably run some try jobs to be sure?
r? `@jieyouxu`
try-job: test-various
try-job: armhf-gnu
Avoid a few more allocations in `write_shared.rs`
Inspired by rust-lang/rust#141421 , avoids a few `Vec`, `PathBuf` and `String` allocations in `write_shared.rs`. I don't think these will show up on benchmarks, but are still worthwhile IMHO.
Also includes a few small cleanups.
r? nnethercote - if you'd like :)
Since 122662 this no longer gets used in vtables, so we're safe to fully
drop generating these empty functions. Those are eventually cleaned up
by LLVM, but it's wasteful to produce them in the first place.
This also adds a missing test for fn-ptr casts, which do still need to
generate no-op drop glue. It's possible a future optimization could
point all of those at the same drop glue (e.g., for *mut ()) rather than
for each separate type, but that would require extra work for CFI and
isn't particularly easy to do anyway.
- `convert_static` -> `from_clean_static`
- `from_function` -> `from_clean_function`
To match the pre-existing `from_clean_item` and `FromClean::from_clean`.
I left `JsonRenderer::convert_item` unchanged because it's a bit
different.
The `FromClean` trait is used a lot for converting to rustdoc-json
format. But it's not used universally; there are still some ad hoc
functions and methods for converting. This commit fixes this
inconsistency by using `FromClean` more.
The commit also introduces `FromClean` for `Box` and `Option`. This lets
a lot of `as_ref` and `map` calls be removed in favour of simple
`into_json` calls.
We currently have both `FromClean<clean::Constant> for Constant` and
`FromClean<clean::ConstantKind> for Constant` which are basically
identical, but the former is unused.
Only traverse reachable blocks in JumpThreading.
Fixes https://github.com/rust-lang/rust/issues/131451
We only compute loop headers for reachable blocks. We shouldn't try to perform an opt on unreachable blocks anyway.
In `wildcard_enum_match_arm`, expanding a variant with struct-like
fields was missing a space between the variant name and the opening
bracket.
Also, add a test for tuple-like variants with only one field, as those
are expanded as `VariantName(_)` instead of `VariantName(..)`.
changelog: none
In `wildcard_enum_match_arm`, expanding a variant with struct-like
fields was missing a space between the variant name and the opening
bracket.
Also, add a test for tuple-like variants with only one field, as those
are expanded as `VariantName(_)` instead of `VariantName(..)`.
Closesrust-lang/rust-clippy#15091
The lack of ability to escape raw identifiers is a known issue of
Clippy. In this case, it can be avoided by snippet from the code.
changelog: [`wildcard_enum_match_arm`] fix wrong suggestions with raw
identifiers
Fixesrust-lang/rust-clippy#14789
changelog: [`redundant_closure`],
[`redundant_closure_for_method_calls`]: allow lint to be allowed or
expected on the closure expression itself
Rollup of 3 pull requests
Successful merges:
- rust-lang/rust#142539 (Port `#[may_dangle]` to the new attribute system)
- rust-lang/rust#142690 (expand: Remove some unnecessary generic parameters)
- rust-lang/rust#142698 (Improve diagnostics for `concat_bytes!` with C string literals)
Failed merges:
- rust-lang/rust#142600 (Port `#[rustc_pub_transparent]` to the new attribute system)
- rust-lang/rust#142776 (All HIR attributes are outer)
r? `@ghost`
`@rustbot` modify labels: rollup
Improve diagnostics for `concat_bytes!` with C string literals
Use the same error as other invalid types for `concat_bytes!`, rather
than using `ConcatCStrLit` from `concat!`. Also add more information
with a note about why this doesn't work, and a suggestion to use a
null-terminated byte string instead.