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