[llvm] [GlobalOpt] add support for CallInst and InvokeInst users (PR #221955)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 8 05:49:47 PDT 2026


================
@@ -0,0 +1,18 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -S -passes=globalopt < %s | FileCheck %s
+
+ at g0 = internal global ptr null, align 8
+
+declare void @llvm.memmove.p0.p0.i64(ptr, ptr, i64, i1)
+
+define i32 @main() {
+; CHECK-LABEL: define i32 @main() {
+; CHECK-NEXT:    store ptr @main, ptr @g0, align 8
+; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr @main, ptr @g0, i64 0, i1 false)
+; CHECK-NEXT:    ret i32 0
+;
+  store ptr @main, ptr @g0, align 8
+  call void @llvm.memmove.p0.p0.i64(ptr @main, ptr @g0, i64 0, i1 false)
----------------
nikic wrote:

```suggestion
  call void @llvm.memmove.p0.p0.i64(ptr %p, ptr @g0, i64 0, i1 false)
```
Copying to a function pointer is pretty weird... I'd rather add a `ptr %p` argument to main and use it here.

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


More information about the llvm-commits mailing list