This combine causes problems in many situations. (Not sure exactly when it's safe; suggestions welcome.)
Fixes https://llvm.org/bugs/show_bug.cgi?id=31364 . Partially fixes https://llvm.org/bugs/show_bug.cgi?id=31301.
It's possible the change to combineShuffleOfScalars is a little too restrictive... but I'm not sure what a good heuristic would be.
Just to make sure I understand - the reason you're removing the hasOneUse constraint is that for the case where the BUILD_VECTOR ends up a constant pool load, it's better to just load the combined vector instead of shuffling even if other users exist?