brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 1137b2a Raw
48 lines · plain
1; Make sure a profile that is generated from a function without an exit node2; does not cause an assertion. The profile consists of a non-zero count in a3; basic block and 0 counts in all succcessor blocks. Expect a warning.4 5; RUN: llvm-profdata merge %S/Inputs/maxcountzero.proftext -o %t.profdata6; RUN: opt < %s -passes=pgo-instr-use -pgo-instrument-entry=false -pgo-test-profile-file=%t.profdata -S 2>&1 | FileCheck %s7 8define void @bar(i32 noundef %s) {9entry:10  %cmp = icmp sgt i32 %s, 2011  br i1 %cmp, label %if.then, label %if.end12 13if.then:14  call void @exit(i32 noundef 1)15  unreachable16 17if.end:18  ret void19}20 21declare void @exit(i32 noundef)22 23define void @foo(i32 noundef %n) {24entry:25  %sum = alloca i32, align 426  store volatile i32 %n, ptr %sum, align 427  %sum.0.sum.0. = load volatile i32, ptr %sum, align 428  call void @bar(i32 noundef %sum.0.sum.0.)29  %cmp = icmp slt i32 %n, 1030  br i1 %cmp, label %if.then, label %if.end31 32if.then:33  %sum.0.sum.0.1 = load volatile i32, ptr %sum, align 434  call void @bar(i32 noundef %sum.0.sum.0.1)35  br label %if.end36 37if.end:38  br label %for.cond39 40for.cond:41  %sum.0.sum.0.2 = load volatile i32, ptr %sum, align 442  call void @bar(i32 noundef %sum.0.sum.0.2)43  br label %for.cond44}45 46; CHECK: warning:{{.*}}Profile in foo partially ignored47; CHECK: define48