@@ -35,7 +35,7 @@ use crate::attributes;
3535use crate :: common:: Funclet ;
3636use crate :: context:: { CodegenCx , FullCx , GenericCx , SCx } ;
3737use crate :: llvm:: {
38- self , AtomicOrdering , AtomicRmwBinOp , BasicBlock , False , GEPNoWrapFlags , Metadata , True ,
38+ self , AtomicOrdering , AtomicRmwBinOp , BasicBlock , False , GEPNoWrapFlags , Metadata , True , PreserveCheriTags
3939} ;
4040use crate :: type_:: Type ;
4141use crate :: type_of:: LayoutLlvmExt ;
@@ -1106,9 +1106,11 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
11061106 src_align : Align ,
11071107 size : & ' ll Value ,
11081108 flags : MemFlags ,
1109+ preserve_tags : rustc_codegen_ssa:: common:: PreserveCheriTags ,
11091110 ) {
11101111 assert ! ( !flags. contains( MemFlags :: NONTEMPORAL ) , "non-temporal memcpy not supported" ) ;
11111112 let size = self . intcast ( size, self . type_isize ( ) , false ) ;
1113+ let preserve_tags = PreserveCheriTags :: from_generic ( preserve_tags) ;
11121114 let is_volatile = flags. contains ( MemFlags :: VOLATILE ) ;
11131115 unsafe {
11141116 llvm:: LLVMRustBuildMemCpy (
@@ -1118,6 +1120,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
11181120 src,
11191121 src_align. bytes ( ) as c_uint ,
11201122 size,
1123+ preserve_tags,
11211124 is_volatile,
11221125 ) ;
11231126 }
@@ -1131,9 +1134,11 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
11311134 src_align : Align ,
11321135 size : & ' ll Value ,
11331136 flags : MemFlags ,
1137+ preserve_tags : rustc_codegen_ssa:: common:: PreserveCheriTags ,
11341138 ) {
11351139 assert ! ( !flags. contains( MemFlags :: NONTEMPORAL ) , "non-temporal memmove not supported" ) ;
11361140 let size = self . intcast ( size, self . type_isize ( ) , false ) ;
1141+ let preserve_tags = PreserveCheriTags :: from_generic ( preserve_tags) ;
11371142 let is_volatile = flags. contains ( MemFlags :: VOLATILE ) ;
11381143 unsafe {
11391144 llvm:: LLVMRustBuildMemMove (
@@ -1143,6 +1148,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
11431148 src,
11441149 src_align. bytes ( ) as c_uint ,
11451150 size,
1151+ preserve_tags,
11461152 is_volatile,
11471153 ) ;
11481154 }
0 commit comments