|  | ; RUN: opt -S -hotcoldsplit < %s | FileCheck %s | 
|  |  | 
|  | ; Source: | 
|  | ; | 
|  | ; extern __attribute__((cold)) void sink(); | 
|  | ; extern void sideeffect(int); | 
|  | ; void foo(int cond1, int cond2) { | 
|  | ;     if (cond1) { | 
|  | ;         if (cond2) { | 
|  | ;             sideeffect(0); | 
|  | ;         } else { | 
|  | ;             sideeffect(1); | 
|  | ;         } | 
|  | ;         sink(); | 
|  | ;     } else { | 
|  | ;         sideeffect(2); | 
|  | ;     } | 
|  | ;     sink(); | 
|  | ; } | 
|  |  | 
|  | target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" | 
|  | target triple = "x86_64-apple-macosx10.14.0" | 
|  |  | 
|  | ; CHECK: define {{.*}}@_Z3fooii{{.*}}#[[outlined_func_attr:[0-9]+]] | 
|  | ; CHECK-NOT: _Z3fooii.cold | 
|  | ; CHECK: attributes #[[outlined_func_attr]] = { {{.*}}minsize | 
|  | define void @_Z3fooii(i32, i32) { | 
|  | %3 = alloca i32, align 4 | 
|  | %4 = alloca i32, align 4 | 
|  | store i32 %0, i32* %3, align 4 | 
|  | store i32 %1, i32* %4, align 4 | 
|  | %5 = load i32, i32* %3, align 4 | 
|  | %6 = icmp ne i32 %5, 0 | 
|  | br i1 %6, label %7, label %13 | 
|  |  | 
|  | ; <label>:7:                                      ; preds = %2 | 
|  | %8 = load i32, i32* %4, align 4 | 
|  | %9 = icmp ne i32 %8, 0 | 
|  | br i1 %9, label %10, label %11 | 
|  |  | 
|  | ; <label>:10:                                     ; preds = %7 | 
|  | call void @_Z10sideeffecti(i32 0) | 
|  | br label %12 | 
|  |  | 
|  | ; <label>:11:                                     ; preds = %7 | 
|  | call void @_Z10sideeffecti(i32 1) | 
|  | br label %12 | 
|  |  | 
|  | ; <label>:12:                                     ; preds = %11, %10 | 
|  | call void @_Z4sinkv() #3 | 
|  | br label %14 | 
|  |  | 
|  | ; <label>:13:                                     ; preds = %2 | 
|  | call void @_Z10sideeffecti(i32 2) | 
|  | br label %14 | 
|  |  | 
|  | ; <label>:14:                                     ; preds = %13, %12 | 
|  | call void @_Z4sinkv() #3 | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @_Z10sideeffecti(i32) | 
|  |  | 
|  | declare void @_Z4sinkv() cold |