1
Fork 0

Change repeat element check into a match

This commit is contained in:
Oli Scherer 2025-01-08 15:00:25 +00:00
parent aec51564a5
commit 7ad45f1d2f

View file

@ -93,23 +93,26 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
return; return;
} }
if let OperandValue::Immediate(v) = cg_elem.val { match cg_elem.val {
let start = dest.val.llval; OperandValue::Immediate(v) => {
let size = bx.const_usize(dest.layout.size.bytes()); let start = dest.val.llval;
let size = bx.const_usize(dest.layout.size.bytes());
// Use llvm.memset.p0i8.* to initialize all zero arrays // Use llvm.memset.p0i8.* to initialize all zero arrays
if bx.cx().const_to_opt_u128(v, false) == Some(0) { if bx.cx().const_to_opt_u128(v, false) == Some(0) {
let fill = bx.cx().const_u8(0); let fill = bx.cx().const_u8(0);
bx.memset(start, fill, size, dest.val.align, MemFlags::empty()); bx.memset(start, fill, size, dest.val.align, MemFlags::empty());
return; return;
} }
// Use llvm.memset.p0i8.* to initialize byte arrays // Use llvm.memset.p0i8.* to initialize byte arrays
let v = bx.from_immediate(v); let v = bx.from_immediate(v);
if bx.cx().val_ty(v) == bx.cx().type_i8() { if bx.cx().val_ty(v) == bx.cx().type_i8() {
bx.memset(start, v, size, dest.val.align, MemFlags::empty()); bx.memset(start, v, size, dest.val.align, MemFlags::empty());
return; return;
}
} }
_ => (),
} }
let count = self let count = self