Matthias Krüger
19d3827efe
Rollup merge of #122937 - Zalathar:unbox, r=oli-obk
...
Unbox and unwrap the contents of `StatementKind::Coverage`
The payload of coverage statements was historically a structure with several fields, so it was boxed to avoid bloating `StatementKind`.
Now that the payload is a single relatively-small enum, we can replace `Box<Coverage>` with just `CoverageKind`.
This patch also adds a size assertion for `StatementKind`, to avoid accidentally bloating it in the future.
``@rustbot`` label +A-code-coverage
2024-03-24 17:08:16 +01:00
Matthias Krüger
3d9ee88ea2
Rollup merge of #122168 - compiler-errors:inline-coroutine-body-validation, r=cjgillot
...
Fix validation on substituted callee bodies in MIR inliner
When inlining a coroutine, we will substitute the MIR body with the args of the call. There is code in the MIR validator that attempts to prevent query cycles, and will use the coroutine body directly when it detects that's the body that's being validated. That means that when inlining a coroutine body that has been substituted, it may no longer be parameterized over the original args of the coroutine, which will lead to substitution ICEs.
Fixes #119064
2024-03-24 01:05:51 +01:00
Ralf Jung
6177530420
refactor check_{lang,library}_ub: use a single intrinsic, put policy into library
2024-03-23 18:45:05 +01:00
Zalathar
ab92699f4a
Unbox and unwrap the contents of StatementKind::Coverage
...
The payload of coverage statements was historically a structure with several
fields, so it was boxed to avoid bloating `StatementKind`.
Now that the payload is a single relatively-small enum, we can replace
`Box<Coverage>` with just `CoverageKind`.
This patch also adds a size assertion for `StatementKind`, to avoid
accidentally bloating it in the future.
2024-03-23 22:05:11 +11:00
Michael Goulet
78ebb939c1
Fix validation on substituted callee bodies in MIR inliner
2024-03-22 17:17:03 -04:00
Zalathar
91aae58568
coverage: Clean up marker statements that aren't needed later
...
Some of the marker statements used by coverage are added during MIR building
for use by the InstrumentCoverage pass (during analysis), and are not needed
afterwards.
2024-03-22 20:20:41 +11:00
Ralf Jung
c96fa5e143
add_retag: ensure box-to-raw-ptr casts are preserved for Miri
2024-03-18 10:32:25 +01:00
Ben Kimock
5a93a59fd5
Distinguish between library and lang UB in assert_unsafe_precondition
2024-03-08 18:53:58 -05:00
Gary Guo
b044aaa905
Change InlineAsm to allow multiple targets instead
2024-02-24 18:50:09 +00:00
Nicholas Nethercote
010f3944e0
Convert delayed_bug
s to bug
s.
...
I have a suspicion that quite a few delayed bug paths are impossible to
reach, so I did an experiment.
I converted every `delayed_bug` to a `bug`, ran the full test suite,
then converted back every `bug` that was hit. A surprising number were
never hit.
The next commit will convert some more back, based on human judgment.
2024-02-21 10:20:05 +11:00
Michael Goulet
e6a21f549e
Enforce coroutine-closure layouts are identical
2024-02-15 01:18:09 +00:00
Nicholas Nethercote
05849e8c2f
Use fewer delayed bugs.
...
For some cases where it's clear that an error has already occurred,
e.g.:
- there's a comment stating exactly that, or
- things like HIR lowering, where we are lowering an error kind
The commit also tweaks some comments around delayed bug sites.
2024-02-14 20:30:37 +11:00
bors
e28fae52d9
Auto merge of #120843 - matthiaskrgr:rollup-med37z5, r=matthiaskrgr
...
Rollup of 8 pull requests
Successful merges:
- #113671 (Make privacy visitor use types more (instead of HIR))
- #120308 (core/time: avoid divisions in Duration::new)
- #120693 (Invert diagnostic lints.)
- #120704 (A drive-by rewrite of `give_region_a_name()`)
- #120809 (Use `transmute_unchecked` in `NonZero::new`.)
- #120817 (Fix more `ty::Error` ICEs in MIR passes)
- #120828 (Fix `ErrorGuaranteed` unsoundness with stash/steal.)
- #120831 (Startup objects disappearing from sysroot)
r? `@ghost`
`@rustbot` modify labels: rollup
2024-02-09 15:34:48 +00:00
Michael Goulet
e32c1ddc52
Don't ice in validation when error body is created
2024-02-09 00:40:43 +00:00
Ben Kimock
8836ac5758
Add a new debug_assertions instrinsic (compiler)
...
And in clippy
2024-02-08 11:49:08 -05:00
Michael Goulet
a82bae2172
Teach typeck/borrowck/solvers how to deal with async closures
2024-02-06 02:22:58 +00:00
Michael Goulet
c567eddec2
Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs
2024-02-06 02:22:58 +00:00
Michael Goulet
866364cc5d
Normalize field types before checking validity
2024-01-26 18:36:15 +00:00
Michael Goulet
f26f52c42b
Validate AggregateKind types in MIR
2024-01-19 19:47:03 +00:00
Martin Nordholts
16ba56c242
compiler: Lower fn call arg spans down to MIR
...
To enable improved accuracy of diagnostics in upcoming commits.
2024-01-15 19:07:11 +01:00
Tomasz Miąsko
df116ec246
Migrate memory overlap check from validator to lint
...
The check attempts to identify potential undefined behaviour, rather
than whether MIR is well-formed. It belongs in the lint not validator.
2024-01-04 23:32:22 +01:00
Michael Goulet
fcb42b42d6
Remove movability from TyKind::Coroutine
2023-12-28 16:35:01 +00:00
Nicholas Nethercote
99472c7049
Remove Session
methods that duplicate DiagCtxt
methods.
...
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier
access.
2023-12-24 08:05:28 +11:00
Tomasz Miąsko
7a246ddd8e
Add pass to identify undefined or erroneous behaviour
2023-12-21 12:58:39 +01:00
Nicholas Nethercote
09af8a667c
Rename Session::span_diagnostic
as Session::dcx
.
2023-12-18 16:06:21 +11:00
Nicholas Nethercote
5d1d384443
Rename HandlerInner::delay_span_bug
as HandlerInner::span_delayed_bug
.
...
Because the corresponding `Level` is `DelayedBug` and `span_delayed_bug`
follows the pattern used everywhere else: `span_err`, `span_warning`,
etc.
2023-12-02 09:01:19 +11:00
Tomasz Miąsko
cef892ebab
Validate there are no critical call edges in optimized MIR
2023-11-22 01:56:31 +01:00
lcnr
992d93f687
rename BorrowKind::Shallow
to Fake
...
also adds some comments
2023-11-08 22:55:28 +01:00
George Bateman
d995bd61e7
Enums in offset_of: update based on est31, scottmcm & llogiq review
2023-10-31 23:26:02 +00:00
George Bateman
e936416a8d
Support enum variants in offset_of!
2023-10-31 23:25:54 +00:00
Oli Scherer
e96ce20b34
s/generator/coroutine/
2023-10-20 21:14:01 +00:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +00:00
ouz-a
6f0c5ee2d4
change is_subtype to relate_types
2023-10-02 23:39:45 +03:00
ouz-a
cd7f471931
Add docs, remove code, change subtyper code
2023-10-02 23:39:44 +03:00
ouz-a
3148e6a993
subtyping_projections
2023-10-02 23:37:49 +03:00
Oli Scherer
0031cf7c7e
Add a mir validation check to prevent OpaqueCast after analysis passes finish
2023-09-28 16:13:38 +00:00
lcnr
3c52a3e280
subst -> instantiate
2023-09-26 09:37:55 +02:00
Camille GILLOT
26c48e6f95
Refactor how MIR represents composite debuginfo.
2023-09-05 17:20:07 +00:00
Matthias Krüger
88b476c388
Rollup merge of #115164 - RalfJung:no-in-place-packed, r=b-naber
...
MIR validation: reject in-place argument/return for packed fields
As discussed [here](https://rust-lang.zulipchat.com/#narrow/stream/136281-t-opsem/topic/Packed.20fields.20and.20in-place.20function.20argument.2Freturn.20passing ).
2023-08-28 19:53:54 +02:00
Ralf Jung
4c53783f3c
when terminating during unwinding, show the reason why
2023-08-24 13:28:26 +02:00
Ralf Jung
739144fc5b
MIR validation: reject in-place argument/return for packed fields
2023-08-24 11:38:19 +02:00
Ralf Jung
818ec8e23a
give some unwind-related terminators a more clear name
2023-08-20 15:52:38 +02:00
Gary Guo
eb4d6d9ff7
Add missing instantiation of generator ty in validator
2023-08-18 16:40:10 +01:00
Gary Guo
56b933763e
Add MIR validation for unwind out from nounwind functions
2023-08-18 13:51:42 +01:00
Camille GILLOT
933b618360
Revert "Implement references VarDebugInfo."
...
This reverts commit 2ec0071913
.
2023-08-17 17:02:04 +00:00
Michael Goulet
99969d282b
Use upvar_tys in more places, make it a list
2023-08-01 23:19:31 +00:00
Matthias Krüger
c64ef5e070
inline format!() args from rustc_codegen_llvm to the end (4)
...
r? @WaffleLapkin
2023-07-25 23:20:28 +02:00
Camille GILLOT
b6cd7006e0
Reuse MIR validator for inliner.
2023-07-21 13:58:33 +00:00
Camille GILLOT
2ef2ac0b51
Make type validation buffer errors.
2023-07-21 13:54:34 +00:00
Camille GILLOT
030589d488
Separate CFG validation from type validation.
2023-07-21 13:54:34 +00:00