about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2023-12-20Rollup merge of #119135 - celinval:smir-small-changes, r=compiler-errorsMatthias Krüger-2/+94
Fix crash due to `CrateItem::kind()` not handling constructors Also add a method to get the instance instantiation arguments, and include that information in the instance debug.
2023-12-20Add method to get instance instantiation argumentsCelina G. Val-0/+15
2023-12-20Add `ItemKind::Ctor` to stable mirCelina G. Val-11/+22
2023-12-20Add a small test for the case that was crashingCelina G. Val-0/+78
2023-12-20Fix crash for `CrateItem::kind()` with constructorsCelina G. Val-5/+8
Change how we classify item kind for DefKind::Ctor
2023-12-20Refactor AST trait bound modifiersLeón Orell Valerian Liehr-200/+194
2023-12-20Auto merge of #119037 - RalfJung:repr-c-abi-mismatch, r=scottmcmbors-2/+33
do not allow ABI mismatches inside repr(C) types In https://github.com/rust-lang/rust/pull/115476 we allowed ABI mismatches inside `repr(C)` types. This wasn't really discussed much; I added it because from how I understand calling conventions, this should actually be safe in practice. However I entirely forgot to actually allow this in Miri, and in the mean time I have learned that too much ABI compatibility can be a problem for CFI (it can reject fewer calls so that gives an attacker more room to play with). So I propose we take back that part about ABI compatibility in `repr(C)`. It is anyway something that C and C++ do not allow, as far as I understand. In the future we might want to introduce a class of ABI compatibilities where we say "this is a bug and it may lead to aborting the process, but it won't lead to arbitrary misbehavior -- worst case it'll just transmute the arguments from the caller type to the callee type". That would give CFI leeway to reject such calls without introducing the risk of arbitrary UB. (The UB can still happen if the transmute leads to bad results, of course, but it wouldn't be due to ABI weirdness.) #115476 hasn't reached beta yet so if we land this before Dec 22nd we can just pretend this all never happened. ;) Otherwise we should do a beta backport (of the docs change at least). Cc `@rust-lang/opsem` `@rust-lang/types`
2023-12-20resolve: Stop feeding visibilities for import list stemsVadim Petrochenkov-2/+21
2023-12-20E0761: module directory has .rs suffixalef-1/+1
2023-12-20Auto merge of #119166 - GuillaumeGomez:rollup-qfgj76w, r=GuillaumeGomezbors-41/+150
Rollup of 3 pull requests Successful merges: - #119115 (Update documentation for `--env` compilation flag) - #119155 (coverage: Check for `async fn` explicitly, without needing a heuristic) - #119159 (Update LLVM submodule) r? `@ghost` `@rustbot` modify labels: rollup
2023-12-20Rollup merge of #119159 - petrochenkov:llvmup, r=nikicGuillaume Gomez-0/+0
Update LLVM submodule to pick up "[M68k] Fix ODR violation in GISel code (#72797)" https://github.com/rust-lang/llvm-project/pull/159. Fixes https://github.com/rust-lang/rust/issues/107668
2023-12-20Rollup merge of #119155 - Zalathar:async-fn, r=compiler-errorsGuillaume Gomez-40/+130
coverage: Check for `async fn` explicitly, without needing a heuristic The old code used a heuristic to detect async functions and adjust their coverage spans to produce better output. But there's no need to resort to a heuristic when we can just look back at the original definition and check whether the current function is actually an `async fn`. In addition to being generally nicer, this also gets rid of the one piece of code that specifically cares about `CoverageSpan::is_closure` representing an actual closure. All remaining code that inspects that field just uses it as an indication that the span is a hole that should be carved out of other spans, and then discarded. That opens up the possibility of introducing other kinds of “hole” spans, e.g. for nested functions/types/macros, and having them all behave uniformly. --- `@rustbot` label +A-code-coverage
2023-12-20Rollup merge of #119115 - GuillaumeGomez:env-docs, r=NilstriebGuillaume Gomez-1/+20
Update documentation for `--env` compilation flag Part of https://github.com/rust-lang/rust/issues/80792. As mentioned in https://github.com/rust-lang/rust/pull/118830. It adds a mention to `tracked_env::var` and also clarifies what triggers a new compilation. r? `@Nilstrieb`
2023-12-20Add link to explanations about dep-info filesGuillaume Gomez-1/+2
2023-12-20Auto merge of #119136 - petrochenkov:feedvis3, r=WaffleLapkinbors-22/+23
resolve: Eagerly feed closure visibilities Also factor out all tcx-dependent operations performed for every created definition into `TyCtxt::create_def`. Addresses https://github.com/rust-lang/rust/pull/118657#discussion_r1421424277
2023-12-20Update LLVM submoduleVadim Petrochenkov-0/+0
to pick up "[M68k] Fix ODR violation in GISel code (#72797)" https://github.com/rust-lang/llvm-project/pull/159
2023-12-20Reveal opaque types in exhaustiveness checkingNadrieril-42/+76
2023-12-20Add testsNadrieril-0/+217
2023-12-20Auto merge of #119134 - petrochenkov:feedvis2, r=compiler-errorsbors-2/+45
resolve: Feed visibilities for unresolved trait impl items Fixes https://github.com/rust-lang/rust/issues/119073
2023-12-20resolve: Eagerly feed closure visibilitiesVadim Petrochenkov-22/+23
Also factor out all tcx-dependent operations performed for every created definition into `TyCtxt::create_def`
2023-12-20Auto merge of #119156 - matthiaskrgr:rollup-482ow65, r=matthiaskrgrbors-267/+1419
Rollup of 7 pull requests Successful merges: - #118691 (Add check for possible CStr literals in pre-2021) - #118973 (rustc_codegen_ssa: Don't drop `IncorrectCguReuseType` , make `rustc_expected_cgu_reuse` attr work) - #119071 (-Znext-solver: adapt overflow rules to avoid breakage) - #119089 (effects: fix a comment) - #119094 (Add function ABI and type layout to StableMIR) - #119102 (Add arm-none-eabi and armv7r-none-eabi platform-support documentation.) - #119107 (subtype_predicate: remove unnecessary probe) Failed merges: - #119135 (Fix crash due to `CrateItem::kind()` not handling constructors) - #119141 (Add method to get instance instantiation arguments) r? `@ghost` `@rustbot` modify labels: rollup
2023-12-20Rollup merge of #119107 - lcnr:uwuwu, r=compiler-errorsMatthias Krüger-12/+3
subtype_predicate: remove unnecessary probe There is no reason to probe here. The failure either results in an actual type error, in which cases the probe is useless, or it is used inside of evaluate, in which case we're already inside of the `fn evaluation_probe`, so it is also not necessary.
2023-12-20Rollup merge of #119102 - chrisnc:arm-none-eabi-docs, r=wesleywiserMatthias Krüger-106/+176
Add arm-none-eabi and armv7r-none-eabi platform-support documentation. Mostly collecting existing information that's common to all arm-none-eabi targets and putting it in one file and adding a new file with specific details about armv7r.
2023-12-20Rollup merge of #119094 - celinval:smir-layout, r=compiler-errorsMatthias Krüger-25/+796
Add function ABI and type layout to StableMIR This change introduces a new module to StableMIR named `abi` with information from `rustc_target::abi` and `rustc_abi`, that allow users to retrieve more low level information required to perform bit-precise analysis. The layout of a type can be retrieved via `Ty::layout`, and the instance ABI can be retrieved via `Instance::fn_abi()`. To properly handle errors while retrieve layout information, we had to implement a few layout related traits. r? ```@compiler-errors```
2023-12-20Rollup merge of #119089 - fmease:dont-ice-on-tilde-const-non-const-trait, ↵Matthias Krüger-1/+1
r=fee1-dead effects: fix a comment r? fee1-dead or compiler
2023-12-20Rollup merge of #119071 - lcnr:overflowo, r=compiler-errorsMatthias Krüger-104/+269
-Znext-solver: adapt overflow rules to avoid breakage Do not erase overflow constraints if they are from equating the impl header when normalizing[^1]. This should be the minimal change to not break crates depending on the old project behavior of "apply impl constraints while only lazily evaluating any nested goals". Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/70, see https://hackmd.io/ATf4hN0NRY-w2LIVgeFsVg for the reasoning behind this. Only keeping constraints on overflow for `normalize-to` goals as that's the only thing needed for backcompat. It also allows us to not track the origin of root obligations. The issue with root goals would be something like the following: ```rust trait Foo {} trait Bar {} trait FooBar {} impl<T: Foo + Bar> FooBar for T {} // These two should behave the same, rn we can drop constraints for both, // but if we don't drop `Misc` goals we would only drop the constraints for // `FooBar` unless we track origins of root obligations. fn func1<T: Foo + Bar>() {} fn func2<T: FooBaz>() {} ``` [^1]: mostly, the actual rules are slightly different r? ``@compiler-errors``
2023-12-20Rollup merge of #118973 - Enselic:fix-IncorrectCguReuseType, r=michaelwoeristerMatthias Krüger-12/+16
rustc_codegen_ssa: Don't drop `IncorrectCguReuseType` , make `rustc_expected_cgu_reuse` attr work In [100753], `IncorrectCguReuseType` accidentally stopped being emitted by removing `diag.span_err(...)`. Begin emitting it again rather than just blindly dropping it, and adjust tests accordingly. We assume that there are no bugs and that the currently actual CGU reuse is correct. If there are bugs, they will be discovered and fixed eventually, and the tests will then be updated. [100753]: https://github.com/rust-lang/rust/pull/100753/commits/706452eba74026c51e8d0fa30aee2497c69eafc0#diff-048389738ddcbe0f9765291a29db1fed9a5f03693d4781cfb5aaa97ffb3c7f84 Closes #118972
2023-12-20Rollup merge of #118691 - chfogelman:improve-cstr-error, r=fmeaseMatthias Krüger-7/+158
Add check for possible CStr literals in pre-2021 Fixes [#118654](https://github.com/rust-lang/rust/issues/118654) Adds information to errors caused by possible CStr literals in pre-2021. The lexer separates `c"str"` into two tokens if the edition is less than 2021, which later causes an error when parsing. This error now has a more helpful message that directs them to information about editions. However, the user might also have written `c "str"` in a later edition, so to not confuse people who _are_ using a recent edition, I also added a note about whitespace. We could probably figure out exactly which scenario has been encountered by examining spans and editions, but I figured it would be better not to overcomplicate the creation of the error too much. This is my first code PR and I tried to follow existing conventions as much as possible, but I probably missed something, so let me know!
2023-12-20coverage: Check for `async fn` explicitly, without needing a heuristicZalathar-12/+11
The old code used a heuristic to detect async functions and adjust their coverage spans to produce better output. But there's no need to resort to a heuristic when we can just check whether the current function is actually an `async fn`.
2023-12-20coverage: Pass around `&ExtractedHirInfo` instead of individual fieldsZalathar-29/+16
This reduces the risk of mixing up `fn_source_span` and `body_span`, and makes it easier to pass along additional fields as needed.
2023-12-20coverage: Add a test for `async` blocksZalathar-0/+104
We have coverage tests that use async functions, but none that use async blocks.
2023-12-20Auto merge of #119118 - arttet:feature/fix-arm64e-targets, r=petrochenkovbors-10/+5
Fix arm64e-apple-ios target - [x] [Remove legacy `bitcode` defaults](https://github.com/rust-lang/rust/pull/117364) - [x] Use LLVM features Now we have warnings such as ``` '+paca' is not a recognized feature for this target (ignoring feature) '+pacg' is not a recognized feature for this target (ignoring feature) ``` Because we should use LLVM features.
2023-12-20Auto merge of #119096 - compiler-errors:yeet-unnecessary-param-envs, r=lcnrbors-108/+48
Yeet unnecessary param envs We don't need to pass in param-envs around in the lexical region resolution code (or in `MatchAgainstFreshVars` in the solver), since it is only used to eval some consts in `structurally_relate_tys` which I removed. This is in preparation for normalizing the outlives clauses in `ParamEnv` for the new trait solver. r? lcnr
2023-12-20Auto merge of #106790 - the8472:rawvec-niche, r=scottmcmbors-31/+86
add more niches to rawvec Previously RawVec only had a single niche in its `NonNull` pointer. With this change it now has `isize::MAX` niches since half the value-space of the capacity field is never needed, we can't have a capacity larger than isize::MAX.
2023-12-19Add additional tests and update existing testsEric Holk-2/+111
2023-12-20Give `VariantData::Struct` named fields, to clairfy `recovered`.Alona Enraght-Moony-40/+51
2023-12-19Fix a release note typoJosh Stone-1/+1
Co-authored-by: Mark Rousskov <mark.simulacrum@gmail.com>
2023-12-19Move exhaustive usize matching to langJosh Stone-1/+1
2023-12-19Fix a release note typoJosh Stone-1/+1
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
2023-12-19Add release notes for 1.75.0Josh Stone-0/+125
2023-12-19Improve compiler error for c-strings in pre-2021Carter Hunt Fogelman-7/+158
2023-12-19update natvis to match changed RawVec structureThe 8472-4/+4
2023-12-19Auto merge of #119112 - Nadrieril:remove-target_blocks-hack, r=matthewjasperbors-92/+86
match lowering: Remove the `make_target_blocks` hack This hack was introduced 4 years ago in [`a1d0266` (#60730)](https://github.com/rust-lang/rust/pull/60730/commits/a1d0266878793bc8b2bf50958eb529005ed19da0) to improve LLVM optimization time, specifically noticed in the `encoding` benchmark. Measurements today indicate it is no longer needed. r? `@matthewjasper`
2023-12-19Desugar for await loopsEric Holk-30/+125
2023-12-19Plumb awaitness of for loopsEric Holk-53/+137
2023-12-19resolve: Feed visibilities for unresolved trait impl itemsVadim Petrochenkov-2/+45
2023-12-19rustc_codegen_ssa: Don't let `IncorrectCguReuseType` errors get lostMartin Nordholts-12/+16
In [100753], `IncorrectCguReuseType` accidentally stopped being emitted. Begin emitting it again rather than just blindly dropping it, and adjust tests accordingly. [100753]: https://github.com/rust-lang/rust/pull/100753/commits/706452eba74026c51e8d0fa30aee2497c69eafc0#diff-048389738ddcbe0f9765291a29db1fed9a5f03693d4781cfb5aaa97ffb3c7f84
2023-12-19Auto merge of #119084 - aliemjay:perf-env-bounds, r=compiler-errorsbors-2/+12
fast path for declared_generic_bounds_from_env ~2% perf gain for diesel
2023-12-19Fix c_variadic flag and add opaque info to PassModeCelina G. Val-17/+53
We should expand the information in PassMode later.
2023-12-19Auto merge of #118842 - Nadrieril:librarify-further, r=compiler-errorsbors-473/+720
Make exhaustiveness usable outside of rustc With this PR, `rustc_pattern_analysis` compiles on stable (with the `stable` feature)! `rust-analyzer` will be able to use it to provide match-related diagnostics and refactors. Two questions: - Should I name the feature `nightly` instead of `rustc` for consistency with other crates? `rustc` makes more sense imo. - `typed-arena` is an optional dependency but tidy made me add it to the allow-list anyway. Can I avoid that somehow? r? `@compiler-errors`