diff mbox

Add LTO streaming support for sreal

Message ID 20170425124447.GE60897@kam.mff.cuni.cz
State New
Headers show

Commit Message

Jan Hubicka April 25, 2017, 12:44 p.m. UTC
Hi,
for inliner to use sreals we need to stream them into summaries.  I added them
as member functions, becuase for streamer_write_sreal/streamer_read_sreal pair
we would need to access private variables. Does this seem sane?

Bootstrapped/regtested x86_64-linux, OK?

Honza

	* sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
	data-streamer.h
	(sreal::stream_out, sreal::stream_in): New.
	* sreal.h (sreal::stream_out, sreal::stream_in): Declare.

Comments

Richard Biener April 25, 2017, 12:47 p.m. UTC | #1
On Tue, 25 Apr 2017, Jan Hubicka wrote:

> Hi,
> for inliner to use sreals we need to stream them into summaries.  I added them
> as member functions, becuase for streamer_write_sreal/streamer_read_sreal pair
> we would need to access private variables. Does this seem sane?

Bah - stupid C++ ;)

> Bootstrapped/regtested x86_64-linux, OK?

Ok.

Thanks,
Richard.

> Honza
> 
> 	* sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
> 	data-streamer.h
> 	(sreal::stream_out, sreal::stream_in): New.
> 	* sreal.h (sreal::stream_out, sreal::stream_in): Declare.
> Index: sreal.c
> ===================================================================
> --- sreal.c	(revision 246970)
> +++ sreal.c	(working copy)
> @@ -53,6 +53,11 @@ along with GCC; see the file COPYING3.
>  #include "coretypes.h"
>  #include "sreal.h"
>  #include "selftest.h"
> +#include "backend.h"
> +#include "tree.h"
> +#include "gimple.h"
> +#include "cgraph.h"
> +#include "data-streamer.h"
>  
>  /* Print the content of struct sreal.  */
>  
> @@ -236,6 +241,26 @@ sreal::operator/ (const sreal &other) co
>    return r;
>  }
>  
> +/* Stream sreal value to OB.  */
> +
> +void
> +sreal::stream_out (struct output_block *ob)
> +{
> +  streamer_write_hwi (ob, m_sig);
> +  streamer_write_hwi (ob, m_exp);
> +}
> +
> +/* Read sreal value from IB.  */
> +
> +sreal
> +sreal::stream_in (struct lto_input_block *ib)
> +{
> +  sreal val;
> +  val.m_sig = streamer_read_hwi (ib);
> +  val.m_exp = streamer_read_hwi (ib);
> +  return val;
> +}
> +
>  #if CHECKING_P
>  
>  namespace selftest {
> Index: sreal.h
> ===================================================================
> --- sreal.h	(revision 246970)
> +++ sreal.h	(working copy)
> @@ -34,6 +34,9 @@ along with GCC; see the file COPYING3.
>  #define SREAL_SIGN(v) (v < 0 ? -1: 1)
>  #define SREAL_ABS(v) (v < 0 ? -v: v)
>  
> +struct output_block;
> +struct lto_input_block;
> +
>  /* Structure for holding a simple real number.  */
>  class sreal
>  {
> @@ -50,6 +53,8 @@ public:
>    void dump (FILE *) const;
>    int64_t to_int () const;
>    double to_double () const;
> +  void stream_out (struct output_block *);
> +  static sreal stream_in (struct lto_input_block *);
>    sreal operator+ (const sreal &other) const;
>    sreal operator- (const sreal &other) const;
>    sreal operator* (const sreal &other) const;
> 
>
diff mbox

Patch

Index: sreal.c
===================================================================
--- sreal.c	(revision 246970)
+++ sreal.c	(working copy)
@@ -53,6 +53,11 @@  along with GCC; see the file COPYING3.
 #include "coretypes.h"
 #include "sreal.h"
 #include "selftest.h"
+#include "backend.h"
+#include "tree.h"
+#include "gimple.h"
+#include "cgraph.h"
+#include "data-streamer.h"
 
 /* Print the content of struct sreal.  */
 
@@ -236,6 +241,26 @@  sreal::operator/ (const sreal &other) co
   return r;
 }
 
+/* Stream sreal value to OB.  */
+
+void
+sreal::stream_out (struct output_block *ob)
+{
+  streamer_write_hwi (ob, m_sig);
+  streamer_write_hwi (ob, m_exp);
+}
+
+/* Read sreal value from IB.  */
+
+sreal
+sreal::stream_in (struct lto_input_block *ib)
+{
+  sreal val;
+  val.m_sig = streamer_read_hwi (ib);
+  val.m_exp = streamer_read_hwi (ib);
+  return val;
+}
+
 #if CHECKING_P
 
 namespace selftest {
Index: sreal.h
===================================================================
--- sreal.h	(revision 246970)
+++ sreal.h	(working copy)
@@ -34,6 +34,9 @@  along with GCC; see the file COPYING3.
 #define SREAL_SIGN(v) (v < 0 ? -1: 1)
 #define SREAL_ABS(v) (v < 0 ? -v: v)
 
+struct output_block;
+struct lto_input_block;
+
 /* Structure for holding a simple real number.  */
 class sreal
 {
@@ -50,6 +53,8 @@  public:
   void dump (FILE *) const;
   int64_t to_int () const;
   double to_double () const;
+  void stream_out (struct output_block *);
+  static sreal stream_in (struct lto_input_block *);
   sreal operator+ (const sreal &other) const;
   sreal operator- (const sreal &other) const;
   sreal operator* (const sreal &other) const;