target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" declare i32 @f1(i32) declare i32 @f2(i32) define i32 @branches(i32) { %cond = icmp slt i32 %0, 3 br i1 %cond, label %then, label %else then: %ret.1 = call i32 @f1(i32 %0) br label %last.block else: %ret.2 = call i32 @f2(i32 %0) br label %last.block last.block: %ret = phi i32 [%ret.1, %then], [%ret.2, %else] ret i32 %ret } define internal i32 @top() { %1 = call i32 @branches(i32 2) %2 = call i32 @f1(i32 %1) ret i32 %2 }