https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108447

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems relations are just the
  VREL_VARYING = 0,     // No known relation,  AKA varying.
  VREL_UNDEFINED,       // Impossible relation, ie (r1 < r2) && (r2 > r1)
  VREL_LT,              // r1 < r2
  VREL_LE,              // r1 <= r2
  VREL_GT,              // r1 > r2
  VREL_GE,              // r1 >= r2
  VREL_EQ,              // r1 == r2
  VREL_NE,              // r1 != r2
and some special ones and we just union/intersect those, the information
whether it was a floating point 4 state relation or integral 3 state is lost.
So, either we should punt on the relations for now if the comparison operands
are floating point that honor NANs, or we need a way to differentiate between
integral/pointer and floating point relations (and for the latter perhaps be
able to express the various others, like LTGT, UNLT, UNLE, UNGE, UNGT, UNEQ,
UNNE etc.).

Aldy/Andrew, can you please have a look?  Thanks.

Reply via email to