https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24021
--- Comment #17 from rguenther at suse dot de <rguenther at suse dot de> --- On Thu, 10 Feb 2022, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24021 > > --- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > But just tracking those fpclassify/signbit properties wouldn't be enough, > because in many cases e.g. whether something can be infinite or not will > depend > on more precise value ranges. > If we track just a bitmask, can the value be: > zero > subnormal > normal > infinite > qNaN > sNaN > have positive signbit > have negative signbit > then even on simple multiplication or addition we'll need to assume from > normal > * normal or normal + normal that it can be infinite. When we know that > one operand is [-15.123 - epsilon, 23.152 + epsilon] and the other is > [256.0 - epsilon, 512.0 + epsilon], we actually can find out the result will > not be infinite etc. > But sure, tracking in a bitmask the above properties in addition to some > approximate range is useful. Yes. What I was trying to say is that while the value-range propagation process should likely track actual FP value ranges it remains to be seen whether we need to store those into the SSA name info or whether tracking a set of flags is good enough in practice (given that match.pd should generally not invoke ranger in resolving mode but look at what's in SSA annotations).