about summary refs log tree commit diff
path: root/compiler
AgeCommit message (Collapse)AuthorLines
2022-04-24remove indentation in report_method_errorMichael Goulet-180/+162
2022-04-24Rollup merge of #96352 - marmeladema:fix-nll-lifetime-bound-suggestions, ↵Matthias Krüger-29/+30
r=jackh726 Improve span for `consider adding an explicit lifetime bound` suggestions under NLL Because NLL borrowck is run after typeck, `in_progress_typeck_results` was always `None` which was preventing the retrieval of the span to which the suggestion is suppose to add the lifetime bound. We now manually pass the `LocalDefId` owner to `construct_generic_bound_failure` so that under NLL, we give the owner id of the current body. This helps with #96332
2022-04-24Auto merge of #96359 - SparrowLii:drop_kind, r=oli-obkbors-35/+38
make `classify_drop_access_kind` iterate This PR: 1. fixes the FIXME of `classify_drop_access_kind` func in the borrowck part. The process of obtaining `StorageDeadOrDrop` has been changed from recursive to iterative. 2. gets `place_ty` in each iteration, avoid repeatedly getting the `ty` of the same place (O(n^2) => O(n))
2022-04-24make `classify_drop_access_kind` iterateSparrowLii-35/+38
2022-04-24Recover missing suggestion part under NLLmarmeladema-1/+4
2022-04-24Improve span for `consider adding an explicit lifetime bound` suggestions ↵marmeladema-28/+26
under NLL Because NLL borrowck is run after typeck, `in_progress_typeck_results` was always `None` which was preventing the retrieval of the span to which the suggestion is suppose to add the lifetime bound. We now manually pass the `LocalDefId` owner to `construct_generic_bound_failure` so that under NLL, we give the owner id of the current body.
2022-04-23Add support for `nounused` --extern flagJeremy Fitzhardinge-1/+15
This adds `nounused` to the set of extern flags: `--extern nounused:core=/path/to/core/libcore.rlib`. The effect of this flag is to suppress `unused-crate-dependencies` warnings relating to the crate.
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-463/+208
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-23Hash visibilities in crate_hash.Camille GILLOT-0/+4
2022-04-23Compute has_pub_restricted in the resolver.Camille GILLOT-12/+13
2022-04-23Fix lints.Camille GILLOT-78/+51
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 #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-23Drop vis in Item.Camille GILLOT-153/+41
2022-04-23Drop vis in ImplItem.Camille GILLOT-28/+11
2022-04-23Drop vis from ForeignItem.Camille GILLOT-4/+4
2022-04-23Drop vis in FieldDef.Camille GILLOT-61/+76
2022-04-23Stop pretty-printing HIR visibility.Camille GILLOT-83/+29
2022-04-23Stop visiting visibility.Camille GILLOT-85/+20
2022-04-23Auto merge of #96316 - michaelwoerister:debuginfo-fix-unit-msvc, r=wesleywiserbors-9/+16
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-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-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-2/+8
Make `E0117` error clear closes #96227
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/+16
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/+21
Mark payload fields of ScalarPair enums as Scalar::Union when they're not always initialized Fixes #96158 r? `@RalfJung`
2022-04-22remove an error for type paramsTakayuki Maeda-1/+0
2022-04-22use references to avoid function callsSparrowLii-12/+29
2022-04-22Auto merge of #96261 - petrochenkov:doclink7, r=GuillaumeGomezbors-0/+8
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-21Rollup merge of #96289 - aDotInTheVoid:redundant-fmt, r=jackh726Dylan DPC-5/+5
Remove redundant `format!`s
2022-04-21Rollup merge of #96269 - davidtwco:diagnostic-translation-minor-changes, ↵Dylan DPC-9/+19
r=oli-obk errors: minor translation-related changes - For one error in typeck, specifying "suggestion" as the attribute for the only suggestion is unnecessary, it's the default of the derive. - The documentation comment for the `SessionDiagnostic` derive is out-of-date, it should have been updated in #95512. r? `@oli-obk`
2022-04-21Rollup merge of #96248 - TaKO8Ki:remove-unnecessary-format-args, ↵Dylan DPC-1/+1
r=compiler-errors Stop using a string literal as a format argument
2022-04-21Rollup merge of #95434 - cjgillot:dump-dep-kind, r=oli-obkDylan DPC-25/+28
Only output DepKind in dump-dep-graph. When printing the whole DepNode, the output file is simply too massive to be actually useful for profiling. This trimmed down version mixes a lot of information together, but it also allows to ask questions such that "why does this query ever access HIR?".
2022-04-21Remove redundant `format!`sNixon Enraght-Moony-5/+5
2022-04-21Auto merge of #96210 - nnethercote:speed-up-TokenCursor, r=petrochenkovbors-140/+118
Speed up `TokenCursor` Plus a few related clean-ups. r? `@petrochenkov`
2022-04-21access `local_decls` through `ecx`SparrowLii-49/+14
2022-04-21make `E0117` error clearTakayuki Maeda-2/+9
2022-04-21Auto merge of #95612 - davidtwco:split-debuginfo-in-bootstrap, r=Mark-Simulacrumbors-1/+1
bootstrap: add split-debuginfo config Replace `run-dysutil` option with more general `split-debuginfo` option that works on all platforms. r? `@Mark-Simulacrum`
2022-04-21Introduced `Cursor::next_with_spacing_ref`.Nicholas Nethercote-5/+13
This lets us clone just the parts within a `TokenTree` that need cloning, rather than the entire thing. This is a surprisingly large performance win, up to 4% on `async-std-1.10.0`.
2022-04-21macros: update doc comment for diagnostic deriveDavid Wood-8/+18
The documentation comment for this derive is out-of-date, it should have been updated in #95512. Signed-off-by: David Wood <david.wood@huawei.com>
2022-04-21typeck: remove unnecessary fluent attrDavid Wood-1/+1
Specifying "suggestion" as the attribute for the only suggestion is unnecessary, it's the default of the derive. Signed-off-by: David Wood <david.wood@huawei.com>
2022-04-21Produce `CloseDelim` and pop the stack at the same time.Nicholas Nethercote-27/+34
This makes `CloseDelim` handling more like `OpenDelim` handling, which produces `OpenDelim` and pushes the stack at the same time. It requires some adjustment to `parse_token_tree` now that we don't remain within the frame after getting the `CloseDelim`.
2022-04-21Avoid some tuple destructuring.Nicholas Nethercote-5/+7
Surprisingly, this is a non-trivial performance win.
2022-04-21Rollup merge of #96236 - Aaron1011:constraint-debug, r=jackh726Dylan DPC-6/+28
Add an explicit `Span` field to `OutlivesConstraint` Previously, we would retrieve the span from the `Body` using the `locations` field. However, we may end up changing the `locations` field when moving a constraint from a promoted to a different body. We now store the original `Span` in a dedication field, so that changes to the `locations` do not affect the quality of our diagnostics.