this patch removes the operands-undef pass and also modifies several other passes that try to introduce undef to instead introduce a "default value" which at the moment is just the zero value.
it leaves an undef in ReduceRegisterUses.cpp, I leave fixing that as future work since I don't know much about MIR and don't to mess things up.
why do we want this patch? the major reason is because the client for reduced IR files is usually a human being, and we know that human beings are not that great about reasoning about undef. it's just really hard -- we'd often prefer a slightly bigger test case that doesn't contain undefs. the second reason is because undef is very difficult for alive2, and we're trying to develop an automated bugfinding workflow that relies on llvm-reduce, and getting gratuitous undefs is just a bad thing for that use case.
PoisonValue?