17c8bb409SDavid Greene; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs
2*40760060SBjorn Pettersson; RUN: opt -passes=hotcoldsplit -hotcoldsplit-threshold=0 -S < %s | FileCheck %s
37c8bb409SDavid Greenetarget datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
47c8bb409SDavid Greenetarget triple = "x86_64-apple-macosx10.14.0"
57c8bb409SDavid Greene
6cd1bd6e5SJohannes Doerfert@G = external dso_local global i32, align 4
7cd1bd6e5SJohannes Doerfert
80628bea5SHans Wennborgdefine void @foo(i32) {
97c8bb409SDavid Greene  %2 = icmp eq i32 %0, 0
107c8bb409SDavid Greene  tail call void @_Z10sideeffectv()
117c8bb409SDavid Greene  br i1 %2, label %sink, label %exit
127c8bb409SDavid Greene
137c8bb409SDavid Greenesink:
147c8bb409SDavid Greene  tail call void @_Z10sideeffectv()
157c8bb409SDavid Greene  call void @llvm.trap()
167c8bb409SDavid Greene  unreachable
177c8bb409SDavid Greene
187c8bb409SDavid Greeneexit:
197c8bb409SDavid Greene  ret void
207c8bb409SDavid Greene}
217c8bb409SDavid Greene
220628bea5SHans Wennborgdefine void @bar(i32) {
237c8bb409SDavid Greene  %2 = icmp eq i32 %0, 0
247c8bb409SDavid Greene  tail call void @_Z10sideeffectv()
257c8bb409SDavid Greene  br i1 %2, label %sink, label %exit
267c8bb409SDavid Greene
277c8bb409SDavid Greenesink:
287c8bb409SDavid Greene  tail call void @_Z10sideeffectv()
297c8bb409SDavid Greene  call void @llvm.trap()
307c8bb409SDavid Greene  unreachable
317c8bb409SDavid Greene
327c8bb409SDavid Greeneexit:
337c8bb409SDavid Greene  ret void
347c8bb409SDavid Greene}
357c8bb409SDavid Greene
367c8bb409SDavid Greenedeclare void @llvm.trap() noreturn cold
377c8bb409SDavid Greenedeclare void @_Z10sideeffectv()
387c8bb409SDavid Greene; CHECK-LABEL: @foo(
397c8bb409SDavid Greene; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i32 [[TMP0:%.*]], 0
407c8bb409SDavid Greene; CHECK-NEXT:    tail call void @_Z10sideeffectv()
417c8bb409SDavid Greene; CHECK-NEXT:    br i1 [[TMP2]], label [[CODEREPL:%.*]], label [[EXIT:%.*]]
427c8bb409SDavid Greene; CHECK:       codeRepl:
43cd1bd6e5SJohannes Doerfert; CHECK-NEXT:    call void @foo.cold.1() #[[ATTR2:[0-9]+]]
447c8bb409SDavid Greene; CHECK-NEXT:    ret void
457c8bb409SDavid Greene; CHECK:       exit:
467c8bb409SDavid Greene; CHECK-NEXT:    ret void
477c8bb409SDavid Greene;
487c8bb409SDavid Greene;
497c8bb409SDavid Greene; CHECK-LABEL: @bar(
507c8bb409SDavid Greene; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i32 [[TMP0:%.*]], 0
517c8bb409SDavid Greene; CHECK-NEXT:    tail call void @_Z10sideeffectv()
527c8bb409SDavid Greene; CHECK-NEXT:    br i1 [[TMP2]], label [[CODEREPL:%.*]], label [[EXIT:%.*]]
537c8bb409SDavid Greene; CHECK:       codeRepl:
54cd1bd6e5SJohannes Doerfert; CHECK-NEXT:    call void @bar.cold.1() #[[ATTR2]]
557c8bb409SDavid Greene; CHECK-NEXT:    ret void
567c8bb409SDavid Greene; CHECK:       exit:
577c8bb409SDavid Greene; CHECK-NEXT:    ret void
587c8bb409SDavid Greene;
597c8bb409SDavid Greene;
607c8bb409SDavid Greene; CHECK-LABEL: @foo.cold.1(
617c8bb409SDavid Greene; CHECK-NEXT:  newFuncRoot:
627c8bb409SDavid Greene; CHECK-NEXT:    br label [[SINK:%.*]]
637c8bb409SDavid Greene; CHECK:       sink:
647c8bb409SDavid Greene; CHECK-NEXT:    tail call void @_Z10sideeffectv()
657c8bb409SDavid Greene; CHECK-NEXT:    call void @llvm.trap()
667c8bb409SDavid Greene; CHECK-NEXT:    unreachable
677c8bb409SDavid Greene;
687c8bb409SDavid Greene;
697c8bb409SDavid Greene; CHECK-LABEL: @bar.cold.1(
707c8bb409SDavid Greene; CHECK-NEXT:  newFuncRoot:
717c8bb409SDavid Greene; CHECK-NEXT:    br label [[SINK:%.*]]
727c8bb409SDavid Greene; CHECK:       sink:
737c8bb409SDavid Greene; CHECK-NEXT:    tail call void @_Z10sideeffectv()
747c8bb409SDavid Greene; CHECK-NEXT:    call void @llvm.trap()
757c8bb409SDavid Greene; CHECK-NEXT:    unreachable
767c8bb409SDavid Greene;
77