https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108447
--- Comment #25 from Andrew Macleod <amacleod at redhat dot com> --- Created attachment 54327 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54327&action=edit possible patch There's another infrastructure patch which precedes this one which turns existing relation_union and relation_intersection calls into union_ and intersection calls through the value_relation class. THen we can isolate all the union and intersection calls in one place. This patch introduces VREL_OTHER and adjusts intersection and union to produce it as appropriate only if the operands are floating point. if intersection produces UNDEFINED and either of the relations feeding it were <, <=, >, or >= then it turns it to VR_OTHER. the prevents false sides of branches from combining to produce UNDEFINED when they end up being a known NAN. Union is adjusted such that < >, or <= >= also produce VREL_OTHER. < > cannot be properly represented, and <= >= was producing VARYING, which is also not correct. Does this cover things sufficiently? The test case correctly compiles and runs now (I think :-) I am running builds/tests now and will post the complete patchset when complete.