1; RUN: opt -S -passes=hotcoldsplit -hotcoldsplit-threshold=0 < %s | FileCheck %s 2 3; Source: 4; 5; extern __attribute__((cold)) void sink(); 6; extern void sideeffect(int); 7; void foo(int cond1, int cond2) { 8; if (cond1) { 9; if (cond2) { 10; sideeffect(0); 11; } else { 12; sideeffect(1); 13; } 14; sink(); 15; } else { 16; sideeffect(2); 17; } 18; sink(); 19; } 20 21target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" 22target triple = "x86_64-apple-macosx10.14.0" 23 24; CHECK: define {{.*}}@_Z3fooii{{.*}}#[[outlined_func_attr:[0-9]+]] 25; CHECK-NOT: _Z3fooii.cold 26; CHECK: attributes #[[outlined_func_attr]] = { {{.*}}minsize 27define void @_Z3fooii(i32, i32) { 28 %3 = alloca i32, align 4 29 %4 = alloca i32, align 4 30 store i32 %0, ptr %3, align 4 31 store i32 %1, ptr %4, align 4 32 %5 = load i32, ptr %3, align 4 33 %6 = icmp ne i32 %5, 0 34 br i1 %6, label %7, label %13 35 36; <label>:7: ; preds = %2 37 %8 = load i32, ptr %4, align 4 38 %9 = icmp ne i32 %8, 0 39 br i1 %9, label %10, label %11 40 41; <label>:10: ; preds = %7 42 call void @_Z10sideeffecti(i32 0) 43 br label %12 44 45; <label>:11: ; preds = %7 46 call void @_Z10sideeffecti(i32 1) 47 br label %12 48 49; <label>:12: ; preds = %11, %10 50 call void @_Z4sinkv() #3 51 br label %14 52 53; <label>:13: ; preds = %2 54 call void @_Z10sideeffecti(i32 2) 55 br label %14 56 57; <label>:14: ; preds = %13, %12 58 call void @_Z4sinkv() #3 59 ret void 60} 61 62declare void @_Z10sideeffecti(i32) 63 64declare void @_Z4sinkv() cold 65