[MergeFuncs] Add tests for D144682 (NFC)
authorDing Xiang Fei <dingxiangfei2009@protonmail.ch>
Thu, 23 Mar 2023 16:04:21 +0000 (17:04 +0100)
committerNikita Popov <npopov@redhat.com>
Thu, 23 Mar 2023 16:05:10 +0000 (17:05 +0100)
I forgot to git add this test when committing the change.

llvm/test/Transforms/MergeFunc/mergefunc-preserve-nonnull.ll [new file with mode: 0644]

diff --git a/llvm/test/Transforms/MergeFunc/mergefunc-preserve-nonnull.ll b/llvm/test/Transforms/MergeFunc/mergefunc-preserve-nonnull.ll
new file mode 100644 (file)
index 0000000..12bb0e8
--- /dev/null
@@ -0,0 +1,53 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -passes=mergefunc -S < %s | FileCheck %s
+
+; This test makes sure that the mergefunc pass does not merge functions
+; that have different nonnull assertions.
+
+%1 = type ptr
+
+define void @f1(ptr %0, ptr %1) {
+; CHECK-LABEL: @f1(
+; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 8, !nonnull !0
+; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 8
+; CHECK-NEXT:    ret void
+;
+  %3 = load ptr, ptr %1, align 8, !nonnull !0
+  store ptr %3, ptr %0, align 8
+  ret void
+}
+
+define void @f2(ptr %0, ptr %1) {
+; CHECK-LABEL: @f2(
+; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 8
+; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 8
+; CHECK-NEXT:    ret void
+;
+  %3 = load ptr, ptr %1, align 8
+  store ptr %3, ptr %0, align 8
+  ret void
+}
+
+define void @f3(ptr %0, ptr %1) {
+; CHECK-LABEL: @f3(
+; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 8, !noundef !0
+; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 8
+; CHECK-NEXT:    ret void
+;
+  %3 = load ptr, ptr %1, align 8, !noundef !0
+  store ptr %3, ptr %0, align 8
+  ret void
+}
+
+define void @f4(ptr %0, ptr %1) {
+; CHECK-LABEL: @f4(
+; CHECK-NEXT:    tail call void @f3(ptr [[TMP0:%.*]], ptr [[TMP1:%.*]])
+; CHECK-NEXT:    ret void
+;
+  %3 = load ptr, ptr %1, align 8, !noundef !0, !dbg !1
+  store ptr %3, ptr %0, align 8
+  ret void
+}
+
+!0 = !{}
+!1 = !{}