[llvm] [PowerPC] using milicode call for strcpy instead of lib call (PR #174782)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 8 07:53:48 PST 2026


================
@@ -195,7 +195,47 @@ entry:
   %0 = load ptr, ptr %dest.addr, align 8
   %1 = load ptr, ptr %src.addr, align 8
   %call = call ptr @strcpy(ptr noundef %0, ptr noundef %1)
-  ret void
+  ret ptr %call
 }
 
 declare ptr @strcpy(ptr noundef, ptr noundef)
+
+define ptr @stpcpy_test(ptr noundef %dest, ptr noundef %src) nounwind {
+; CHECK-AIX-32-P9-LABEL: stpcpy_test:
+; CHECK-AIX-32-P9:       # %bb.0: # %entry
+; CHECK-AIX-32-P9-NEXT:    mflr r0
+; CHECK-AIX-32-P9-NEXT:    stwu r1, -80(r1)
+; CHECK-AIX-32-P9-NEXT:    stw r0, 88(r1)
+; CHECK-AIX-32-P9-NEXT:    stw r3, 72(r1)
+; CHECK-AIX-32-P9-NEXT:    stw r4, 64(r1)
+; CHECK-AIX-32-P9-NEXT:    bl .stpcpy[PR]
+; CHECK-AIX-32-P9-NEXT:    nop
+; CHECK-AIX-32-P9-NEXT:    addi r1, r1, 80
+; CHECK-AIX-32-P9-NEXT:    lwz r0, 8(r1)
+; CHECK-AIX-32-P9-NEXT:    mtlr r0
+; CHECK-AIX-32-P9-NEXT:    blr
+;
+; CHECK-LINUX32-P9-LABEL: stpcpy_test:
+; CHECK-LINUX32-P9:       # %bb.0: # %entry
+; CHECK-LINUX32-P9-NEXT:    mflr r0
+; CHECK-LINUX32-P9-NEXT:    stwu r1, -32(r1)
+; CHECK-LINUX32-P9-NEXT:    stw r0, 36(r1)
+; CHECK-LINUX32-P9-NEXT:    stw r3, 24(r1)
+; CHECK-LINUX32-P9-NEXT:    stw r4, 16(r1)
+; CHECK-LINUX32-P9-NEXT:    bl stpcpy
+; CHECK-LINUX32-P9-NEXT:    lwz r0, 36(r1)
+; CHECK-LINUX32-P9-NEXT:    addi r1, r1, 32
+; CHECK-LINUX32-P9-NEXT:    mtlr r0
+; CHECK-LINUX32-P9-NEXT:    blr
+entry:
+  %dest.addr = alloca ptr, align 8
+  %src.addr = alloca ptr, align 8
+  store ptr %dest, ptr %dest.addr, align 8
+  store ptr %src, ptr %src.addr, align 8
+  %0 = load ptr, ptr %dest.addr, align 8
+  %1 = load ptr, ptr %src.addr, align 8
----------------
arsenm wrote:

Don't need all of this 

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


More information about the llvm-commits mailing list