With this patch freeze undef/poison will no longer be folded into a constant if it's used as a vector operand in a shufflevector.
Currently it's folded into zeroinitializer (https://godbolt.org/z/a6168aecv)
This is necessary to fix avx cast intrinsics, which are currently being fixed in https://reviews.llvm.org/D143287 to use freeze(poison).
We need to maintain the freeze(poison). to have the correct lowering (https://godbolt.org/z/1ecM8roYh), because these are supposed to be no-op intrinsics.
Add a block comment for this function with something like: