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