about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/src/mir
diff options
context:
space:
mode:
authorkadmin <julianknodt@gmail.com>2021-01-23 08:57:04 +0000
committerkadmin <julianknodt@gmail.com>2021-03-09 16:54:14 +0000
commit217ff6b7ea5ca80b01ee1436914a061ed190d8a8 (patch)
tree4cf4cc9a0bca8791b41ccaf47844ec2c85af5f9b /compiler/rustc_codegen_ssa/src/mir
parentd4ae9ff82664a1d7473e32d59819c208efce48c7 (diff)
downloadrust-217ff6b7ea5ca80b01ee1436914a061ed190d8a8.tar.gz
rust-217ff6b7ea5ca80b01ee1436914a061ed190d8a8.zip
Switch to changing cp_non_overlap in tform
It was suggested to lower this in MIR instead of ssa, so do that instead.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/mir')
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/block.rs20
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/intrinsic.rs6
2 files changed, 2 insertions, 24 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/block.rs b/compiler/rustc_codegen_ssa/src/mir/block.rs
index 1150d4d7348..e148ed7ad3b 100644
--- a/compiler/rustc_codegen_ssa/src/mir/block.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/block.rs
@@ -643,23 +643,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
 
         match intrinsic {
             None | Some(sym::drop_in_place) => {}
-            Some(sym::copy_nonoverlapping) => {
-                bx = self.codegen_statement(
-                    bx,
-                    &rustc_middle::mir::Statement {
-                        source_info: rustc_middle::mir::SourceInfo::outermost(span),
-                        kind: rustc_middle::mir::StatementKind::CopyNonOverlapping(
-                            box rustc_middle::mir::CopyNonOverlapping {
-                                src: args[0].clone(),
-                                dst: args[1].clone(),
-                                count: args[2].clone(),
-                            },
-                        ),
-                    },
-                );
-                helper.funclet_br(self, &mut bx, destination.unwrap().1);
-                return;
-            }
+            Some(sym::copy_nonoverlapping) => unreachable!(),
             Some(intrinsic) => {
                 let dest = match ret_dest {
                     _ if fn_abi.ret.is_indirect() => llargs[0],
@@ -702,7 +686,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
                     })
                     .collect();
 
-                self.codegen_intrinsic_call(
+                Self::codegen_intrinsic_call(
                     &mut bx,
                     *instance.as_ref().unwrap(),
                     &fn_abi,
diff --git a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs
index 00fc5b66061..8502309b90e 100644
--- a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs
@@ -49,7 +49,6 @@ fn memset_intrinsic<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
 
 impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
     pub fn codegen_intrinsic_call(
-        &self,
         bx: &mut Bx,
         instance: ty::Instance<'tcx>,
         fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
@@ -126,11 +125,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
                 let offset = args[1].immediate();
                 bx.gep(ptr, &[offset])
             }
-
-            sym::copy_nonoverlapping => {
-                // handled explicitly in compiler/rustc_codegen_ssa/src/mir/block.rs
-                unreachable!();
-            }
             sym::copy => {
                 copy_intrinsic(
                     bx,