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