1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs
2; RUN: opt -hotcoldsplit -hotcoldsplit-threshold=0 -S < %s | FileCheck %s
3target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
4target triple = "x86_64-apple-macosx10.14.0"
5
6define void @foo(i32) {
7  %2 = icmp eq i32 %0, 0
8  tail call void @_Z10sideeffectv()
9  br i1 %2, label %sink, label %exit
10
11sink:
12  tail call void @_Z10sideeffectv()
13  call void @llvm.trap()
14  unreachable
15
16exit:
17  ret void
18}
19
20define void @bar(i32) {
21  %2 = icmp eq i32 %0, 0
22  tail call void @_Z10sideeffectv()
23  br i1 %2, label %sink, label %exit
24
25sink:
26  tail call void @_Z10sideeffectv()
27  call void @llvm.trap()
28  unreachable
29
30exit:
31  ret void
32}
33
34declare void @llvm.trap() noreturn cold
35declare void @_Z10sideeffectv()
36; CHECK-LABEL: @foo(
37; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i32 [[TMP0:%.*]], 0
38; CHECK-NEXT:    tail call void @_Z10sideeffectv()
39; CHECK-NEXT:    br i1 [[TMP2]], label [[CODEREPL:%.*]], label [[EXIT:%.*]]
40; CHECK:       codeRepl:
41; CHECK-NEXT:    call void @foo.cold.1() [[ATTR2:#.*]]
42; CHECK-NEXT:    ret void
43; CHECK:       exit:
44; CHECK-NEXT:    ret void
45;
46;
47; CHECK-LABEL: @bar(
48; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i32 [[TMP0:%.*]], 0
49; CHECK-NEXT:    tail call void @_Z10sideeffectv()
50; CHECK-NEXT:    br i1 [[TMP2]], label [[CODEREPL:%.*]], label [[EXIT:%.*]]
51; CHECK:       codeRepl:
52; CHECK-NEXT:    call void @bar.cold.1() [[ATTR2]]
53; CHECK-NEXT:    ret void
54; CHECK:       exit:
55; CHECK-NEXT:    ret void
56;
57;
58; CHECK-LABEL: @foo.cold.1(
59; CHECK-NEXT:  newFuncRoot:
60; CHECK-NEXT:    br label [[SINK:%.*]]
61; CHECK:       sink:
62; CHECK-NEXT:    tail call void @_Z10sideeffectv()
63; CHECK-NEXT:    call void @llvm.trap()
64; CHECK-NEXT:    unreachable
65;
66;
67; CHECK-LABEL: @bar.cold.1(
68; CHECK-NEXT:  newFuncRoot:
69; CHECK-NEXT:    br label [[SINK:%.*]]
70; CHECK:       sink:
71; CHECK-NEXT:    tail call void @_Z10sideeffectv()
72; CHECK-NEXT:    call void @llvm.trap()
73; CHECK-NEXT:    unreachable
74;
75