aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2024-03-20 06:34:26 +0100
committerAldy Hernandez <aldyh@redhat.com>2024-05-04 10:25:50 +0200
commita7f1285380029d2928d61e61032c1948ccabc495 (patch)
treedc77b898c88b067aa178265bb1667be2d09b9b56 /gcc
parent64993a89ad75814ab69addade1b2c0020a180f41 (diff)
downloadgcc-a7f1285380029d2928d61e61032c1948ccabc495.zip
gcc-a7f1285380029d2928d61e61032c1948ccabc495.tar.gz
gcc-a7f1285380029d2928d61e61032c1948ccabc495.tar.bz2
Add streaming support for prange.
gcc/ChangeLog: * data-streamer-in.cc (streamer_read_value_range): Add prange support. * data-streamer-out.cc (streamer_write_vrange): Same.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/data-streamer-in.cc12
-rw-r--r--gcc/data-streamer-out.cc10
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/data-streamer-in.cc b/gcc/data-streamer-in.cc
index 3a0d3c6..12cb10e 100644
--- a/gcc/data-streamer-in.cc
+++ b/gcc/data-streamer-in.cc
@@ -268,6 +268,18 @@ streamer_read_value_range (class lto_input_block *ib, data_in *data_in,
}
return;
}
+ if (is_a <prange> (vr))
+ {
+ prange &r = as_a <prange> (vr);
+ wide_int lb = streamer_read_wide_int (ib);
+ wide_int ub = streamer_read_wide_int (ib);
+ r.set (type, lb, ub);
+ wide_int value = streamer_read_wide_int (ib);
+ wide_int mask = streamer_read_wide_int (ib);
+ irange_bitmask bm (value, mask);
+ r.update_bitmask (bm);
+ return;
+ }
gcc_unreachable ();
}
diff --git a/gcc/data-streamer-out.cc b/gcc/data-streamer-out.cc
index 07cc6bd..c237e30 100644
--- a/gcc/data-streamer-out.cc
+++ b/gcc/data-streamer-out.cc
@@ -450,6 +450,16 @@ streamer_write_vrange (struct output_block *ob, const vrange &v)
}
return;
}
+ if (is_a <prange> (v))
+ {
+ const prange &r = as_a <prange> (v);
+ streamer_write_wide_int (ob, r.lower_bound ());
+ streamer_write_wide_int (ob, r.upper_bound ());
+ irange_bitmask bm = r.get_bitmask ();
+ streamer_write_wide_int (ob, bm.value ());
+ streamer_write_wide_int (ob, bm.mask ());
+ return;
+ }
gcc_unreachable ();
}