[gcc r17-3163] [frange] Stream frange sub-ranges in LTO

Aldy Hernandez via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:6b97b4f0f6323dcebc5bca55a97cb29b868da390

commit r17-3163-g6b97b4f0f6323dcebc5bca55a97cb29b868da390
Author: Aldy Hernandez <[email protected]>
Date:   Sun Aug 9 07:53:03 2026 +0000

    [frange] Stream frange sub-ranges in LTO
    
    Tested on ppc64le Linux.
    
    gcc/ChangeLog:
    
            * data-streamer-out.cc (streamer_write_vrange): Stream each frange
            sub-range.
            * data-streamer-in.cc (streamer_read_value_range): Read them.

Diff:
---
 gcc/data-streamer-in.cc  | 15 +++++++++++----
 gcc/data-streamer-out.cc | 12 ++++++++----
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/gcc/data-streamer-in.cc b/gcc/data-streamer-in.cc
index a4c2b0b6ba3c..b43e3c199dd9 100644
--- a/gcc/data-streamer-in.cc
+++ b/gcc/data-streamer-in.cc
@@ -257,10 +257,17 @@ streamer_read_value_range (class lto_input_block *ib, data_in *data_in,
 	r.set_nan (type, nan);
       else
 	{
-	  REAL_VALUE_TYPE lb, ub;
-	  streamer_read_real_value (ib, &lb);
-	  streamer_read_real_value (ib, &ub);
-	  r.set (type, lb, ub, nan);
+	  r.set_undefined ();
+	  unsigned HOST_WIDE_INT num_pairs = streamer_read_uhwi (ib);
+	  for (unsigned i = 0; i < num_pairs; ++i)
+	    {
+	      REAL_VALUE_TYPE lb, ub;
+	      streamer_read_real_value (ib, &lb);
+	      streamer_read_real_value (ib, &ub);
+	      frange tmp;
+	      tmp.set (type, lb, ub, nan);
+	      r.union_ (tmp);
+	    }
 	}
       return;
     }
diff --git a/gcc/data-streamer-out.cc b/gcc/data-streamer-out.cc
index c4f24db58751..15970880dfa7 100644
--- a/gcc/data-streamer-out.cc
+++ b/gcc/data-streamer-out.cc
@@ -443,10 +443,14 @@ streamer_write_vrange (struct output_block *ob, const vrange &v)
       // Stream out bounds.
       if (kind != VR_NAN)
 	{
-	  REAL_VALUE_TYPE lb = r.lower_bound ();
-	  REAL_VALUE_TYPE ub = r.upper_bound ();
-	  streamer_write_real_value (ob, &lb);
-	  streamer_write_real_value (ob, &ub);
+	  streamer_write_uhwi (ob, r.num_pairs ());
+	  for (unsigned i = 0; i < r.num_pairs (); ++i)
+	    {
+	      REAL_VALUE_TYPE lb = r.lower_bound (i);
+	      REAL_VALUE_TYPE ub = r.upper_bound (i);
+	      streamer_write_real_value (ob, &lb);
+	      streamer_write_real_value (ob, &ub);
+	    }
 	}
       return;
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.