xref: /llvm-project/llvm/test/Transforms/SampleProfile/pseudo-probe-cse.ll (revision c384b20b55c730f2382013d18b41269f04757873)
1*c384b20bSArthur Eubanks; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
2098a0d8fSHongtao Yu
3098a0d8fSHongtao Yudefine i16 @f1() readonly {
4098a0d8fSHongtao Yu  ret i16 0
5098a0d8fSHongtao Yu}
6098a0d8fSHongtao Yu
7098a0d8fSHongtao Yudeclare void @f2()
8098a0d8fSHongtao Yu
9098a0d8fSHongtao Yu; Check that EarlyCSE correctly handles pseudo probes that don't have
10098a0d8fSHongtao Yu; a MemoryAccess.
11098a0d8fSHongtao Yu
12098a0d8fSHongtao Yudefine void @f3() {
13098a0d8fSHongtao Yu; CHECK-LABEL: @f3(
14098a0d8fSHongtao Yu; CHECK-NEXT:    [[CALL1:%.*]] = call i16 @f1()
15098a0d8fSHongtao Yu; CHECK-NEXT:    call void @llvm.pseudoprobe
16098a0d8fSHongtao Yu; CHECK-NEXT:    ret void
17098a0d8fSHongtao Yu;
18098a0d8fSHongtao Yu  %call1 = call i16 @f1()
19098a0d8fSHongtao Yu  call void @llvm.pseudoprobe(i64 6878943695821059507, i64 9, i32 0, i64 -1)
20098a0d8fSHongtao Yu  %call2 = call i16 @f1()
21098a0d8fSHongtao Yu  ret void
22098a0d8fSHongtao Yu}
23098a0d8fSHongtao Yu
24098a0d8fSHongtao Yu
25098a0d8fSHongtao Yu; Function Attrs: inaccessiblememonly nounwind willreturn
26098a0d8fSHongtao Yudeclare void @llvm.pseudoprobe(i64, i64, i32, i64) #0
27098a0d8fSHongtao Yu
28098a0d8fSHongtao Yuattributes #0 = { inaccessiblememonly nounwind willreturn }