[RFC] trailing_wide_ints with runtime variable lengths

2022-06-29 Thread Aldy Hernandez via Gcc-patches
Currently global ranges are stored in SSA_NAME_RANGE_INFO as a pair of wide_int-like objects along with the nonzero bits. We frequently lose precision when streaming out our higher resolution iranges. The plan was always to store the full irange between passes. However, as was originally discuss

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Aldy Hernandez via Gcc-patches
FYI...if no one has anything to say, I'd like to formally post this for review. So OK for trunk? Aldy On Wed, Jun 29, 2022, 11:22 Aldy Hernandez wrote: > Currently global ranges are stored in SSA_NAME_RANGE_INFO as a pair of > wide_int-like objects along with the nonzero bits. We frequentl

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Jakub Jelinek via Gcc-patches
On Fri, Jul 01, 2022 at 04:12:55PM +0200, Aldy Hernandez wrote: > > --- a/gcc/wide-int.h > > +++ b/gcc/wide-int.h > > @@ -1373,10 +1373,13 @@ namespace wi > > : public int_traits {}; > > } > > > > -/* An array of N wide_int-like objects that can be put at the end of > > - a variable-sized

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Aldy Hernandez via Gcc-patches
On Fri, Jul 1, 2022 at 4:58 PM Jakub Jelinek wrote: > > On Fri, Jul 01, 2022 at 04:12:55PM +0200, Aldy Hernandez wrote: > > > --- a/gcc/wide-int.h > > > +++ b/gcc/wide-int.h > > > @@ -1373,10 +1373,13 @@ namespace wi > > > : public int_traits {}; > > > } > > > > > > -/* An array of N wide_i

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Jakub Jelinek via Gcc-patches
On Fri, Jul 01, 2022 at 06:47:48PM +0200, Aldy Hernandez wrote: > > So, you are looking for something like trailing_wide_ints but where that > > N is actually a runtime value? Then e.g. the > > struct {unsigned char len;} m_len[N]; > > member can't work properly either, because it isn't constant

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Aldy Hernandez via Gcc-patches
On Fri, Jul 1, 2022, 18:58 Jakub Jelinek wrote: > On Fri, Jul 01, 2022 at 06:47:48PM +0200, Aldy Hernandez wrote: > > > So, you are looking for something like trailing_wide_ints but where > that > > > N is actually a runtime value? Then e.g. the > > > struct {unsigned char len;} m_len[N]; > >

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Richard Sandiford via Gcc-patches
Aldy Hernandez via Gcc-patches writes: > Currently global ranges are stored in SSA_NAME_RANGE_INFO as a pair of > wide_int-like objects along with the nonzero bits. We frequently lose > precision when streaming out our higher resolution iranges. The plan > was always to store the full irange bet

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Jakub Jelinek via Gcc-patches
On Fri, Jul 01, 2022 at 07:43:28PM +0200, Aldy Hernandez wrote: > You can still say N=255 and things continue to work as they do now, since > m_len[] is still statically determined. The only difference is that before, > the size of the structure would be 2+1+255+sizeof(int) whereas now it would > b

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Aldy Hernandez via Gcc-patches
On Fri, Jul 1, 2022 at 8:53 PM Jakub Jelinek wrote: > > On Fri, Jul 01, 2022 at 07:43:28PM +0200, Aldy Hernandez wrote: > > You can still say N=255 and things continue to work as they do now, since > > m_len[] is still statically determined. The only difference is that before, > > the size of the

Re: [RFC] trailing_wide_ints with runtime variable lengths

2022-07-01 Thread Aldy Hernandez via Gcc-patches
BTW, I don't know if it got lost in all my patches, but we already have an irange allocator that given an irange, returns a chunk of memory holding a clone of that irange squished into its minimum representable pairs (see vrange_allocator and friends). So we won't ever be storing 255 or something