public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Decimal floats can never be an frange::singleton_p.
@ 2022-09-05 13:47 Aldy Hernandez
  2022-09-05 13:51 ` Jakub Jelinek
  2022-09-05 15:55 ` Aldy Hernandez
  0 siblings, 2 replies; 3+ messages in thread
From: Aldy Hernandez @ 2022-09-05 13:47 UTC (permalink / raw)
  To: GCC patches; +Cc: Jakub Jelinek, Andrew MacLeod, Aldy Hernandez

As Jakub mentioned in the PR, because many numbers have multiple
possible representations, we can't reliably return true here.

I'll commit this if tests pass.

I wonder if its worth even handling decimal floats in frange, since
there's a lot of things we can't represent.  I suppose even though we
could never propagate an actual value with VRP, we could fold
conditionals (symbolic and stuff outside ranges, etc) ??.  

Thoughts?

	PR middle-end/106831

gcc/ChangeLog:

	* value-range.cc (frange::singleton_p): Return false for
	DECIMAL_FLOAT_TYPE_P.
---
 gcc/value-range.cc | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gcc/value-range.cc b/gcc/value-range.cc
index c3f668a811a..12a3750d078 100644
--- a/gcc/value-range.cc
+++ b/gcc/value-range.cc
@@ -647,6 +647,14 @@ frange::singleton_p (tree *result) const
       if (HONOR_NANS (m_type) && !get_nan ().no_p ())
 	return false;
 
+      // Because the significand is not normalized (there is no
+      // implicit leading "1").  Most values with less than 7
+      // significant digits have multiple possible representations.
+      // Zero has 192 possible representations (or twice that for
+      // signed zeros).
+      if (DECIMAL_FLOAT_TYPE_P (m_type))
+	return false;
+
       // Return the appropriate zero if known.
       if (HONOR_SIGNED_ZEROS (m_type) && zero_p ())
 	{
-- 
2.37.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-09-05 15:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-05 13:47 [PATCH] Decimal floats can never be an frange::singleton_p Aldy Hernandez
2022-09-05 13:51 ` Jakub Jelinek
2022-09-05 15:55 ` Aldy Hernandez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).