can you link to problem description? is it segfault here?

On 16 February 2018 at 17:54, Dmitry Eremin-Solenikov <
dmitry.ereminsoleni...@linaro.org> wrote:

> Hello,
>
> I've been debugging the Clang/AArch64/non-ABI case during this week.
>
> It indeed is a compiler issue. Here is a workaround, which fixes the
> issue for at least clang 7 (did not try with earlier versions, probably
> it would also help). At this moment I do not think we should apply this
> fix, but rather declare this combination as not supported. Our code is
> perfectly valid from my POV.
>
> diff --git a/platform/linux-generic/odp_pool.c
> b/platform/linux-generic/odp_pool.c
> index e5ba8982a29a..a97d096d1a53 100644
> --- a/platform/linux-generic/odp_pool.c
> +++ b/platform/linux-generic/odp_pool.c
> @@ -727,12 +727,13 @@ int buffer_alloc_multi(pool_t *pool,
> odp_buffer_hdr_t *buf_hdr[], int max_num)
>                 buf_hdr[i] = buf_hdr_from_index(pool, cache->buf_index[j]);
>         }
>
> -       /* If needed, get more from the global pool */
> -       if (odp_unlikely(num_deq)) {
>                 /* Temporary copy needed since odp_buffer_t is uintptr_t
>                  * and not uint32_t. */
>                 uint32_t data[burst];
>
> +       /* If needed, get more from the global pool */
> +       if (odp_unlikely(num_deq)) {
> +
>                 ring      = &pool->ring->hdr;
>                 mask      = pool->ring_mask;
>                 burst     = ring_deq_multi(ring, mask, data, burst);
>
>
> --
> With best wishes
> Dmitry
>

Reply via email to