Poison-generating flags can be retained during CSE on the earlier
instruction , *if* the earlier instruction being poison causes UB.
Note that the code as written assumes that an instruction cannot have
poison-generating flags and fast-math flags, but I am not sure this is
always true. Should we add a version of andIRFlags that selectively
allows AND'ing fast-math flags only?
This should be checking isa<FPMathOperator> instead. It's not necessarily the result type that's a float (e.g. fcmp).