diff options
| -rw-r--r-- | compiler/rustc_mir_dataflow/src/value_analysis.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/compiler/rustc_mir_dataflow/src/value_analysis.rs b/compiler/rustc_mir_dataflow/src/value_analysis.rs index 66e2a445fbc..02b92ed7a62 100644 --- a/compiler/rustc_mir_dataflow/src/value_analysis.rs +++ b/compiler/rustc_mir_dataflow/src/value_analysis.rs @@ -116,10 +116,19 @@ pub trait ValueAnalysis<'tcx> { fn super_intrinsic( &self, - _intrinsic: &NonDivergingIntrinsic<'tcx>, - _state: &mut State<Self::Value>, + intrinsic: &NonDivergingIntrinsic<'tcx>, + state: &mut State<Self::Value>, ) { - todo!(); + match intrinsic { + NonDivergingIntrinsic::Assume(..) => { + // Could use this, but ignoring it is sound. + } + NonDivergingIntrinsic::CopyNonOverlapping(CopyNonOverlapping { dst, .. }) => { + if let Some(place) = dst.place() { + state.flood(place.as_ref(), self.map()); + } + } + } } fn handle_assign( |
