This patch is an early proof-of-concept patch: it only handles
propagates facts to the true branch of an ICMP instruction and some
things are not done as efficiently as possible.
I am sharing it now to get some feedback on the overall approach: using
PredicateInfo in IPSCCP. It allows us to propagate facts about
conditions in the solver without much effort, at the cost of building
PredicateInfo for all functions up-front. If building it up-front is a
big issue, I suppose we could try to only insert copies for cmp
instructions involving operands that are not undefined or overdefined.
We should be able to extend it to also propagate additional facts about floats and nonnull.
What do you think?