From eab77320e6cad8a42b05989c17bdc8a9609d83ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jannis=20Christopher=20K=C3=B6hl?= Date: Wed, 5 Oct 2022 20:19:11 +0200 Subject: [PATCH] Handle NonDivergingIntrinsic and CopyNonOverlapping --- compiler/rustc_mir_dataflow/src/value_analysis.rs | 15 ++++++++++++--- 1 file 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 66e2a445fbcd..02b92ed7a620 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, + intrinsic: &NonDivergingIntrinsic<'tcx>, + state: &mut State, ) { - 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(