about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2023-05-19Keep only the trait when emitting the error for `MyTrait + 'a`Mu001999-16/+25
2023-05-18Auto merge of #110605 - csmoe:open-cgo, r=Kobzolbors-33/+59
support PGO on custom project make PGO easier for custom toolchain distribution. r? `@Kobzol`
2023-05-18Auto merge of #111710 - Dylan-DPC:rollup-eutrx54, r=Dylan-DPCbors-187/+189
Rollup of 7 pull requests Successful merges: - #110884 (Support RISC-V unaligned-scalar-mem target feature) - #111160 (Update serde in workspace and non-synced dependencies) - #111168 (Specialize ToString implementation for fmt::Arguments) - #111527 (add examples of port 0 binding behavior) - #111561 (Include better context for "already exists" error in compiletest) - #111633 (Avoid `&format("...")` calls in error message code.) - #111679 (Remove libs message about ACPs from triagebot) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-05-18Rollup merge of #111679 - Amanieu:triagebot-remove-acp, r=m-ou-seDylan DPC-25/+0
Remove libs message about ACPs from triagebot The libs team is currently reworking the ACP process and we don't want to encourage people to submit new ACPs in the meantime.
2023-05-18Rollup merge of #111633 - nnethercote:avoid-ref-format, r=WaffleLapkinDylan DPC-147/+139
Avoid `&format("...")` calls in error message code. Some error message cleanups. Best reviewed one commit at a time. r? `@davidtwco`
2023-05-18Rollup merge of #111561 - dtolnay:compiletestdirexists, r=Mark-SimulacrumDylan DPC-1/+8
Include better context for "already exists" error in compiletest I encountered the following error from `x.py test tests/ui` today. ```console ---- [ui] tests/ui/impl-trait/multiple-lifetimes/multiple-lifetimes.rs stdout ---- thread '[ui] tests/ui/impl-trait/multiple-lifetimes/multiple-lifetimes.rs' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 17, kind: AlreadyExists, message: "File exists" }', src/tools/compiletest/src/runtest.rs:134:43 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ``` I found it impossible to unblock myself without knowing which directory it was stuck on. Error message after this PR: ```console ---- [ui] tests/ui/impl-trait/multiple-lifetimes/multiple-lifetimes.rs stdout ---- thread '[ui] tests/ui/impl-trait/multiple-lifetimes/multiple-lifetimes.rs' panicked at 'called `Result::unwrap()` on an `Err` value: failed to create output base directory /git/rust/build/x86_64-unknown-linux-gnu/test/ui/impl-trait/multiple-lifetimes/multiple-lifetimes Caused by: File exists (os error 17)', src/tools/compiletest/src/runtest.rs:139:10 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ``` Now I was able to run `rm build/x86_64-unknown-linux-gnu/test/ui/impl-trait/multiple-lifetimes/multiple-lifetimes` and unblock myself. Seems to be related to #109509 moving *tests/ui/impl-trait/multiple-lifetimes.rs* to *tests/ui/impl-trait/multiple-lifetimes/multiple-lifetimes.rs*.
2023-05-18Rollup merge of #111527 - knickish:bind_port_0_documentation, r=Mark-SimulacrumDylan DPC-0/+18
add examples of port 0 binding behavior Was trying to find the method to specify the IP address but not the port, and there wasn't information easily accessible about it in the `TcpListener` or `SocketAddr`. Adding examples to `TcpListener` and `UdpSocket` for clarity.
2023-05-18Rollup merge of #111168 - DaniPopes:arguments-to-string, r=Mark-SimulacrumDylan DPC-0/+9
Specialize ToString implementation for fmt::Arguments Generates far fewer instructions by formatting into a String with `fmt::format` directly instead of going through the `fmt::Display` impl. This change is insta-stable.
2023-05-18Rollup merge of #111160 - chbaker0:update-serde, r=Mark-SimulacrumDylan DPC-14/+14
Update serde in workspace and non-synced dependencies The main workspace, bootstrap, cargo, miri, and rust-analyzer all lock serde to different versions. It's preferable to share the same version where possible, so update it. Rustfmt is synced from another repository and has its own Cargo.lock, but since it's added to the overall workspace it should respect the version here. Cargo is already at the latest version. Miri and rust-analyzer would require upstream updates.
2023-05-18Rollup merge of #110884 - korran:unaligned-scalar-mem, r=wesleywiserDylan DPC-0/+1
Support RISC-V unaligned-scalar-mem target feature This adds `unaligned-scalar-mem` as an allowed RISC-V target feature. Some RISC-V cores support unaligned access to memory without trapping. On such cores, the compiler could significantly improve code-size and performance when using functions like core::ptr::read_unaligned<u32> by emitting a single load or store instruction with an unaligned address, rather than a long sequence of byte load/store/bitmanip instructions. Enabling the `unaligned-scalar-mem` target feature allows LLVM to do this optimization. Fixes #110883
2023-05-18Auto merge of #108938 - chenyukang:yukang/fix-107910-shorten-ice, r=cjgillotbors-40/+259
Shorten backtraces for queries in ICEs r? `@jyn514` Fixes #107910
2023-05-18Auto merge of #111364 - cuviper:unhack-thinlto, r=nikicbors-112/+0
Remove the ThinLTO CU hack This reverts #46722, commit e0ab5d5feb4eb2d8af11b8dd9446c2b45fada8af. Since #111167, commit 10b69dde3fd15334ea2382d2dc9e9a261de1afaf, we are generating DWARF subprograms in a way that is meant to be more compatible with LLVM's expectations, so hopefully we don't need this workaround rewriting CUs anymore.
2023-05-17Auto merge of #111672 - nikic:llvm-16.0.4, r=cuviperbors-0/+0
Update to LLVM 16.0.4 Fixes #109918.
2023-05-17Auto merge of #111568 - scottmcm:undo-opt, r=WaffleLapkinbors-152/+49
Stop turning transmutes into discriminant reads in mir-opt Partially reverts #109612, as after #109993 these aren't actually equivalent any more, and I'm no longer confident this was ever an improvement in the first place. Having this "simplification" meant that similar-looking code actually did somewhat different things. For example, ```rust pub unsafe fn demo1(x: std::cmp::Ordering) -> u8 { std::mem::transmute(x) } pub unsafe fn demo2(x: std::cmp::Ordering) -> i8 { std::mem::transmute(x) } ``` in nightly today is generating <https://rust.godbolt.org/z/dPK58zW18> ```llvm define noundef i8 `@_ZN7example5demo117h341ef313673d2ee6E(i8` noundef %x) unnamed_addr #0 { %0 = icmp uge i8 %x, -1 %1 = icmp ule i8 %x, 1 %2 = or i1 %0, %1 call void `@llvm.assume(i1` %2) ret i8 %x } define noundef i8 `@_ZN7example5demo217h5ad29f361a3f5700E(i8` noundef %0) unnamed_addr #0 { %x = alloca i8, align 1 store i8 %0, ptr %x, align 1 %1 = load i8, ptr %x, align 1, !range !2, !noundef !3 ret i8 %1 } ``` Which feels too different when the original code is essentially identical. --- Aside: that example is different *after* optimizations too: ```llvm define noundef i8 `@_ZN7example5demo117h341ef313673d2ee6E(i8` noundef returned %x) unnamed_addr #0 { %0 = add i8 %x, 1 %1 = icmp ult i8 %0, 3 tail call void `@llvm.assume(i1` %1) ret i8 %x } define noundef i8 `@_ZN7example5demo217h5ad29f361a3f5700E(i8` noundef returned %0) unnamed_addr #1 { ret i8 %0 } ``` so turning the `Transmute` into a `Discriminant` was arguably just making things worse, so leaving it alone instead -- and thus having less code in rustc -- seems clearly better.
2023-05-17Auto merge of #111680 - Dylan-DPC:rollup-1p45gxt, r=Dylan-DPCbors-137/+394
Rollup of 6 pull requests Successful merges: - #110930 (Don't expect normalization to succeed in elaborate_drops) - #111557 (Revert "Validate resolution for SelfCtor too.") - #111565 (rustdoc-json: Add tests for visibility of impls) - #111588 (Emits E0599 when meeting `MyTrait::missing_method`) - #111625 (Move rustc_middle/src/ty/query.rs to rustc_middle/src/query/plumbing.rs) - #111674 (Add missing backslash in HTML string) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-05-17Rollup merge of #111674 - GuillaumeGomez:add-missing-backslash, r=notriddleDylan DPC-1/+1
Add missing backslash in HTML string Found this missing one when looking at code. r? `@notriddle`
2023-05-17Rollup merge of #111625 - Zoxc:rustc_middle-query-move, r=cjgillotDylan DPC-33/+29
Move rustc_middle/src/ty/query.rs to rustc_middle/src/query/plumbing.rs This just keeps the query modules together. r? `@cjgillot`
2023-05-17Rollup merge of #111588 - MU001999:diag/improve-e0782, r=fee1-deadDylan DPC-47/+147
Emits E0599 when meeting `MyTrait::missing_method` Fixes #111312
2023-05-17Rollup merge of #111565 - aDotInTheVoid:rdj-impl-viz, r=GuillaumeGomezDylan DPC-0/+81
rustdoc-json: Add tests for visibility of impls [Apparrently rustdoc use to give these `crate` instead of `default`](https://github.com/obi1kenobi/trustfall-rustdoc-adapter/compare/rustdoc-v24...rustdoc-v25#diff-58e57a0fc73d1353fa3a057f0fe81c6ecfd4548b429cef1aee36b1c84d8d15a4L366). CC `@obi1kenobi` The output is arguably still buggy as to weather some of these impls should be stripped, but that's a seperate issue and shouldn't block adding these tests (#111564) r? `@GuillaumeGomez`
2023-05-17Rollup merge of #111557 - cjgillot:revert-111020, r=petrochenkovDylan DPC-55/+17
Revert "Validate resolution for SelfCtor too." This reverts commit 83453408a0ce91b9e3d3ae6e7f117b1fd28b487d. That PR introduced a breaking change. Fixes https://github.com/rust-lang/rust/issues/111541 Reopens https://github.com/rust-lang/rust/issues/89868 r? `@petrochenkov`
2023-05-17Rollup merge of #110930 - b-naber:normalize-elaborate-drops, r=cjgillotDylan DPC-1/+119
Don't expect normalization to succeed in elaborate_drops Fixes https://github.com/rust-lang/rust/issues/110682 This was exposed through the changes in https://github.com/rust-lang/rust/pull/109247, which causes more things to be inlined. Inlining can happen before monomorphization, so we can't expect normalization to succeed. In the elaborate_drops analysis we currently have [this call](https://github.com/rust-lang/rust/blob/033aa092ab23ba14cdad27073c5e37ba0eddb428/compiler/rustc_mir_dataflow/src/elaborate_drops.rs#L278) to `normalize_erasing_regions`, which ICEs when normalization fails. The types are used to infer [whether the type needs a drop](https://github.com/rust-lang/rust/blob/033aa092ab23ba14cdad27073c5e37ba0eddb428/compiler/rustc_mir_dataflow/src/elaborate_drops.rs#L374), where `needs_drop` itself [uses `try_normalize_erasing_regions`](https://github.com/rust-lang/rust/blob/033aa092ab23ba14cdad27073c5e37ba0eddb428/compiler/rustc_middle/src/ty/util.rs#L1121). ~[`instance_mir`](https://doc.rust-lang.org/stable/nightly-rustc/rustc_middle/ty/context/struct.TyCtxt.html#method.instance_mir) isn't explicit about whether it expects the instances corresponding to the `InstanceDef`s to be monomorphized (though I think in all other contexts the function is used post-monomorphization), so the use of `instance_mir` in inlining doesn't necessarily seem wrong to me.~
2023-05-17Remove libs message about ACPs from triagebotAmanieu d'Antras-25/+0
The libs team is currently reworking the ACP process and we don't want to encourage people to submit new ACPs in the meantime.
2023-05-17Fix #107910, Shorten backtraces in ICEsyukang-40/+259
2023-05-17Add missing backslash in HTML stringGuillaume Gomez-1/+1
2023-05-17Emits E0599 when meeting MyTrait::missing_methodmu001999-47/+147
2023-05-17Update to LLVM 16.0.4Nikita Popov-0/+0
2023-05-17Auto merge of #111671 - Dylan-DPC:rollup-1jy5r16, r=Dylan-DPCbors-83/+232
Rollup of 6 pull requests Successful merges: - #110145 (Share slice of bytes) - #111043 (Stabilize feature `cstr_is_empty`) - #111648 (Remove `LangItems::require`) - #111649 (Add derive for `core::marker::ConstParamTy`) - #111654 (Add a conversion from `&mut T` to `&mut UnsafeCell<T>`) - #111661 (Erase regions of type in `offset_of!`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-05-17Rollup merge of #111661 - clubby789:offset-of-erase-regions, r=compiler-errorsDylan DPC-3/+9
Erase regions of type in `offset_of!` Fixes #111657
2023-05-17Rollup merge of #111654 - JoJoJet:unsafe-cell-from-mut-lib, r=joshtriplettDylan DPC-0/+22
Add a conversion from `&mut T` to `&mut UnsafeCell<T>` Provides a safe way of downgrading an exclusive reference into an alias-able `&UnsafeCell<T>` reference. ACP: https://github.com/rust-lang/libs-team/issues/198.
2023-05-17Rollup merge of #111649 - Nilstrieb:derive-const-param-ty, r=BoxyUwUDylan DPC-2/+115
Add derive for `core::marker::ConstParamTy` This makes it easier to implement it for a type, just like `Copy`. `@BoxyUwU` half asked me to add it
2023-05-17Rollup merge of #111648 - Nilstrieb:language-items, r=WaffleLapkinDylan DPC-38/+20
Remove `LangItems::require` It's just a short wrapper used by `tcx.require_lang_item`. Deleting it gives us a negative diff.
2023-05-17Rollup merge of #111043 - jmillikin:cstr-is-empty, r=dtolnayDylan DPC-3/+2
Stabilize feature `cstr_is_empty` Fixes #102444 ACP: https://github.com/rust-lang/libs-team/issues/106
2023-05-17Rollup merge of #110145 - WaffleLapkin:share_slice_of_bytes, r=NilstriebDylan DPC-37/+64
Share slice of bytes r? `@Nilstrieb` cc `@noamtashma`
2023-05-17Auto merge of #111630 - BoxyUwU:ty_const_debug_formatting, r=compiler-errorsbors-45/+75
debug format `Const`'s less verbosely Not user visible change only visible to people debugging const generics. Currently debug output for `ty::Const` is super verbose (even for `-Zverbose` lol), things like printing infer vars as `Infer(Var(?0c))` instead of just `?0c`, bound vars and placeholders not using `^0_1` or `!0_1` syntax respectively. With these changes its imo better but not perfect: `Const { ty: usize, kind: ^0_1 }` is still a lot for not much information. not entirely sure what to do about that so not dealing with it yet. Need to do formatting for `ConstKind::Expr` at some point too since rn it sucks (doesn't even print anything with `Display`) not gonna do that in this PR either. r? `@compiler-errors`
2023-05-17Auto merge of #111664 - weihanglo:update-cargo, r=weihanglobors-0/+0
Update cargo 8 commits in 13413c64ff88dd6c2824e9eb9374fc5f10895d28..09276c703a473ab33daaeb94917232e80eefd628 2023-05-10 13:46:18 +0000 to 2023-05-16 21:43:35 +0000 - docs: Clarify that crates.io doesn't link to docs.rs right away. (rust-lang/cargo#12146) - docs(ref): Clarify MSRV is generally minor (rust-lang/cargo#12122) - Fix `check_for_file_and_add`'s check for conflict file (rust-lang/cargo#12135) - Fixes: Incorrect document link (rust-lang/cargo#12143) - doc: intra-doc links and doc comments for build script (rust-lang/cargo#12133) - Add Cargo team charter. (rust-lang/cargo#12010) - Remove useless drop of copy type (rust-lang/cargo#12136) - Fix dep/feat syntax with hidden implicit optional dependencies (rust-lang/cargo#12130) r? ghost
2023-05-17Update cargoWeihang Lo-0/+0
2023-05-17Finish move of query.rsJohn Kåre Alsaker-33/+29
2023-05-17Move rustc_middle/src/ty/query.rs to rustc_middle/src/query/plumbing.rsJohn Kåre Alsaker-0/+0
2023-05-16Auto merge of #111556 - cjgillot:copy-prop-nrvo, r=oli-obkbors-240/+617
Merge return place with other locals in CopyProp. This reintroduces a limited form of NRVO. r? wg-mir-opt
2023-05-16Erase regions of type in `offset_of!`clubby789-3/+9
2023-05-16add `UnsafeCell::from_mut`JoJoJet-0/+22
2023-05-16Auto merge of #111650 - matthiaskrgr:rollup-n7w17v4, r=matthiaskrgrbors-62/+286
Rollup of 7 pull requests Successful merges: - #107680 (Hide repr attribute from doc of types without guaranteed repr) - #111488 (Use error term in projection if missing associated item in new solver) - #111533 (Handle error body in generator layout) - #111573 (Erase `ReError` properly) - #111592 (Change Vec examples to not assert exact capacity except where it is guaranteed) - #111610 (fix(diagnostic): wrap parens for ref impl trait param) - #111642 ([rustdoc] Only keep impl blocks from bodies) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-05-16Rollup merge of #111642 - GuillaumeGomez:only-impl-from-bodies, r=notriddleMatthias Krüger-1/+65
[rustdoc] Only keep impl blocks from bodies Fixes https://github.com/rust-lang/rust/issues/111415. The problem was that we kept everything inside bodies whereas only impl blocks are actually accessible from outside bodies. r? `@notriddle`
2023-05-16Rollup merge of #111610 - bvanjoi:fix-99597, r=compiler-errorsMatthias Krüger-31/+76
fix(diagnostic): wrap parens for ref impl trait param Fixes https://github.com/rust-lang/rust/issues/99597 When parameters are an `impl_trait` which it needed to add trait, and it is a reference, add parentheses to the type of the parameter in the suggestion
2023-05-16Rollup merge of #111592 - Nemo157:fix-vec-capacity-examples, r=joshtriplettMatthias Krüger-6/+6
Change Vec examples to not assert exact capacity except where it is guaranteed It was [brought up on discord](https://discord.com/channels/273534239310479360/818964227783262209/1107633959329878077) that the `Vec::into_boxed_slice` example contradicted the `Vec::with_capacity` docs in that the returned `Vec` might have _more_ capacity than requested. So, to reduce confusion change all the `assert_eq!(vec.capacity(), _)` to `assert!(vec.capacity() >= _)`, except in 4 examples that have guaranteed capacities: `Vec::from_raw_parts`, `Vec::from_raw_parts_in`, `Vec::<()>::with_capacity`,`Vec::<(), _>::with_capacity_in`.
2023-05-16Rollup merge of #111573 - compiler-errors:erase-re-error, r=WaffleLapkinMatthias Krüger-1/+50
Erase `ReError` properly Fixes #111341 Since we check whether a type has free regions before erasing (to short circuit unnecesary folding), we need to consider `ReError` as a free region, or else we'll skip it when erasing a type that only mentions `ReError`. cc `@nnethercote`
2023-05-16Rollup merge of #111533 - clubby789:drop-tracking-error, r=oli-obkMatthias Krüger-11/+49
Handle error body in generator layout Fixes #111468 I feel like making this query return `Option<GeneratorLayout>` might be better but had some issues with that approach
2023-05-16Rollup merge of #111488 - compiler-errors:error-term, r=lcnrMatthias Krüger-2/+30
Use error term in projection if missing associated item in new solver We were previously delaying a bug but not bailing, leading to an ICE in the `tcx.type_of(assoc_def.item.def_id)` call below.
2023-05-16Rollup merge of #107680 - dtolnay:docrepr, r=AmanieuMatthias Krüger-10/+10
Hide repr attribute from doc of types without guaranteed repr Rustdoc has an undesirable behavior of blindly copying `repr` into the documentation of structs and enums, even when there is no particular repr that the type guarantees to its users. This is a source of confusion for standard library users who assume the fact that a repr is documented means it must be something the standard library promises they can rely on (in transmutes, or FFI). Some issues on the topic of rustdoc's incorrect handling of `repr`: - https://github.com/rust-lang/rust/issues/66401 - https://github.com/rust-lang/rust/issues/90435 In places, the standard library currently works around this confusing rustdoc behavior by just omitting `repr(transparent)` altogether even where it should be required if equivalent code were being written outside of the standard library. See #61969. IMO that is even more confusing, even for standard library maintainers &mdash; see https://github.com/rust-lang/rust/pull/105018#discussion_r1058400997. It's also not something that works for other reprs like `C` or `u8` which cannot just be omitted even in standard library code. This PR tries a different approach for some types that are being currently incorrectly documented with a repr. > **Warning** > This PR does not imply that every type that still has a `repr` attribute in its docs after this PR is now public for users to rely on. This PR only tries to reduce harm from this longstanding rustdoc issue.
2023-05-16Add derive for `core::marker::ConstParamTy`Nilstrieb-2/+115
This makes it easier to implement it for a type, just like `Copy`.