Patch based on suggestion in PR17713 ( http://llvm.org/bugs/show_bug.cgi?id=17713 ) and discussion in http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-January/080314.html .
This just handles the simple case of propagating FP values along edges; there are still a lot of other cases (eg http://llvm.org/bugs/show_bug.cgi?id=17683 ) that need work.
I think you need a test case which verifies (positive and negative) cases of a floating point compare here. Looks like a ugt can prove an ole is false for example.
The rest of the changes LGTM if you add tests for these.