; RUN: opt -S -hotcoldsplit < %s | FileCheck %s

; Source:
;
; __attribute__((cold)) extern void sink(int);
; extern void sideeffect(int);
; void foo(int cond1, int cond2) {
;     if (cond1) {
;         if (cond2) { // This is the first cold region we visit.
;             sideeffect(0);
;             sideeffect(10);
;             sink(0);
;         }
;
;         // There's a larger, overlapping cold region here. But we ignore it.
;         // This could be improved.
;         sideeffect(1);
;         sideeffect(11);
;         sink(1);
;     }
; }

target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.14.0"

; CHECK-LABEL: define {{.*}}@_Z3fooii
; CHECK: call {{.*}}@_Z3fooii.cold.1
; CHECK-NOT: _Z3fooii.cold
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 %12

; <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)
  call void @_Z10sideeffecti(i32 10)
  call void @_Z4sinki(i32 0) #3
  br label %11

; <label>:11:                                     ; preds = %10, %7
  call void @_Z10sideeffecti(i32 1)
  call void @_Z10sideeffecti(i32 11)
  call void @_Z4sinki(i32 1) #3
  br label %12

; <label>:12:                                     ; preds = %11, %2
  ret void
}

; CHECK-LABEL: define {{.*}}@_Z3fooii.cold.1
; CHECK: call void @_Z10sideeffecti(i32 0)
; CHECK: call void @_Z10sideeffecti(i32 10)

declare void @_Z10sideeffecti(i32)

declare void @_Z4sinki(i32) cold
