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.

Reply via email to