We can always replace the undef elements in a vector constant with regular constants to get rid of the freeze:
https://alive2.llvm.org/ce/z/nfRb4F
The select diffs show that we might do better by adjusting the logic for a frozen select condition, but I think those are still improvements.