diff options
| author | Jannis Christopher Köhl <mail@koehl.dev> | 2022-10-05 20:19:11 +0200 |
|---|---|---|
| committer | Jannis Christopher Köhl <mail@koehl.dev> | 2022-11-07 10:35:19 +0100 |
| commit | eab77320e6cad8a42b05989c17bdc8a9609d83ac (patch) | |
| tree | 8ff82ccc09b1d3ec6cc615db1d87f3c18f1c076b | |
| parent | f99950f6aeb78bd271af3f99cbad03613f7b93f7 (diff) | |
| download | rust-eab77320e6cad8a42b05989c17bdc8a9609d83ac.tar.gz rust-eab77320e6cad8a42b05989c17bdc8a9609d83ac.zip | |
Handle NonDivergingIntrinsic and CopyNonOverlapping
| -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( |
