xref: /llvm-project/llvm/test/Transforms/PGOProfile/not_promote_ret_exit.ll (revision 9ff36df5a4a7d52c51e950522870bb64912688d2)
18658cf99SFangrui Song; RUN: opt < %s -passes=instrprof -S -do-counter-promotion=1 -skip-ret-exit-block=1 | FileCheck %s --check-prefixes=CHECK,SKIP
28658cf99SFangrui Song; RUN: opt < %s -passes=instrprof -S -do-counter-promotion=1 -skip-ret-exit-block=0 | FileCheck %s --check-prefixes=CHECK,NOTSKIP
331bd15c5SRong Xu
431bd15c5SRong Xu$__llvm_profile_raw_version = comdat any
531bd15c5SRong Xu
631bd15c5SRong Xu@bar = dso_local local_unnamed_addr global i32 0, align 4
731bd15c5SRong Xu@__llvm_profile_raw_version = constant i64 72057594037927941, comdat
831bd15c5SRong Xu@__profn_foo = private constant [3 x i8] c"foo"
931bd15c5SRong Xu
1031bd15c5SRong Xudefine dso_local void @foo(i32 %n)  {
1131bd15c5SRong Xuentry:
12*9ff36df5SFangrui Song  call void @llvm.instrprof.increment(ptr @__profn_foo, i64 29212902728, i32 2, i32 1)
1331bd15c5SRong Xu  br label %for.cond
1431bd15c5SRong Xu
1531bd15c5SRong Xufor.cond:
1631bd15c5SRong Xu  %i.0 = phi i32 [ 0, %entry ], [ %inc, %if.end ]
1731bd15c5SRong Xu  %cmp = icmp slt i32 %i.0, %n
18*9ff36df5SFangrui Song  %0 = load i32, ptr @bar, align 4
1931bd15c5SRong Xu  %tobool.not = icmp eq i32 %0, 0
2031bd15c5SRong Xu  %or.cond = and i1 %cmp, %tobool.not
2131bd15c5SRong Xu  br i1 %or.cond, label %if.end, label %cleanup
2231bd15c5SRong Xu
2331bd15c5SRong Xuif.end:
24*9ff36df5SFangrui Song  call void @llvm.instrprof.increment(ptr @__profn_foo, i64 29212902728, i32 2, i32 0)
2531bd15c5SRong Xu  call void (...) @bar2()
2631bd15c5SRong Xu  %inc = add nuw nsw i32 %i.0, 1
2731bd15c5SRong Xu  br label %for.cond
2831bd15c5SRong Xu
2931bd15c5SRong Xucleanup:
3031bd15c5SRong Xu; CHECK: cleanup:
3131bd15c5SRong Xu; SKIP-NOT:  %pgocount.promoted
3231bd15c5SRong Xu; NOTSKIP:  %pgocount.promoted
3331bd15c5SRong Xu  ret void
3431bd15c5SRong Xu}
3531bd15c5SRong Xu
3631bd15c5SRong Xudeclare dso_local void @bar2(...)
3731bd15c5SRong Xu
38*9ff36df5SFangrui Songdeclare void @llvm.instrprof.increment(ptr, i64, i32, i32)
39