; Check that flattened profile lowering handles cold subgraphs that end in "unreachable" ; RUN: split-file %s %t ; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata ; RUN: opt -passes=ctx-prof-flatten %t/1234.ll -use-ctx-profile=%t/profile.ctxprofdata -S -o - | FileCheck %s ; CHECK-LABEL: entry: ; CHECK: br i1 %t, label %yes, label %no, !prof ![[C1:[0-9]+]] ; CHECK-LABEL: no: ; CHECK-NOT: !prof ; CHECK-LABEL: no1: ; CHECK-NOT: !prof ; CHECK-LABEL: no2: ; CHECK-NOT: !prof ; CHECK-LABEL: yes: ; CHECK: br i1 %t3, label %yes1, label %yes2, !prof ![[C1]] ; CHECK-NOT: !prof ; CHECK: ![[C1]] = !{!"branch_weights", i32 72, i32 0} ;--- 1234.ll define void @f1(i32 %cond) !guid !0 { entry: call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 0) %t = icmp eq i32 %cond, 1 br i1 %t, label %yes, label %no no: %t2 = icmp eq i32 %cond, 2 br i1 %t2, label %no1, label %no2 no1: unreachable no2: call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 1) unreachable yes: %t3 = icmp eq i32 %cond, 3 br i1 %t3, label %yes1, label %yes2 yes1: br label %exit yes2: call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 2) %t4 = icmp eq i32 %cond, 4 br i1 %t4, label %yes3, label %yes4 yes3: br label %exit yes4: call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 3) unreachable exit: ret void } !0 = !{i64 1234} ;--- profile.yaml Contexts: - Guid: 1234 TotalRootEntryCount: 12 Counters: [6,0,0,0]