Up until now when we generate a vector phi we create a poison value if the input
comes from a BB that is not reachable from the input.
For example:
bb1 %foo = ... br bb2 unreachable_bb: br bb2 bb2: %phi0 = phi [%foo0, %bb1], [0, %unreachable_bb] %phi1 = phi [%foo1, %bb1], [1, %unreachable_bb]
When we vectorize the phi, we are generating:
%vec_phi = phi [%vec_foo, %bb1], [ poison, %unreachable_bb ]
I think that this is incorrect, the input should be undef and not poison.
The value coming from an unreachable block from entry is uninitialized, which
IIUC is modeled by undef.