[clang] [CIR] Lower __builtin_memcpy/mempcpy to cir.libc.memcpy (PR #225845)

Mariya Podchishchaeva via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 24 04:26:03 PDT 2026


================
@@ -2376,7 +2376,24 @@ RValue CIRGenFunction::emitBuiltinExpr(const GlobalDecl &gd, unsigned builtinID,
   case Builtin::BImemcpy:
   case Builtin::BI__builtin_memcpy:
   case Builtin::BImempcpy:
-  case Builtin::BI__builtin_mempcpy:
+  case Builtin::BI__builtin_mempcpy: {
+    mlir::Location loc = getLoc(e->getSourceRange());
+    Address dest = emitPointerWithAlignment(e->getArg(0));
+    Address src = emitPointerWithAlignment(e->getArg(1));
+    mlir::Value sizeVal = emitScalarExpr(e->getArg(2));
+    Address destCast = dest.withElementType(builder, cgm.voidTy);
+    Address srcCast = src.withElementType(builder, cgm.voidTy);
+    assert(!cir::MissingFeatures::sanitizers());
+    builder.createMemCpy(loc, destCast, srcCast, sizeVal);
+    if (builtinID == Builtin::BImempcpy ||
----------------
Fznamznon wrote:

good catch, thanks, fixed

https://github.com/llvm/llvm-project/pull/225845


More information about the cfe-commits mailing list