Teach getGuaranteedNonPoisonOps() and thus programUndefinedIfPoison() that branching on poison is undefined behavior.
LangRef for br and switch:
If ‘cond’ is poison or undef, this instruction has undefined behavior.
If ‘value’ is poison or undef, this instruction has undefined behavior.
Ran into this while attempting to fix https://bugs.llvm.org/show_bug.cgi?id=46943, where this would be helpful to detect whether there is an existing UB-on-poison use of the postinc IV, and branches are the most important use when it comes to loops.