Commit Graph

170175 Commits

Author SHA1 Message Date
Nicholas Nethercote
28be201d2f Use super_visit_with in a couple of visit_binder methods.
Because it's equivalent but simpler to what's currently there.
2022-06-08 09:22:23 +10:00
Nicholas Nethercote
465d198c74 Rename TypeVisitor::visit_unevaluated_const.
To match the corresponding type name.
2022-06-08 09:22:23 +10:00
Nicholas Nethercote
dc08bc51f2 Move finish out of the Encoder trait.
This simplifies things, but requires making `CacheEncoder` non-generic.
2022-06-08 09:21:05 +10:00
Matthias Krüger
c2d84852e5
Rollup merge of #97845 - estebank:spancito, r=compiler-errors
Use more targeted suggestion when confusing i8 with std::i8

r? `@compiler-errors`
2022-06-07 23:55:29 +02:00
Matthias Krüger
5870156d85
Rollup merge of #97840 - durin42:llvm-15-apint, r=nikic
RustWrapper: adapt to APInt API changes in LLVM 15

In https://reviews.llvm.org/D125556 upstream changed sext() and zext()
to allow some no-op cases, which previously required use of the *OrSelf()
methods, which I assume is what was going on here. The *OrSelf() methods
got removed in https://reviews.llvm.org/D125559 after two weeks of
deprecation because they came with some bonus (probably-undesired)
behavior. Since the behavior of sext() and zext() changed slightly, I
kept the old *OrSelf() calls in LLVM 14 and earlier, and only use the
new version in LLVM 15.

r? `@nikic`
2022-06-07 23:55:28 +02:00
Matthias Krüger
796c466cea
Rollup merge of #97832 - tmiasko:const-direction, r=cjgillot
Change `Direction::{is_forward,is_backward}` functions into constants

Make it explicit that the analysis direction is constant.

This also makes the value immediately available for optimizations.
Previously those functions were neither inline nor generic and so their
definition was unavailable when using data flow framework from other
crates.
2022-06-07 23:55:27 +02:00
Matthias Krüger
c9cf8aeab8
Rollup merge of #97831 - tmiasko:rm-always-live-locals-struct, r=davidtwco
Remove `AlwaysLiveLocals` wrapper struct

It is just a wrapper around a `BitSet` and
doesn't have any functionality of its own.
2022-06-07 23:55:26 +02:00
Matthias Krüger
36e9cbc0be
Rollup merge of #97829 - JohnTitor:issue-95307, r=compiler-errors
Add regresion test for #95307

Closes #95307
r? `@compiler-errors`
2022-06-07 23:55:25 +02:00
bors
b17e9d76f2 Auto merge of #97081 - oli-obk:outlives_query_fast_path, r=jackh726
Re-use the type op instead of calling the implied_outlives_bounds query directly

r? `@ghost`
2022-06-07 21:44:40 +00:00
Santiago Pastorino
4ae69f8617
Extract lower_generic_and_bounds function 2022-06-07 18:29:07 -03:00
Santiago Pastorino
b239611451
Pass origin down to impl_trait_ty_to_ty 2022-06-07 18:29:07 -03:00
Santiago Pastorino
1e6ed67d37
Extract lower_generic_param_kind 2022-06-07 18:29:07 -03:00
Santiago Pastorino
a22aad32eb
Instrument important fns in AST lowering 2022-06-07 18:29:06 -03:00
Esteban Küber
725952a738 Make test run-rustfix 2022-06-07 14:03:14 -07:00
Nicholas Nethercote
1acbe7573d Use delayed error handling for Encodable and Encoder infallible.
There are two impls of the `Encoder` trait: `opaque::Encoder` and
`opaque::FileEncoder`. The former encodes into memory and is infallible, the
latter writes to file and is fallible.

Currently, standard `Result`/`?`/`unwrap` error handling is used, but this is a
bit verbose and has non-trivial cost, which is annoying given how rare failures
are (especially in the infallible `opaque::Encoder` case).

This commit changes how `Encoder` fallibility is handled. All the `emit_*`
methods are now infallible. `opaque::Encoder` requires no great changes for
this. `opaque::FileEncoder` now implements a delayed error handling strategy.
If a failure occurs, it records this via the `res` field, and all subsequent
encoding operations are skipped if `res` indicates an error has occurred. Once
encoding is complete, the new `finish` method is called, which returns a
`Result`. In other words, there is now a single `Result`-producing method
instead of many of them.

This has very little effect on how any file errors are reported if
`opaque::FileEncoder` has any failures.

Much of this commit is boring mechanical changes, removing `Result` return
values and `?` or `unwrap` from expressions. The more interesting parts are as
follows.
- serialize.rs: The `Encoder` trait gains an `Ok` associated type. The
  `into_inner` method is changed into `finish`, which returns
  `Result<Vec<u8>, !>`.
- opaque.rs: The `FileEncoder` adopts the delayed error handling
  strategy. Its `Ok` type is a `usize`, returning the number of bytes
  written, replacing previous uses of `FileEncoder::position`.
- Various methods that take an encoder now consume it, rather than being
  passed a mutable reference, e.g. `serialize_query_result_cache`.
2022-06-08 07:01:26 +10:00
Nicholas Nethercote
582b9cbc45 Don't pass in a vector to Encoder::new.
It's not necessary.
2022-06-08 07:01:26 +10:00
Nicholas Nethercote
92b1ab8d57 Remove an unnecessary encoder operation. 2022-06-08 07:01:26 +10:00
Esteban Küber
8542dd02a8 Use more targeted suggestion when confusing i8 with std::i8 2022-06-07 13:39:21 -07:00
Patrick Walton
fe533e862c Specify DWARF alignment in bits, not bytes.
In DWARF, alignment of types is specified in bits, as is made clear by the
parameter name `AlignInBits`. However, `rustc` was incorrectly passing a byte
alignment. This commit fixes that.

This was noticed in upstream LLVM when I tried to check in a test consisting of
LLVM IR generated from `rustc` and it triggered assertions [1].

[1]: https://reviews.llvm.org/D126835
2022-06-07 13:38:35 -07:00
Marko Mijalkovic
611107af5f Formatting fix 2022-06-07 16:02:11 -04:00
bors
5435ed6916 Auto merge of #97835 - Dylan-DPC:rollup-0ae3pwp, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #95948 (Improve the safety docs for `CStr`)
 - #97325 (Fix precise field capture of univariant enums)
 - #97817 (⬆️ rust-analyzer)
 - #97821 (Remove confusing sentence from `Mutex` docs)
 - #97826 (Add more information for rustdoc-gui tests)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-06-07 19:00:02 +00:00
Augie Fackler
1c26dd0db4 RustWrapper: adapt to APInt API changes in LLVM 15
In https://reviews.llvm.org/D125556 upstream changed sext() and zext()
to allow some no-op cases, which previously required use of the *OrSelf()
methods, which I assume is what was going on here. The *OrSelf() methods
got removed in https://reviews.llvm.org/D125559 after two weeks of
deprecation because they came with some bonus (probably-undesired)
behavior. Since the behavior of sext() and zext() changed slightly, I
kept the old *OrSelf() calls in LLVM 14 and earlier, and only use the
new version in LLVM 15.

r? @nikic
2022-06-07 14:47:57 -04:00
Augie Fackler
d92e213e3d hexagon: adapt test for upstream output changes
The output of IR formatting changed slightly in upstream rev
a0bc67e555f404d0e7ddb2e78cb891d96eaf913d
(https://reviews.llvm.org/D123096). I'm not actually sure what any of
that means, as I don't even know what hexagon is in this context, but
this change allows the test to pass on both old and new LLVMs.

r? @nikic
2022-06-07 13:21:34 -04:00
Tomasz Miąsko
6277c3a944 Preserve unused pointer to address casts 2022-06-07 17:33:16 +02:00
Dylan DPC
4851ec729a
Rollup merge of #97826 - GuillaumeGomez:rustdoc-gui-tests-info, r=Dylan-DPC
Add more information for rustdoc-gui tests

It was missing `--no-sandbox` in the `--help` message and the README was a bit outdated.

cc `@jsha` (I recall you asking some questions about passing arguments to the rustdoc gui tester so here it).

r? `@notriddle`
2022-06-07 17:25:45 +02:00
Dylan DPC
f12605b9ef
Rollup merge of #97821 - Nilstrieb:mutex-docs, r=Dylan-DPC
Remove confusing sentence from `Mutex` docs

The docs were saying something about "statically initializing" the
mutex, and it's not clear what this means. Remove that part to avoid
confusion.
2022-06-07 17:25:44 +02:00
Dylan DPC
32d945d9bd
Rollup merge of #97817 - lnicola:rust-analyzer-2022-06-07, r=lnicola
⬆️ rust-analyzer

r? ``@ghost``
2022-06-07 17:25:43 +02:00
Dylan DPC
fd76e0eee0
Rollup merge of #97325 - tmiasko:capture-enum-field, r=arora-aman
Fix precise field capture of univariant enums

When constructing a MIR from a THIR field expression, introduce an
additional downcast projection before accessing a field of an enum.

When rebasing a place builder on top of a captured place, account for
the fact that a single HIR enum field projection corresponds to two MIR
projection elements: a downcast element and a field element.

Fixes #95271.
Fixes #96299.
Fixes #96512.
Fixes #97378.

r? ``@nikomatsakis`` ``@arora-aman``
2022-06-07 17:25:43 +02:00
Dylan DPC
a9c4a7e1aa
Rollup merge of #95948 - Nilstrieb:improve-cstr-safety-docs, r=RalfJung
Improve the safety docs for `CStr`

Namely, the two functions `from_ptr` and `from_bytes_with_nul_unchecked`.
Before, these functions didn't state the requirements clearly enough,
and I was not immediately able to find them like for other functions.

This doesn't change the content of the docs, but simply rewords them for
clarity.

note: I'm not entirely sure about the '`ptr` must be valid for reads of `u8`.', there might be room for improvement for this (and maybe for the other docs as well 😄)
2022-06-07 17:25:42 +02:00
Joshua Nelson
6115f4eba4 Add a DownloadSource enum
This simplifies the arguments to `download_component` in config.rs.

It also moves stage0.json metadata handling to `Build::new`, making it easier to download the stage0
compiler in rustbuild later if necessary.
2022-06-07 10:18:23 -05:00
Joshua Nelson
a9ca4b9529 Add checksum verification for rustfmt downloads 2022-06-07 10:18:23 -05:00
Joshua Nelson
81f511cc2b Move beta rustfmt downloads to rustbuild 2022-06-07 10:16:55 -05:00
Yuki Okushi
786c8b4419
Add regresion test for #95307 2022-06-08 00:13:12 +09:00
Tomasz Miąsko
39de03d844 Change Direction::{is_forward,is_backward} functions into constants
Make it explicit that the analysis direction is constant.

This also makes the value immediately available for optimizations.
Previously those functions were neither inline nor generic and so their
definition was unavailable when using data flow framework from other
crates.
2022-06-07 17:02:55 +02:00
Tomasz Miąsko
631d767fee Remove AlwaysLiveLocals wrapper struct
It is just a wrapper around a `BitSet` and
doesn't have any functionality of its own.
2022-06-07 16:54:00 +02:00
Nilstrieb
0dda42bc14 Improve the safety docs for CStr
Namely, the two functions `from_ptr` and `from_bytes_with_nul_unchecked`.
Before, this functions didn't state the requirements clearly enough,
and I was not immediately able to find them like for other functions.

This doesn't change the content of the docs, but simply rewords them for
clarity.
2022-06-07 16:42:26 +02:00
Joshua Nelson
bd6409ddef Simplify handling of initial_rustfmt 2022-06-07 09:24:14 -05:00
Joshua Nelson
27b95016d4 Rename download_component -> download_ci_component
It was confusing to have two functions with the same name but different behavior.
2022-06-07 09:24:14 -05:00
Marko Mijalkovic
94134695b5 Relax mipsel-sony-psp's linker script
Previously, the linker script forcefully kept all `.lib.stub` sections,
unnecessarily bloating the binary. Now, the script is LTO and
`--gc-sections` friendly.

`--nmagic` was also added to the linker, because page alignment is not
required on the PSP. This further reduces binary size.

Accompanying changes for the PSP crate are found in:
https://github.com/overdrivenpotato/rust-psp/pull/118
2022-06-07 10:24:09 -04:00
Dylan DPC
e224185409
Update library/std/src/sync/mutex.rs
Co-authored-by: Weiyi Wang <wwylele@gmail.com>
2022-06-07 15:15:19 +02:00
Lucas Dumont
5adef6c795 Add std::alloc::set_alloc_error_hook example 2022-06-07 15:06:18 +02:00
Antoni Boucher
80cbaa3b9f Remove unused macro rule 2022-06-07 08:50:13 -04:00
bors
7fe2c4b00d Auto merge of #97825 - Dylan-DPC:rollup-ya51k1k, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #97058 (Various refactors to the incr comp workproduct handling)
 - #97301 (Allow unstable items to be re-exported unstably without requiring the feature be enabled)
 - #97738 (Fix ICEs from zsts within unsized types with non-zero offsets)
 - #97771 (Remove SIGIO reference on Haiku)
 - #97808 (Add some unstable target features for the wasm target codegen)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-06-07 11:08:58 +00:00
Guillaume Gomez
5799e7de16 Update rustdoc-gui README 2022-06-07 11:49:35 +02:00
Guillaume Gomez
232c2d6c25 Update help message for rustdoc-gui runner 2022-06-07 11:49:22 +02:00
Dylan DPC
95266530d5
Rollup merge of #97808 - alexcrichton:wasm-features, r=petrochenkov
Add some unstable target features for the wasm target codegen

I was experimenting with cross-language LTO for the wasm target recently
between Rust and C and found that C was injecting the `+mutable-globals`
flag on all functions. When specifying the corresponding
`-Ctarget-feature=+mutable-globals` feature to Rust it prints a warning
about an unknown feature. I've added the `mutable-globals` feature plus
another few I know of to the list of known features for wasm targets.
These features all continue to be unstable to source code as they were
before.
2022-06-07 11:41:09 +02:00
Dylan DPC
f32a4f06ab
Rollup merge of #97771 - rtzoeller:haiku_no_sigio, r=kennytm
Remove SIGIO reference on Haiku

Haiku doesn't define SIGIO. The nix crate already employs this workaround:
5dedbc7850/src/sys/signal.rs (L92-L94)
2022-06-07 11:41:09 +02:00
Dylan DPC
62c260de8c
Rollup merge of #97738 - Kixiron:zst-panic, r=eddyb
Fix ICEs from zsts within unsized types with non-zero offsets

- Fixes #97732
- Fixes ICEs while compiling `alloc` with `-Z randomize-layout`

r? ``@eddyb``
2022-06-07 11:41:08 +02:00
Dylan DPC
2035b50d80
Rollup merge of #97301 - semicoleon:unstable-reexport, r=petrochenkov
Allow unstable items to be re-exported unstably without requiring the feature be enabled

Closes #94972

The diagnostic may need some work still, and I haven't added a test yet
2022-06-07 11:41:07 +02:00
Dylan DPC
ab1027ad0f
Rollup merge of #97058 - bjorn3:multi_artifact_work_products, r=nagisa
Various refactors to the incr comp workproduct handling

This is the result of me looking into adding support for having multiple object files for a single codegen unit to incr comp. This is necessary to support inline assembly in cg_clif without requiring partial linking which is not supported on Windows and seems to fail on macOS for some reason. Cg_clif uses an external assembler to handle inline asm and thus produces one object file with regular functions and one object file containing compiled inline asm for each codegen unit which uses inline asm. Current incr comp can't handle this. This PR doesn't yet add support for this, but it makes it easier to do so.
2022-06-07 11:41:06 +02:00