fun unit @sink (i32) { init: bid: b0 allocations: block b0: %b0:p0:i32 ret unit:unit } fun i32 @gvn (i32) { init: bid: b0 allocations: block b0: %b0:p0:i32:a %b0:i0:i32:b = add %b0:p0:i32 1:i32 br undef:i1, b1(), b2() block b1: %b1:i0:i32:b = add %b0:p0:i32 1:i32 %b1:i1:i32:c = add %b0:i0:i32 2:i32 %b1:i2:unit = call @sink:*[ret:unit params:(i32)](%b0:i0:i32) j b3(%b1:i1:i32) block b2: %b2:i0:i32:c = add %b0:i0:i32 2:i32 %b2:i1:unit = call @sink:*[ret:unit params:(i32)](%b2:i0:i32) j b3(%b2:i0:i32) block b3: %b3:p0:i32 %b3:i0:i32:b = add %b0:p0:i32 1:i32 %b3:i1:i32:c = add %b0:i0:i32 2:i32 %b3:i2:unit = call @sink:*[ret:unit params:(i32)](%b0:i0:i32) %b3:i3:unit = call @sink:*[ret:unit params:(i32)](%b3:p0:i32) ret 0:i32 }