; RUN: opt -S -hotcoldsplit -hotcoldsplit-threshold=0 < %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);
;             sink(0);
;         }
;
;         // There's a larger, overlapping cold region here. But we ignore it.
;         // This could be improved.
;         sideeffect(1);
;         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 @_Z4sinki(i32 0) #3
  br label %11

; <label>:11:                                     ; preds = %10, %7
  call void @_Z10sideeffecti(i32 1)
  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)

declare void @_Z10sideeffecti(i32)

declare void @_Z4sinki(i32) cold
