Commit graph

230383 commits

Author SHA1 Message Date
Moulins 8b847ef734 add crate-local -Z reference_niches unstable flag (does nothing for now) 2023-07-21 03:31:45 +02:00
Moulins 30ae640a3c properly handle arrays and wide pointers in naive_layout_of 2023-07-21 03:31:45 +02:00
Moulins cb8b1d1bc9 add naive_layout_of query 2023-07-21 03:31:45 +02:00
Santiago Pastorino cbabd00c12
Add tables to Stable::stable 2023-07-20 22:20:53 -03:00
Josh Triplett 77d09cb69e Clarify wording on breaking arrays across lines
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2023-07-20 17:57:21 -07:00
Josh Triplett 144e8a3866 style-guide: Fix example to match the rule it exemplifies (and match rustfmt)
An example immediately following "Put each bound on its own line." did
not put each bound on its own line.
2023-07-20 17:57:21 -07:00
Josh Triplett 69d29a70da style-guide: Fix typo: s/right-hand side/left-hand side/ 2023-07-20 17:57:21 -07:00
Josh Triplett 9ccc104d14 style-guide: Add an additional chaining example
Make it clear the rule for stacking the second line on the first applies
recursively, as long as the condition holds.
2023-07-20 17:57:21 -07:00
Josh Triplett ce5aca9f5a style-guide: Avoid using "should" or "may" for required parts of the default style
The style guide inconsistently used language like "there should be a
space" or "it should be on its own line", or "may be written on a single
line", for things that are required components of the default Rust
style. "should" and especially "may" come across as optional. While the
style guide overall now has a statement at the top that the default
style itself is a *recommendation*, the *definition* of the default
style should not be ambiguous about what's part of the default style.

Rewrite language in the style guide to only use "should" and "may" and
similar for truly optional components of the style (e.g. things a tool
cannot or should not enforce in its default configuration).

In their place, either use "must", or rewrite in imperative style ("put
a space", "start it on the same line"). The latter also substantially
reduces the use of passive voice.

This is a purely editorial change, and does not affect the semantic
definition of the Rust style.
2023-07-20 17:57:18 -07:00
Josh Triplett 081e15a0d8 style-guide: Simplify the structure of a recommendation (no semantic change)
Avoid putting a sentence fragment after a list; integrate it with the
sentence before the list.
2023-07-20 17:54:51 -07:00
Josh Triplett 615b58b9f9 style-guide: Fix an example to match the style
The style guide requires a trailing comma on where clause components,
but then gives an example that doesn't include one. Add the missing
trailing comma.
2023-07-20 17:54:51 -07:00
Josh Triplett cf4b20d7cc style-guide: Fix typo: s/forth/fourth/g 2023-07-20 17:54:51 -07:00
Josh Triplett 715efa418e style-guide: Remove material about tool configurability
The style guide discusses the default Rust style. Configurability of
Rust formatting tools are not the domain of the style guide.
2023-07-20 17:54:50 -07:00
bors c720a9cd12 Auto merge of #113344 - scottmcm:alt-slice-zst-handing, r=the8472
Get `!nonnull` metadata on slice iterators, without `assume`s

This updates the non-ZST paths to read the end pointer through a pointer-to-`NonNull`, so that they all get `!nonnull` metadata.

That means that the last `assume(!ptr.is_null())` can be deleted, without impacting codegen -- the codegen tests confirm the LLVM-IR ends up exactly the same as before.
2023-07-21 00:11:41 +00:00
Chris Denton 40e116489f
Minor improvements to Windows TLS dtors 2023-07-20 23:27:24 +01:00
bors e2a7ba2771 Auto merge of #113858 - cjgillot:const-prop-pairs, r=oli-obk
Always const-prop scalars and scalar pairs

This removes some complexity from the pass.

The limitation to propagate ScalarPairs only for tuple comes from https://github.com/rust-lang/rust/pull/67015, when ScalarPair constant were modeled using `Rvalue::Aggregate`. Nowadays, we use `ConstValue::ByRef`, which does not care about the underlying type.

The justification for not propagating in all cases was perf. This seems not to be a clear cut any more: https://github.com/rust-lang/rust/pull/113858#issuecomment-1642396746
2023-07-20 22:22:31 +00:00
Camille GILLOT 4a177406ee Inline should_const_prop. 2023-07-20 21:30:51 +00:00
Camille GILLOT 3f708add2f Remove visit_terminator. 2023-07-20 21:30:51 +00:00
Camille GILLOT ccfa9af29d Propagate ScalarPair for any type. 2023-07-20 21:30:51 +00:00
Camille GILLOT 895e2159f8 Also propagate ScalarPair operands. 2023-07-20 21:30:51 +00:00
Camille GILLOT 12a2edd149 Always propagate into operands. 2023-07-20 21:30:51 +00:00
bors 399b068235 Auto merge of #113856 - WaffleLapkin:vtablin', r=oli-obk
Refactor vtable encoding and optimize it for the case of multiple marker traits

This PR does two things
- Refactor `prepare_vtable_segments` (this was motivated by the other change, `prepare_vtable_segments` was quite hard to understand and while trying to edit it I've refactored it)
  - Mostly remove `loop`s labeled `break`s/`continue`s whenever there is a simpler solution
  - Also use `?`
- Make vtable format a bit more efficient wrt to marker traits
  - See the tests for an example

Fixes https://github.com/rust-lang/rust/issues/113840
cc `@crlf0710`

----

Review wise it's probably best to review each commit individually, as then it's more clear why the refactoring is correct.

I can split the last two commits (which change behavior) into a separate PR if it makes reviewing easier
2023-07-20 20:34:06 +00:00
Andrew Tribick e6fa5c18b5 Fix size_hint for EncodeUtf16 2023-07-20 21:52:33 +02:00
bors 1554942cdc Auto merge of #113546 - cjgillot:unused-query, r=compiler-errors
Querify unused trait check.

This code transitively loads information for all bodies, and from resolutions. As it does not return a value, it should be beneficial to have it as a query.
2023-07-20 18:45:09 +00:00
Scott McMurray 34732e8560 Get !nonnull metadata consistently in slice iterators, without needing assumes 2023-07-20 11:33:49 -07:00
David Tolnay 11ae0afc93
Create separate match arms for FileNames and CrateNames
This introduces a bit of code duplication, but we don't have the
build_output_filenames in the CrateName arm and this seems a little
cleaner overall.
2023-07-20 11:04:32 -07:00
David Tolnay 26fd6b15b0
Add note about writing native-static-libs to file 2023-07-20 11:04:32 -07:00
David Tolnay 5ca0946ac0
Document --print KIND=PATH in Command-line Arguments documentation 2023-07-20 11:04:32 -07:00
David Tolnay 7ee059b8ac
Add ui test of LLVM print-from-C++ changes 2023-07-20 11:04:31 -07:00
David Tolnay dcfe94a009
Implement printing to file for link-args and native-static-libs 2023-07-20 11:04:31 -07:00
David Tolnay 815a114974
Implement printing to file in PassWrapper 2023-07-20 11:04:31 -07:00
David Tolnay 6e734fce63
Implement printing to file in llvm_util 2023-07-20 11:04:31 -07:00
David Tolnay c80cbe4bae
Implement printing to file in codegen_backend.print 2023-07-20 11:04:31 -07:00
David Tolnay 5a60660ff8
Implement printing to file in print_crate_info 2023-07-20 11:04:31 -07:00
David Tolnay f2e3d3fc63
Move OutFileName writing into rustc_session 2023-07-20 11:04:31 -07:00
David Tolnay 32cac2e002
Disallow overlapping prints to the same location 2023-07-20 11:04:30 -07:00
David Tolnay f72bdb1501
Parse --print KIND=PATH command line syntax 2023-07-20 11:04:30 -07:00
David Tolnay c0dc0c6875
Store individual output file name with every PrintRequest 2023-07-20 11:04:30 -07:00
David Tolnay 11dcd1d3d7
Add test of --print KIND=PATH 2023-07-20 11:04:30 -07:00
bors 092e4f46be Auto merge of #113890 - matthiaskrgr:rollup-k1w2vii, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #110765 (rustdoc: fix position of `default` in method rendering)
 - #113529 (Permit pre-evaluated constants in simd_shuffle)
 - #113800 (Avoid another gha group nesting)
 - #113827 (Add Foreign, Never, FnDef, Closure and Generator tys to SMIR)
 - #113835 (new solver: don't consider blanket impls multiple times)
 - #113883 (Remove outdated Firefox-specific CSS for search's crate selector appearance)
 - #113884 (Don't translate compiler-internal bug messages)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-07-20 16:57:05 +00:00
Ralf Jung 41a73d8251 clarify MIR uninit vs LLVM undef/poison 2023-07-20 18:43:54 +02:00
Matthias Krüger 464e02a267
Rollup merge of #113884 - oli-obk:delay_span_bug_detrans_late, r=davidtwco
Don't translate compiler-internal bug messages

These are not very useful to be translated, as

* translators would get really weird and bad english versions to start out from,
* compiler devs have to do some work for what is supposed to be dead code and just a sanity check,
* the target audience is other compiler devs.

r? `@davidtwco`
2023-07-20 17:19:34 +02:00
Matthias Krüger 8ac957aa03
Rollup merge of #113883 - steffahn:rustdoc-search-crate-selector-padding, r=GuillaumeGomez
Remove outdated Firefox-specific CSS for search's crate selector appearance

Remove adjustments that used to be necessary for search's crate selector appearance (padding) to look identical on Firefox. New versions of Firefox appear to have changed behavior to agree with Chrome.

As briefly discussed in https://github.com/rust-lang/rust/pull/98855#issuecomment-1624098112

r? ``@GuillaumeGomez``
2023-07-20 17:19:34 +02:00
Matthias Krüger add8298aff
Rollup merge of #113835 - lcnr:assemble-candidates-considering-self-ty, r=compiler-errors
new solver: don't consider blanket impls multiple times

only consider candidates which rely on the self type in `assemble_candidates_after_normalizing_self_ty`.

r? ``@compiler-errors``
2023-07-20 17:19:33 +02:00
Matthias Krüger 1a748f0460
Rollup merge of #113827 - spastorino:smir-types-4, r=oli-obk
Add Foreign, Never, FnDef, Closure and Generator tys to SMIR

r? ``@oli-obk``
2023-07-20 17:19:33 +02:00
Matthias Krüger 6102785a29
Rollup merge of #113800 - oli-obk:gha_ci_cycle, r=jyn514
Avoid another gha group nesting

fixes https://github.com/rust-lang/rust/issues/113798 (`x test error_index_generator` did not work locally anymore)

r? ``@jyn514``
2023-07-20 17:19:32 +02:00
Matthias Krüger 8c17e0701e
Rollup merge of #113529 - oli-obk:simd_shuffle_evaluated, r=wesleywiser
Permit pre-evaluated constants in simd_shuffle

fixes https://github.com/rust-lang/rust/issues/113500
2023-07-20 17:19:32 +02:00
Matthias Krüger 80f749dfa0
Rollup merge of #110765 - wackbyte:fix-defaultness-position, r=fmease,GuillaumeGomez
rustdoc: fix position of `default` in method rendering

With the following code:
```rs
#![feature(specialization)]

pub trait A {
    unsafe fn a();
}

impl A for () {
    default unsafe fn a() {}
}
```
rustdoc would render the `impl` of `a` as
```rs
unsafe default fn a()
```
which is inconsistent with the actual position of `default`.
This PR fixes this issue.
2023-07-20 17:19:32 +02:00
bors 06a53ddc0b Auto merge of #113758 - cjgillot:move-dse, r=JakobDegen,oli-obk
Turn copy into moves during DSE.

Dead store elimination computes whether removing a direct store to an unborrowed place is allowed.
Where removing a store is allowed, writing `uninit` is too.

This means that we can use this pass to transform `copy` operands into `move` operands. This is only interesting in call terminators, so we only handle those.

Special care is taken for the `use_both(_1, _1)` case:
- moving the second argument is ok, as `_1` is not live after the call;
- moving the first argument is not, as the second argument reads `_1`.

Fixes #75993
Fixes https://github.com/rust-lang/rust/issues/108068

r? `@RalfJung`
cc `@JakobDegen`
2023-07-20 15:05:39 +00:00
bors 994f4f6e2e Auto merge of #15290 - igorskyflyer:igorskyflyer-dx-install-extension, r=lnicola
editor/code: [DX] Use notification command links for debugger installation

This PR improves DX (developer experience) when installing the VS Code extension for the first time. When doing so and trying to debug a Rust file, we get an error notification that either CodeLLDB or C++ extension/debugger should be installed (see image below).

<div align="center">
	<img src="https://github.com/rust-lang/rust-analyzer/assets/20957750/e8ebeb1e-85f4-44e2-b79f-c48cf52e5f36" alt="Rust, prompt to install debug extension">
</div>

The PR enhances the links in the given notification and upon clicking instead of opening the Web page of the extension it installs the extension immediately, without the need to leave the editor.

Note: the feature needs to be refined, maybe an "install in progress" message or something similar, I left that for you guys to decide and implement. I think it also possible to first open the sidebar, open the Extensions tab, then run the extension installation command which would make it more user-friendly.

P.S. it is also possible to open the extension's details in VS Code directly via the same links and then the user would have to manually click on the Install button - if installation is not the desired behavior.

Happy coding! 🎉
2023-07-20 14:20:34 +00:00