On Fri, Jul 12, 2019 at 9:49 AM Richard Sandiford
<[email protected]> wrote:
>
> I'd made it a precondition of vector_builder::elt that the encoding
> must have been fully populated and that all implicit elements are
> therefore defined.  But for one of the AArch64 patches I'm working on,
> it'd be convenient to be able to look back at previous elements while
> building up the encoding.  This patch therefore makes the assert
> specific to implicit elements only.
>
> Tested on aarch64-linux-gnu, aarch64_be-elf and x86_64-linux-gnu.
> OK to install?

OK.

> Richard
>
>
> 2019-07-12  Richard Sandiford  <[email protected]>
>
> gcc/
>         * vector-builder.h (vector_builder::elt): Allow already-supplied
>         elements to be read back before building is complete.
>
> Index: gcc/vector-builder.h
> ===================================================================
> --- gcc/vector-builder.h        2019-07-12 08:39:56.000000000 +0100
> +++ gcc/vector-builder.h        2019-07-12 08:46:38.069172474 +0100
> @@ -199,14 +199,15 @@ vector_builder<T, Derived>::operator ==
>  T
>  vector_builder<T, Derived>::elt (unsigned int i) const
>  {
> -  /* This only makes sense if the encoding has been fully populated.  */
> -  gcc_checking_assert (encoded_nelts () <= this->length ());
> -
>    /* First handle elements that are already present in the underlying
>       vector, regardless of whether they're part of the encoding or not.  */
>    if (i < this->length ())
>      return (*this)[i];
>
> +  /* Extrapolation is only possible if the encoding has been fully
> +     populated.  */
> +  gcc_checking_assert (encoded_nelts () <= this->length ());
> +
>    /* Identify the pattern that contains element I and work out the index of
>       the last encoded element for that pattern.  */
>    unsigned int pattern = i % m_npatterns;

Reply via email to