about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/lower_intrinsics.rs
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-06-30 08:16:05 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-09-06 14:18:32 +0000
commit3f076451202409bca6262d7b5bf9a4fee3d18fb9 (patch)
treecaa5cf3deff3fb465f57d9a2a01641048bd60d1a /compiler/rustc_mir_transform/src/lower_intrinsics.rs
parent3c7278846102bb829c9a789e91bc43f0ed612943 (diff)
downloadrust-3f076451202409bca6262d7b5bf9a4fee3d18fb9.tar.gz
rust-3f076451202409bca6262d7b5bf9a4fee3d18fb9.zip
Lower the assume intrinsic to a MIR statement
Diffstat (limited to 'compiler/rustc_mir_transform/src/lower_intrinsics.rs')
-rw-r--r--compiler/rustc_mir_transform/src/lower_intrinsics.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/lower_intrinsics.rs b/compiler/rustc_mir_transform/src/lower_intrinsics.rs
index b7ba616510c..652c344ee14 100644
--- a/compiler/rustc_mir_transform/src/lower_intrinsics.rs
+++ b/compiler/rustc_mir_transform/src/lower_intrinsics.rs
@@ -62,6 +62,17 @@ impl<'tcx> MirPass<'tcx> for LowerIntrinsics {
                         drop(args);
                         terminator.kind = TerminatorKind::Goto { target };
                     }
+                    sym::assume => {
+                        let target = target.unwrap();
+                        let mut args = args.drain(..);
+                        block.statements.push(Statement {
+                            source_info: terminator.source_info,
+                            kind: StatementKind::Assume(Box::new(args.next().unwrap())),
+                        });
+                        assert_eq!(args.next(), None, "Extra argument for assume intrinsic");
+                        drop(args);
+                        terminator.kind = TerminatorKind::Goto { target };
+                    }
                     sym::wrapping_add | sym::wrapping_sub | sym::wrapping_mul => {
                         if let Some(target) = *target {
                             let lhs;