about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2022-04-24make `classify_drop_access_kind` iterateSparrowLii-35/+38
2022-04-24Auto merge of #96281 - SparrowLii:const_prop, r=wesleywiserbors-29/+11
Optimize `const_prop` mir-opt by accessing `local_decls` through `ecx` From the FIXME in the impl of `ConstPropagator`. Accessing `local_decls` and `scource_scopes` from `ecx` can reduce `clone` calls and save compile time. Besides, according to #96213 , the FIXME about writing `layouts` to `ecx` in advance can also be removed.
2022-04-23Auto merge of #93970 - cjgillot:novis, r=petrochenkovbors-549/+311
Remove visibility information from HIR The resolver exports all the necessary visibility information through the `tcx.visibility` query. This PR stops having a dedicated visibility field in HIR, in order to use this query. We keep a `vis_span` field for diagnostic purposes.
2022-04-23Bless pretty-print output.Camille GILLOT-12/+12
2022-04-23Hash visibilities in crate_hash.Camille GILLOT-0/+4
2022-04-23Compute has_pub_restricted in the resolver.Camille GILLOT-12/+13
2022-04-23Make clippy inspector more precise.Camille GILLOT-2/+14
2022-04-23Fix lints.Camille GILLOT-96/+79
2022-04-23Auto merge of #96326 - JakobDegen:relax-operand, r=oli-obkbors-3/+8
Relax restrictions for copy operands This was [discussed on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt/topic/Removing.20requirement.20that.20.60Copy.60.20operands.20have.20.60Copy.60.20types/near/279102313). Details about motivation and such can be found there r? `@oli-obk`
2022-04-23Auto merge of #90602 - mbartlett21:const-intoiterator, r=oli-obkbors-7/+8
Unstably constify `impl<I: Iterator> IntoIterator for I` This constifies the default `IntoIterator` implementation under the `const_intoiterator_identity` feature. Tracking Issue: #90603
2022-04-23Auto merge of #95971 - workingjubilee:no-weird-fp-in-const, r=oli-obkbors-48/+479
No "weird" floats in const fn {from,to}_bits I suspect this code is subtly incorrect and that we don't even e.g. use x87-style floats in CTFE, so I don't have to guard against that case. A future PR will be hopefully removing them from concern entirely, anyways. But at the moment I wanted to get this rolling because small questions like that one seem best answered by review. r? `@oli-obk` cc `@eddyb` `@thomcc`
2022-04-23Auto merge of #96323 - bjorn3:sync_cg_clif-2022-04-22, r=bjorn3bors-142/+189
Sync rustc_codegen_cranelift Mostly fixing bugs this time, but also a Cranelift update. r? `@ghost` `@rustbot` label +A-codegen +A-cranelift +T-compiler
2022-04-23Bless incremental tests.Camille GILLOT-24/+20
2022-04-23Drop vis in Item.Camille GILLOT-166/+54
2022-04-23Drop vis in ImplItem.Camille GILLOT-36/+16
2022-04-23Drop vis from ForeignItem.Camille GILLOT-4/+4
2022-04-23Drop vis in FieldDef.Camille GILLOT-62/+80
2022-04-23Stop pretty-printing HIR visibility.Camille GILLOT-83/+29
2022-04-23Stop visiting visibility.Camille GILLOT-95/+29
2022-04-23Auto merge of #96316 - michaelwoerister:debuginfo-fix-unit-msvc, r=wesleywiserbors-9/+87
debuginfo: Emit ZST struct debuginfo for unit type when CPP-like debuginfo is enabled As already discovered in https://github.com/rust-lang/rust/commit/24a728a8eb4832568509eb757c2374934a76cb98, PDB does not play well with custom basic types. This PR extends to the fix to `()`: Instead of a custom basic type, we treat it like an empty tuple (i.e. it is described as a struct which happens to have no fields). Before this change anything with a `()` in it would cause trouble, which is especially bad for `*const ()` and `*mut ()` which are often used for opaque pointers. E.g. the test case added in this PR would look like: ``` 0:000> dx _ref Error: Unable to bind name '_ref' 0:000> dx _ptr Error: Unable to bind name '_ptr' 0:000> dx _local Error: Unable to bind name '_local' 0:000> dx _field,d _field,d [Type: unit_type::_TypeContainingUnitField] [+0x008] _a : 123 [Type: unsigned int] [+0x000] _unit : Unexpected failure to dereference object [+0x000] _b : 456 [Type: unsigned __int64] 0:000> dx ((__int64 *)_ptr),x Error: Unable to bind name '_ptr' ``` With the PR it produces the expected output: ``` 0:000> dx _ref _ref : 0x7ff6f2012230 : () [Type: tuple$<> *] 0:000> dx _ptr _ptr : 0x7e8ddffc20 : () [Type: tuple$<> *] 0:000> dx _local _local : () [Type: tuple$<>] 0:000> dx _field,d _field,d [Type: unit_type::_TypeContainingUnitField] [+0x008] _a : 123 [Type: unsigned int] [+0x000] _unit : () [Type: tuple$<>] [+0x000] _b : 456 [Type: unsigned __int64] 0:000> dx ((__int64 *)_ptr),x ((__int64 *)_ptr),x : 0x7e8ddffc20 : 0x1122334455667788 [Type: __int64 *] ``` r? `@wesleywiser`
2022-04-23Auto merge of #96314 - AronParker:issue-96297-fix, r=thomccbors-1/+7
Reduce allocations for path conversions on Windows Previously, UTF-8 to UTF-16 Path conversions on Windows unnecessarily allocate twice, as described in #96297. This commit fixes that issue.
2022-04-22Remove unnecessary const-time x87-related checksJubilee Young-32/+16
2022-04-22Fix comments for float classifyJubilee Young-5/+11
2022-04-23Auto merge of #94887 - dylni:move-normpath-crate-impl-to-libstd, r=ChrisDentonbors-57/+142
Improve Windows path prefix parsing This PR fixes improves parsing of Windows path prefixes. `parse_prefix` now supports both types of separators on Windows (`/` and `\`).
2022-04-22Auto merge of #95739 - lqd:proc-macro-expansions, r=wesleywiserbors-3/+49
self-profiler: record spans for proc-macro expansions This PR is a follow-up to #95473, using the arg recorder feature from #95689: - it adds support code to easily record spans in the event's arguments, when using `generic_activity_with_arg_recorder`. - uses that to record the spans where proc-macro expansions happen in addition to their name. As for the other 2 PRs, the goal here is to provide visibility into proc-macro expansion performance, so that users can diagnose which uses of proc-macros in their code could be causing compile time issues. Some areas where I'd love feedback: - [x] the API and names: the `SpannedEventArgRecorder` trait and its method, much like #95689 had the same question about the `EventArgRecorder` naming - [x] we don't currently have a way to record the names of the event arguments, so should `record_arg_spanned` record the span as "location: {}" or similar ?
2022-04-22Relax restrictions for copy operandsJakob Degen-3/+8
2022-04-22Auto merge of #96322 - matthiaskrgr:rollup-9xejxrf, r=matthiaskrgrbors-70/+94
Rollup of 3 pull requests Successful merges: - #96272 (Update `validate_uninhabited_zsts.rs` test after MIR building changes) - #96273 (Make `E0117` error clear) - #96315 (Make the lifetime accurate which is used in the region constraints part) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-04-22Merge commit 'f2cdd4a78d89c009342197cf5844a21f8aa813df' into ↵bjorn3-142/+189
sync_cg_clif-2022-04-22
2022-04-22Rollup merge of #96315 - SparrowLii:graph_lt, r=petrochenkovMatthias Krüger-6/+3
Make the lifetime accurate which is used in the region constraints part This PR fixes the FIXME about lifetime using in the region constraints part. We cannot write `<'graph, 'tcx, D>` because the definition of `Successors<'0, '1, D>` requires `'1 : '0`. We cannot add bound to `'graph` either because `'graph` is required to be an arbitrary value in the definition of `WithSuccessors` So the most accurate way is to use `<'s, 'tcx, D>`. cc `@Aaron1011` who added this FIXME in #85343
2022-04-22Rollup merge of #96273 - TaKO8Ki:make-E0117-error-clear, r=davidtwcoMatthias Krüger-30/+36
Make `E0117` error clear closes #96227
2022-04-22Rollup merge of #96272 - tmiasko:validate-uninhabited, r=RalfJungMatthias Krüger-34/+55
Update `validate_uninhabited_zsts.rs` test after MIR building changes to ensure that it still tests validation, instead of failing earlier on during evaluation. r? `@RalfJung`
2022-04-22Auto merge of #96301 - notriddle:notriddle/synthetic-impl-prim, r=GuillaumeGomezbors-4/+9
rustdoc: make primitive synthetic impls for correct doc module This improves the accuracy of libcore primitive docs, which was missing the blanket and auto impls for most primitive types. To test this, compare nightly [libcore::str] docs, which lack auto traits like Send, with [std::str] docs, which show them. [libcore::str]: https://doc.rust-lang.org/nightly/core/primitive.str.html [libstd::str]: https://doc.rust-lang.org/nightly/std/primitive.str.html It also avoids getting synthetic impls for primitive types on crates that do not actually show them. <details> <summary>Before and After trace logs</summary> ## Before [notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +nightly test.rs 2>&1 | grep -E 'get_blanket_impls\(' TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever) TRACE rustdoc::clean::blanket_impl get_blanket_impls(isize) TRACE rustdoc::clean::blanket_impl get_blanket_impls([T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8]) TRACE rustdoc::clean::blanket_impl get_blanket_impls(char) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u128) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u16) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i128) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i16) TRACE rustdoc::clean::blanket_impl get_blanket_impls(str) TRACE rustdoc::clean::blanket_impl get_blanket_impls(str) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u8) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i8) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const T) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut T) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const [T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut [T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([T; N]) TRACE rustdoc::clean::blanket_impl get_blanket_impls(bool) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u32) TRACE rustdoc::clean::blanket_impl get_blanket_impls(usize) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i32) ## After [notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +dev test.rs 2>&1 | grep -E 'get_blanket_impls\(' TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever) </details>
2022-04-22start tracking proc-macros expansion spans in the self-profilerRémy Rakic-3/+12
2022-04-22extend `EventArgRecorder` into span-aware `SpannedEventArgRecorder`Rémy Rakic-0/+37
The self-profiler's `EventArgRecorder` is general-purpose in its ability to record Strings (and `rustc_span` depends on the crate its defined in, `rustc_data_structure`). Some generic activities could use recording locations where they happen in the user's code: to allow e.g. to track macro expansions and diagnose performance issues there. This adds a `SpannedEventArgRecorder` that can record an argument given as a span, rather than a String, since turning spans into Strings can be tricky if you're not happy with its default Debug output. This way the recorder can have a `record_arg_spanned` method which will do that.
2022-04-22Auto merge of #96226 - xldenis:thir-clone, r=oli-obkbors-12/+12
Make all thir types implement clone This PR adds `Clone` impl to all of the `Thir<'tcx>` types. I would like to be able to clone a `Thir` body so that I can make a copy in my rustc driver without breaking further compilation. Without this my driver is forced to run in the `after_expansion` callback and thus doesn't benefit from running all the safety checks that `rustc` usually does, instead i need to do them all myself.
2022-04-22debuginfo: Emit ZST struct debuginfo for unit type when CPP-like debuginfo ↵Michael Woerister-9/+87
is enabled (instead of custom basic type).
2022-04-22Make the lifetime accurate which is used in the region constraints partSparrowLii-6/+3
2022-04-22Auto merge of #96197 - erikdesjardins:scalarpairenum, r=oli-obkbors-16/+795
Mark payload fields of ScalarPair enums as Scalar::Union when they're not always initialized Fixes #96158 r? `@RalfJung`
2022-04-22Remove redundant type annotationAron Parker-1/+1
2022-04-22Reduce allocations for path conversions on WindowsAron Parker-1/+7
Previously, UTF-8 to UTF-16 Path conversions on Windows unnecessarily allocate twice, as described in #96297. This commit fixes that issue.
2022-04-22Auto merge of #96207 - nikic:distcheck-dir, r=Mark-Simulacrumbors-1/+3
Ensure existance of dist directory when creating tarball I'm not sure why this works in CI, but this is necessary to make distcheck (including the `x86_64-linux-distcheck` image) run on Fedora 35.
2022-04-22normalize out pref_align (copied from another test)Erik Desjardins-56/+23
2022-04-22Auto merge of #96144 - c410-f3r:z-errors, r=petrochenkovbors-1/+1
Move some tests to more reasonable places cc #73494 r? `@petrochenkov`
2022-04-22Auto merge of #96282 - petrochenkov:unindent, r=GuillaumeGomezbors-133/+89
rustdoc: Unindent doc fragments on `Attributes` construction `Attributes` can be constructed at arbitrary points, even after the `unindent_comments` pass. `Attributes` that are constructed too late end up unindented. All doc fragments need to be eventually indented before use, so there are no reasons to not do this immediately during their construction. Fixes https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/.60unindent_comments.60.20cannot.20work.20as.20a.20separate.20pass. I'm not sure how to make a minimized reproduction, but unindenting the fragments during their construction should fix the issue.. by construction, and I also verified that all doc strings now hit the `resolver_caches.markdown_links` cache in https://github.com/rust-lang/rust/pull/94857.
2022-04-22remove an error for type paramsTakayuki Maeda-1/+0
2022-04-22use references to avoid function callsSparrowLii-12/+29
2022-04-21rustdoc: make primitive synthetic impls for correct doc moduleMichael Howell-4/+9
This improves the accuracy of libcore primitive docs, which was missing the blanket and auto impls for most primitive types. To test this, compare nightly [libcore::str] docs, which lack auto traits like Send, with [std::str] docs, which show them. [libcore::str]: https://doc.rust-lang.org/nightly/core/primitive.str.html [libstd::str]: https://doc.rust-lang.org/nightly/std/primitive.str.html It also avoids getting synthetic impls for primitive types on crates that do not actually show them. <details> <summary>Before and After trace logs</summary> Before: [notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +nightly test.rs 2>&1 | grep -E 'get_blanket_impls\(' TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever) TRACE rustdoc::clean::blanket_impl get_blanket_impls(isize) TRACE rustdoc::clean::blanket_impl get_blanket_impls([T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8]) TRACE rustdoc::clean::blanket_impl get_blanket_impls(char) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u128) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u16) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i128) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i16) TRACE rustdoc::clean::blanket_impl get_blanket_impls(str) TRACE rustdoc::clean::blanket_impl get_blanket_impls(str) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u8) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i64) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i8) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const T) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut T) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const [T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut [T]) TRACE rustdoc::clean::blanket_impl get_blanket_impls([T; N]) TRACE rustdoc::clean::blanket_impl get_blanket_impls(bool) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32) TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32) TRACE rustdoc::clean::blanket_impl get_blanket_impls(u32) TRACE rustdoc::clean::blanket_impl get_blanket_impls(usize) TRACE rustdoc::clean::blanket_impl get_blanket_impls(i32) After: [notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +dev test.rs 2>&1 | grep -E 'get_blanket_impls\(' TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever) </details>
2022-04-22Auto merge of #96261 - petrochenkov:doclink7, r=GuillaumeGomezbors-7/+28
rustdoc: Resolve some more doc links early Trying another subset of https://github.com/rust-lang/rust/pull/94857 that is not too expensive.
2022-04-21Auto merge of #96293 - Dylan-DPC:rollup-saipx8c, r=Dylan-DPCbors-40/+53
Rollup of 5 pull requests Successful merges: - #95434 (Only output DepKind in dump-dep-graph.) - #96248 (Stop using a string literal as a format argument) - #96251 (Update books) - #96269 (errors: minor translation-related changes) - #96289 (Remove redundant `format!`s) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-04-21Update `validate_uninhabited_zsts.rs` test after MIR building changesTomasz Miąsko-34/+55
to ensure that it still tests validation, instead of failing earlier on during evaluation.