Clang (after D100225) generates the following sequence as a way to
keep information about undefined bits in a coerced value:
%call = tail call i64 @_Z3fooi(i32 %x) #2 %coerce.val.ii = trunc i64 %call to i32 %coerce.val.vec = insertelement <2 x i32> undef, i32 %coerce.val.ii, i8 0 %coerce.val.vec.ii = bitcast <2 x i32> %coerce.val.vec to i64 ret i64 %coerce.val.vec.ii
This can be folded to just call + ret, because higher bits are known
to be undef.