about summary refs log tree commit diff
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
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.
-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>,