diff options
| author | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2020-05-13 09:42:56 -0700 |
|---|---|---|
| committer | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2020-05-19 17:52:08 -0700 |
| commit | dd49c6ffd1eb2ce5919b7ce8788a55ecc4fe13b5 (patch) | |
| tree | 5075a83b66de88a3deaf92a681c8f73f603beb6a | |
| parent | def207e262a6a2ea0bc4b9607e2b8a7a952d0799 (diff) | |
| download | rust-dd49c6ffd1eb2ce5919b7ce8788a55ecc4fe13b5.tar.gz rust-dd49c6ffd1eb2ce5919b7ce8788a55ecc4fe13b5.zip | |
Document assumptions made in generator transform for analyses
The generator transform needs to inspect all possible dataflow states. This can be done with half the number of bitset union operations if we can assume that the relevant analyses do not use "before" effects.
| -rw-r--r-- | src/librustc_mir/dataflow/impls/borrowed_locals.rs | 3 | ||||
| -rw-r--r-- | src/librustc_mir/dataflow/impls/init_locals.rs | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/librustc_mir/dataflow/impls/borrowed_locals.rs b/src/librustc_mir/dataflow/impls/borrowed_locals.rs index f929b2ddde0..b61dc56407e 100644 --- a/src/librustc_mir/dataflow/impls/borrowed_locals.rs +++ b/src/librustc_mir/dataflow/impls/borrowed_locals.rs @@ -99,6 +99,9 @@ impl<K> GenKillAnalysis<'tcx> for MaybeBorrowedLocals<K> where K: BorrowAnalysisKind<'tcx>, { + // The generator transform relies on the fact that this analysis does **not** use "before" + // effects. + fn statement_effect( &self, trans: &mut impl GenKill<Self::Idx>, diff --git a/src/librustc_mir/dataflow/impls/init_locals.rs b/src/librustc_mir/dataflow/impls/init_locals.rs index 01cb794a2e0..726330b1f03 100644 --- a/src/librustc_mir/dataflow/impls/init_locals.rs +++ b/src/librustc_mir/dataflow/impls/init_locals.rs @@ -33,6 +33,9 @@ impl dataflow::AnalysisDomain<'tcx> for MaybeInitializedLocals { } impl dataflow::GenKillAnalysis<'tcx> for MaybeInitializedLocals { + // The generator transform relies on the fact that this analysis does **not** use "before" + // effects. + fn statement_effect( &self, trans: &mut impl GenKill<Self::Idx>, |
