about summary refs log tree commit diff
path: root/src/librustc_mir
diff options
context:
space:
mode:
authorDylan MacKenzie <ecstaticmorse@gmail.com>2020-05-13 09:42:56 -0700
committerDylan MacKenzie <ecstaticmorse@gmail.com>2020-05-19 17:52:08 -0700
commitdd49c6ffd1eb2ce5919b7ce8788a55ecc4fe13b5 (patch)
tree5075a83b66de88a3deaf92a681c8f73f603beb6a /src/librustc_mir
parentdef207e262a6a2ea0bc4b9607e2b8a7a952d0799 (diff)
downloadrust-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.
Diffstat (limited to 'src/librustc_mir')
-rw-r--r--src/librustc_mir/dataflow/impls/borrowed_locals.rs3
-rw-r--r--src/librustc_mir/dataflow/impls/init_locals.rs3
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>,