public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Add global REAL_VALUE_TYPE infinities to real.*.
@ 2022-09-01 14:13 Aldy Hernandez
  2022-09-01 14:13 ` Aldy Hernandez
  2022-09-01 14:32 ` Jeff Law
  0 siblings, 2 replies; 3+ messages in thread
From: Aldy Hernandez @ 2022-09-01 14:13 UTC (permalink / raw)
  To: GCC patches; +Cc: Andrew MacLeod, Aldy Hernandez

We're starting to abuse the infinity endpoints in the frange code and
the associated range operators.  Building infinities are rather cheap,
and we could even inline them, but I think it's best to just not
recalculate them all the time.

I see about 20 uses of real_inf in the source code, not including the
backends.  And I'm about to add more :).

OK pending tests?

gcc/ChangeLog:

	* emit-rtl.cc (init_emit_once): Initialize dconstinf and
	dconstninf.
	* real.h: Add dconstinf and dconstninf.
---
 gcc/emit-rtl.cc | 5 +++++
 gcc/real.h      | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/gcc/emit-rtl.cc b/gcc/emit-rtl.cc
index 3929ee08986..f25fb70ab97 100644
--- a/gcc/emit-rtl.cc
+++ b/gcc/emit-rtl.cc
@@ -107,6 +107,8 @@ REAL_VALUE_TYPE dconst1;
 REAL_VALUE_TYPE dconst2;
 REAL_VALUE_TYPE dconstm1;
 REAL_VALUE_TYPE dconsthalf;
+REAL_VALUE_TYPE dconstinf;
+REAL_VALUE_TYPE dconstninf;
 
 /* Record fixed-point constant 0 and 1.  */
 FIXED_VALUE_TYPE fconst0[MAX_FCONST0];
@@ -6210,6 +6212,9 @@ init_emit_once (void)
   dconsthalf = dconst1;
   SET_REAL_EXP (&dconsthalf, REAL_EXP (&dconsthalf) - 1);
 
+  real_inf (&dconstinf);
+  real_inf (&dconstninf, true);
+
   for (i = 0; i < 3; i++)
     {
       const REAL_VALUE_TYPE *const r =
diff --git a/gcc/real.h b/gcc/real.h
index ec78e8a8932..2f490ef9b72 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -462,6 +462,8 @@ extern REAL_VALUE_TYPE dconst1;
 extern REAL_VALUE_TYPE dconst2;
 extern REAL_VALUE_TYPE dconstm1;
 extern REAL_VALUE_TYPE dconsthalf;
+extern REAL_VALUE_TYPE dconstinf;
+extern REAL_VALUE_TYPE dconstninf;
 
 #define dconst_e() (*dconst_e_ptr ())
 #define dconst_third() (*dconst_third_ptr ())
-- 
2.37.1


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

* [PATCH] Add global REAL_VALUE_TYPE infinities to real.*.
  2022-09-01 14:13 [PATCH] Add global REAL_VALUE_TYPE infinities to real.* Aldy Hernandez
@ 2022-09-01 14:13 ` Aldy Hernandez
  2022-09-01 14:32 ` Jeff Law
  1 sibling, 0 replies; 3+ messages in thread
From: Aldy Hernandez @ 2022-09-01 14:13 UTC (permalink / raw)
  To: GCC patches

We're starting to abuse the infinity endpoints in the frange code and
the associated range operators.  Building infinities are rather cheap,
and we could even inline them, but I think it's best to just not
recalculate them all the time.

I see about 20 uses of real_inf in the source code, not including the
backends.  And I'm about to add more :).

OK pending tests?

gcc/ChangeLog:

	* emit-rtl.cc (init_emit_once): Initialize dconstinf and
	dconstninf.
	* real.h: Add dconstinf and dconstninf.
---
 gcc/emit-rtl.cc | 5 +++++
 gcc/real.h      | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/gcc/emit-rtl.cc b/gcc/emit-rtl.cc
index 3929ee08986..f25fb70ab97 100644
--- a/gcc/emit-rtl.cc
+++ b/gcc/emit-rtl.cc
@@ -107,6 +107,8 @@ REAL_VALUE_TYPE dconst1;
 REAL_VALUE_TYPE dconst2;
 REAL_VALUE_TYPE dconstm1;
 REAL_VALUE_TYPE dconsthalf;
+REAL_VALUE_TYPE dconstinf;
+REAL_VALUE_TYPE dconstninf;
 
 /* Record fixed-point constant 0 and 1.  */
 FIXED_VALUE_TYPE fconst0[MAX_FCONST0];
@@ -6210,6 +6212,9 @@ init_emit_once (void)
   dconsthalf = dconst1;
   SET_REAL_EXP (&dconsthalf, REAL_EXP (&dconsthalf) - 1);
 
+  real_inf (&dconstinf);
+  real_inf (&dconstninf, true);
+
   for (i = 0; i < 3; i++)
     {
       const REAL_VALUE_TYPE *const r =
diff --git a/gcc/real.h b/gcc/real.h
index ec78e8a8932..2f490ef9b72 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -462,6 +462,8 @@ extern REAL_VALUE_TYPE dconst1;
 extern REAL_VALUE_TYPE dconst2;
 extern REAL_VALUE_TYPE dconstm1;
 extern REAL_VALUE_TYPE dconsthalf;
+extern REAL_VALUE_TYPE dconstinf;
+extern REAL_VALUE_TYPE dconstninf;
 
 #define dconst_e() (*dconst_e_ptr ())
 #define dconst_third() (*dconst_third_ptr ())
-- 
2.37.1


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

* Re: [PATCH] Add global REAL_VALUE_TYPE infinities to real.*.
  2022-09-01 14:13 [PATCH] Add global REAL_VALUE_TYPE infinities to real.* Aldy Hernandez
  2022-09-01 14:13 ` Aldy Hernandez
@ 2022-09-01 14:32 ` Jeff Law
  1 sibling, 0 replies; 3+ messages in thread
From: Jeff Law @ 2022-09-01 14:32 UTC (permalink / raw)
  To: gcc-patches



On 9/1/2022 8:13 AM, Aldy Hernandez via Gcc-patches wrote:
> We're starting to abuse the infinity endpoints in the frange code and
> the associated range operators.  Building infinities are rather cheap,
> and we could even inline them, but I think it's best to just not
> recalculate them all the time.
>
> I see about 20 uses of real_inf in the source code, not including the
> backends.  And I'm about to add more :).
>
> OK pending tests?
>
> gcc/ChangeLog:
>
> 	* emit-rtl.cc (init_emit_once): Initialize dconstinf and
> 	dconstninf.
> 	* real.h: Add dconstinf and dconstninf.
OK
jeff


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

end of thread, other threads:[~2022-09-01 14:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-01 14:13 [PATCH] Add global REAL_VALUE_TYPE infinities to real.* Aldy Hernandez
2022-09-01 14:13 ` Aldy Hernandez
2022-09-01 14:32 ` Jeff Law

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).