brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 3481d53 Raw
82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=mergefunc -S < %s | FileCheck %s3 4; This test makes sure that the mergefunc pass does not merge functions5; that have different nonnull assertions.6 7%1 = type ptr8 9define void @f1(ptr %0, ptr %1) {10; CHECK-LABEL: @f1(11; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 8, !nonnull !012; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 813; CHECK-NEXT:    ret void14;15  %3 = load ptr, ptr %1, align 8, !nonnull !016  store ptr %3, ptr %0, align 817  ret void18}19 20define void @f2(ptr %0, ptr %1) {21; CHECK-LABEL: @f2(22; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 823; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 824; CHECK-NEXT:    ret void25;26  %3 = load ptr, ptr %1, align 827  store ptr %3, ptr %0, align 828  ret void29}30 31define void @noundef(ptr %0, ptr %1) {32; CHECK-LABEL: @noundef(33; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 8, !noundef !034; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 835; CHECK-NEXT:    ret void36;37  %3 = load ptr, ptr %1, align 8, !noundef !038  store ptr %3, ptr %0, align 839  ret void40}41 42define void @noalias_1(ptr %0, ptr %1) {43; CHECK-LABEL: @noalias_1(44; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP1:%.*]], align 8, !noalias !145; CHECK-NEXT:    store ptr [[TMP3]], ptr [[TMP0:%.*]], align 8, !alias.scope !146; CHECK-NEXT:    ret void47;48  %3 = load ptr, ptr %1, align 8, !noalias !449  store ptr %3, ptr %0, align 8, !alias.scope !450  ret void51}52 53define void @noundef_dbg(ptr %0, ptr %1) {54; CHECK-LABEL: @noundef_dbg(55; CHECK-NEXT:    tail call void @noundef(ptr [[TMP0:%.*]], ptr [[TMP1:%.*]])56; CHECK-NEXT:    ret void57;58  %3 = load ptr, ptr %1, align 8, !noundef !0, !dbg !159  store ptr %3, ptr %0, align 860  ret void61}62 63; FIXME: This is merged despite different noalias metadata.64define void @noalias_2(ptr %0, ptr %1) {65; CHECK-LABEL: @noalias_2(66; CHECK-NEXT:    tail call void @noalias_1(ptr [[TMP0:%.*]], ptr [[TMP1:%.*]])67; CHECK-NEXT:    ret void68;69  %3 = load ptr, ptr %1, align 8, !noalias !770  store ptr %3, ptr %0, align 8, !alias.scope !771  ret void72}73 74!0 = !{}75!1 = !{}76!2 = !{!2}77!3 = !{!3, !2}78!4 = !{!3}79!5 = !{!5}80!6 = !{!6, !5}81!7 = !{!6}82