Michael Goulet
05116c5c30
Only split by-ref/by-move futures for async closures
2024-03-19 16:59:23 -04:00
Guillaume Boisseau
1f7f4e1353
Rollup merge of #120733 - klensy:trait-const-fn, r=oli-obk
...
MirPass: make name more const
Continues #120161 , this time applied to `MirPass` instead of `MirLint`, locally shaves few (very few) instructions off.
r? ``@cjgillot``
2024-02-07 18:24:45 +01:00
klensy
c5e6df0c78
MirPass: make name more const
2024-02-07 11:38:28 +03:00
Michael Goulet
ca44416023
Fix drop shim for AsyncFnOnce closure, AsyncFnMut shim for AsyncFn closure
2024-02-06 02:22:58 +00:00
Michael Goulet
427896dd7e
Construct body for by-move coroutine closure output
2024-02-06 02:22:58 +00:00
Camille GILLOT
ad25f0eb2c
Make MIR pass name a compile-time constant.
2024-01-21 00:21:33 +00:00
Tomasz Miąsko
a084e063e6
Fix validation and linting of injected MIR
...
Reevaluate `body.should_skip()` after updating the MIR phase to ensure
that injected MIR is processed correctly.
Update a few custom MIR tests that were ill-formed for the injected
phase.
2024-01-04 23:06:42 +01:00
Tomasz Miąsko
8d77c2eab8
Don't validate / lint MIR before each pass
...
To avoid redundant work and verbose output in case of failures.
2023-12-28 15:32:54 +01:00
Tomasz Miąsko
7a246ddd8e
Add pass to identify undefined or erroneous behaviour
2023-12-21 12:58:39 +01:00
Nilstrieb
21a870515b
Fix clippy::needless_borrow
in the compiler
...
`x clippy compiler -Aclippy::all -Wclippy::needless_borrow --fix`.
Then I had to remove a few unnecessary parens and muts that were exposed
now.
2023-11-21 20:13:40 +01:00
Camille GILLOT
c1c5a1d69a
Only check in a single place if a pass is enabled.
2023-10-18 16:59:23 +00:00
John Kåre Alsaker
9624c30965
Generate MIR pass names for profiling on the fly and pass the body DefId as argument
2023-09-13 13:41:19 +02:00
John Kåre Alsaker
f742d88326
Remove verbose_generic_activity_with_arg
2023-09-10 17:47:16 +02: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
addc72799a
Profile MIR passes.
2023-05-15 20:27:12 +00:00
Oli Scherer
c7e94b0efd
Use zero based indexing for pass_count
2022-12-02 15:55:24 +00:00
Oli Scherer
80dcc52934
Remove an impl and replace its only use with a method call
2022-12-02 15:43:36 +00:00
Oli Scherer
4f593ce5d8
Create format_args
as late as possible
2022-12-01 08:49:51 +00:00
Oli Scherer
66797fa54f
Remove needless Cow
2022-12-01 08:38:47 +00:00
Oli Scherer
c2166ec628
Don't go through the formatting infrastructure just to get the name of a phase
2022-12-01 08:31:54 +00:00
Jakob Degen
ba359d8a51
Add support for custom MIR parsing
2022-11-08 23:13:15 -08:00
Jakob Degen
be2401b8bf
Split phase change from MirPass
2022-10-23 14:18:09 -07:00
Ikko Ashimine
9cef1ee113
Fix typo in pass_manager.rs
...
overriden -> overridden
2022-09-07 19:32:28 +09:00
Jakob Degen
d56751cc34
Simplify pass manager's run_passes
logic
2022-08-30 01:40:16 -07:00
Jakob Degen
aad14c701e
Refactor MIR phases
2022-08-30 01:40:14 -07:00
Joshua Nelson
3c9765cff1
Rename debugging_opts
to unstable_opts
...
This is no longer used only for debugging options (e.g. `-Zoutput-width`, `-Zallow-features`).
Rename it to be more clear.
2022-07-13 17:47:06 -05:00
Jakob Degen
4534188d4b
Address nits
2022-04-16 18:44:27 -04:00
Jakob Degen
f280a839a7
Add support for MIR opt unit tests
2022-04-16 18:23:59 -04:00
Jakob Degen
fe40240e4d
Clarify which kinds of MIR are allowed during which phases.
...
This enhances documentation with these details and extends the validator to check these requirements
more thoroughly. As a part of this, we add a new `Deaggregated` phase, and rename other phases so
that their names more naturally correspond to what they represent.
2022-03-23 18:34:08 -04:00
Scott McMurray
a124924061
Remove in_band_lifetimes
from rustc_mir_transform
...
This one is a heavy `'tcx` user.
Two interesting ones:
This one had the `'tcx` declared on the function, despite the trait taking a `'tcx`:
```diff
-impl Visitor<'_> for UsedLocals {
+impl<'tcx> Visitor<'tcx> for UsedLocals {
fn visit_statement(&mut self, statement: &Statement<'tcx>, location: Location) {
```
This one use in-band for one, and underscore for the other:
```diff
-pub fn remove_dead_blocks(tcx: TyCtxt<'tcx>, body: &mut Body<'_>) {
+pub fn remove_dead_blocks<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
```
2021-12-07 21:04:40 -08:00
Dylan MacKenzie
dc5feeb1fa
Don't "simplify" during optimizations if optimizations are disabled
2021-12-02 17:31:38 -08:00
Dylan MacKenzie
c1a501b131
Implement a pass manager
2021-12-02 17:31:38 -08:00