xref: /llvm-project/llvm/test/Transforms/PGOProfile/memop_size_opt_zero.ll (revision 9ff36df5a4a7d52c51e950522870bb64912688d2)
1; Test to ensure the pgo memop optimization pass doesn't try to scale
2; up a value profile with a 0 count, which would lead to divide by 0.
3; RUN: opt < %s -passes=pgo-memop-opt -verify-dom-info -pgo-memop-count-threshold=1 -S | FileCheck %s --check-prefix=MEMOP_OPT
4
5target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
6target triple = "x86_64-unknown-linux-gnu"
7
8define void @foo(ptr %dst, ptr %src, i64 %conv) !prof !0 {
9  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false), !prof !1
10  ret void
11}
12
13; MEMOP_OPT: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false), !prof !1
14
15!0 = !{!"function_entry_count", i64 1}
16!1 = !{!"VP", i32 1, i64 0, i64 1, i64 0, i64 2, i64 0, i64 3, i64 0, i64 9, i64 0, i64 4, i64 0, i64 5, i64 0, i64 6, i64 0, i64 7, i64 0, i64 8, i64 0}
17
18declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1)
19