@@ -35,7 +35,7 @@ use crate::attributes;
35
35
use crate :: common:: Funclet ;
36
36
use crate :: context:: { CodegenCx , FullCx , GenericCx , SCx } ;
37
37
use crate :: llvm:: {
38
- self , AtomicOrdering , AtomicRmwBinOp , BasicBlock , False , GEPNoWrapFlags , Metadata , True ,
38
+ self , AtomicOrdering , AtomicRmwBinOp , BasicBlock , False , GEPNoWrapFlags , Metadata , True , PreserveCheriTags
39
39
} ;
40
40
use crate :: type_:: Type ;
41
41
use crate :: type_of:: LayoutLlvmExt ;
@@ -1106,9 +1106,11 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1106
1106
src_align : Align ,
1107
1107
size : & ' ll Value ,
1108
1108
flags : MemFlags ,
1109
+ preserve_tags : rustc_codegen_ssa:: common:: PreserveCheriTags ,
1109
1110
) {
1110
1111
assert ! ( !flags. contains( MemFlags :: NONTEMPORAL ) , "non-temporal memcpy not supported" ) ;
1111
1112
let size = self . intcast ( size, self . type_isize ( ) , false ) ;
1113
+ let preserve_tags = PreserveCheriTags :: from_generic ( preserve_tags) ;
1112
1114
let is_volatile = flags. contains ( MemFlags :: VOLATILE ) ;
1113
1115
unsafe {
1114
1116
llvm:: LLVMRustBuildMemCpy (
@@ -1118,6 +1120,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1118
1120
src,
1119
1121
src_align. bytes ( ) as c_uint ,
1120
1122
size,
1123
+ preserve_tags,
1121
1124
is_volatile,
1122
1125
) ;
1123
1126
}
@@ -1131,9 +1134,11 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1131
1134
src_align : Align ,
1132
1135
size : & ' ll Value ,
1133
1136
flags : MemFlags ,
1137
+ preserve_tags : rustc_codegen_ssa:: common:: PreserveCheriTags ,
1134
1138
) {
1135
1139
assert ! ( !flags. contains( MemFlags :: NONTEMPORAL ) , "non-temporal memmove not supported" ) ;
1136
1140
let size = self . intcast ( size, self . type_isize ( ) , false ) ;
1141
+ let preserve_tags = PreserveCheriTags :: from_generic ( preserve_tags) ;
1137
1142
let is_volatile = flags. contains ( MemFlags :: VOLATILE ) ;
1138
1143
unsafe {
1139
1144
llvm:: LLVMRustBuildMemMove (
@@ -1143,6 +1148,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1143
1148
src,
1144
1149
src_align. bytes ( ) as c_uint ,
1145
1150
size,
1151
+ preserve_tags,
1146
1152
is_volatile,
1147
1153
) ;
1148
1154
}
0 commit comments