1; RUN: opt -S -passes=hotcoldsplit -hotcoldsplit-threshold=0 < %s | FileCheck %s 2 3target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" 4target triple = "x86_64-apple-macosx10.14.0" 5 6declare void @sideeffect(i64) 7 8declare ptr @realloc(ptr %ptr, i64 %size) 9 10declare void @free(ptr %ptr) 11 12declare void @sink() cold 13 14; CHECK-LABEL: define {{.*}}@realloc2( 15; CHECK: call {{.*}}@sideeffect( 16; CHECK: call {{.*}}@realloc( 17; CHECK-LABEL: codeRepl: 18; CHECK: call {{.*}}@realloc2.cold.1(i64 %size, ptr %ptr, ptr %retval.0.ce.loc) 19; CHECK-LABEL: cleanup: 20; CHECK-NEXT: phi ptr [ null, %if.then ], [ %call, %if.end ], [ %retval.0.ce.reload, %codeRepl ] 21define ptr @realloc2(ptr %ptr, i64 %size) { 22entry: 23 %0 = add i64 %size, -1 24 %1 = icmp ugt i64 %0, 184549375 25 br i1 %1, label %if.then, label %if.end 26 27if.then: ; preds = %entry 28 call void @sideeffect(i64 %size) 29 br label %cleanup 30 31if.end: ; preds = %entry 32 %call = call ptr @realloc(ptr %ptr, i64 %size) 33 %tobool1 = icmp eq ptr %call, null 34 br i1 %tobool1, label %if.then2, label %cleanup 35 36if.then2: ; preds = %if.end 37 call void @sideeffect(i64 %size) 38 call void @sink() 39 %tobool3 = icmp eq ptr %ptr, null 40 br i1 %tobool3, label %cleanup, label %if.then4 41 42if.then4: ; preds = %if.then2 43 call void @free(ptr %ptr) 44 br label %cleanup 45 46cleanup: ; preds = %if.end, %if.then4, %if.then2, %if.then 47 %retval.0 = phi ptr [ null, %if.then ], [ null, %if.then2 ], [ null, %if.then4 ], [ %call, %if.end ] 48 ret ptr %retval.0 49} 50 51; CHECK-LABEL: define {{.*}}@realloc2.cold.1( 52; CHECK: call {{.*}}@sideeffect 53; CHECK: call {{.*}}@sink 54; CHECK: call {{.*}}@free 55